What does CDK Bootstrap do


Borislav Hadzhiev

Wed Apr 13 20222 min read


Photo by Xiaolong Wong

Updated - Wed Apr 13 2022

What is CDK bootstrap #

CDK bootstrap is a command we can access using the CDK CLI.

npx aws-cdk bootstrap

The cdk bootstrap command provisions a CloudFormation stack called CDKToolkit. This CloudFormation stack is specific to the environment (region and account) our CDK stack is configured for.

Every CDK application belongs to a specific environment.

An environment consists of an account number and a region, where the CDK app is going to be deployed.

We set the environment for a CDK project when instantiating a CDK stack:

const app = new cdk.App(); const myStack = new MyCdkStack(app, 'my-cdk-stack', { stackName: `my-cdk-stack`, // 👇 set the environment env: { region: process.env.CDK_DEFAULT_REGION, account: process.env.CDK_DEFAULT_ACCOUNT, }, });

The initialization process of the environment consists of:

  • provisioning an S3 bucket, where our assets (i.e. Lambda function code, CloudFormation template) will be stored
  • provisioning IAM roles the CDK CLI needs in order to perform a deployment in the environment In order to deploy to multiple environments we have to bootstrap each environment.

The CDKToolkit stack provisions an S3 bucket that stores the assets(i.e. Lambda code, CloudFormation template, etc), required for a CDK deployment.

cdk toolkit stack

In the S3 bucket we will have an assets "directory":

assets directory

The assets directory is going to contain our zipped file assets:

zipped file assets

For a simple CDK project with a single lambda function, my file assets consist of the index.js handler code for the Lambda.

Using CDK bootstrap #

In order to bootstrap our default account and region we can run the cdk bootstrap command.

npx aws-cdk bootstrap

We only need to use the bootstrap command once for every environment(region and account).

If we use the command more than once, the CDK CLI will check if our CDKToolkit stack has to be updated. If necessary, the stack will be updated. If not, running the bootstrap command does nothing.

We can also specify other environments to bootstrap:

npx aws-cdk bootstrap --profile my-profile npx aws-cdk bootstrap ACCOUNT_NUMBER/REGION npx aws-cdk bootstrap 123456789/us-east-1

Conclusion #

The CDK bootstrap command provisions a CloudFormation stack called CDKToolkit.

The stack consists of an S3 bucket that stores file assets (i.e. Lambda function code, CloudFormation templates), required for deployments.

We have to bootstrap each environment (account and region) separately.

Further Reading #

Use the search field on my Home Page to filter through my more than 1,000 articles.