Cross post from Medium
Tags: CDK, 3 Musketeers, AWS
This is an example of AWS CDK in a docker container following the 3 Musketeers pattern.
GitHub Repo: https://github.com/chrishart0/aws-cdk-typescript-3-musketeers
What Is This 3 Musketeers Thing Anyway and Why Would I Want to Do Such a Thing as to Containerize the AWS CDK?
Links:
There are a host of benefits to the 3 Musketeers pattern, which mostly center around Developer Experience. 3 Musketeers packages all the dependencies up into one container, making it easy for the whole team to stay up-to-date. The other substantial benefit I see of the 3 Musketeers pattern is just how darn easy it makes it to set up new developers. Simply make sure they install docker, docker-compose, and make (also WSL on Windows). Now setup for new projects is as simple as cloning down the repo and running make install.
If you’ve worked on any number of CDK projects, you’ve probably run into hiccups with dependency management, and you know how difficult these issues can be to fight through, especially for developers new to Node. It should be obvious now how 3 Musketeers can mitigate these by packaging up all the AWS CDK tooling into a docker container.
Getting Started
Now that we’ve seen why it’s a good idea to use the 3 Musketeers pattern with the AWS CDK, let’s jump right into it.
Start by cloning down this repo from GitHub: https://github.com/chrishart0/aws-cdk-typescript-3-musketeers
This will have everything you need to try out containerized AWS CDK. Let’s go through the contents of this repo first.
Notice that the infrastructure directory is the output of running the command cdk init sample-app — language typescript. This gives us a basic sample app to work with. If you aren’t familiar with the AWS CDK in typescript, the infrastructure/lib/infrastructure-stack.ts file is where the infrastructure to be deployed is located. You will notice an SQS queue and an SNS topic have been defined with the queue subscribed to the SNS topic.
You can use this repo as is or replace the contents of infrastructure with your work.
How to Use this Repo as a Starting Point
Note: You don’t need an AWS account setup to test this locally
Open up the CLI into the root of the repo you’ve cloned down locally.
Run the command make; this will do all the needed setup and run cdk synth from within the docker container.
$ make
If you have never used AWS CDK in your configured AWS account before then you must run the CDK bootstrapper. If you simply want to test this repo out locally you can skip this step.
$ make bootstrap
You are now free to run any other commands available such as cdk diff
, c_dk deploy_
, and cdk destroy
Use this in an existing project
If you have an existing project and would like to use this 3 Musketeers pattern then follow these steps
Copy the
Makefile
,Dockerfile
, anddocker-compose.yaml
files into the root of your projectUpdate the
CDK_PATH
variable inthree_musketeers.env
andMakefile
Run
make
to do initial setup and output cdk synth to verify everything is configured right
For more information refer to the README on the GitHub repo. I’d love to hear any thoughts, comments, or critiques in the comments below.
Also, checkout my other CDK related posts here: https://arcadian.cloud/tag/cdk/