npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@serverless-stack/aws-cdk

v1.61.0-rc.4

Published

CDK Toolkit, the command line tool for CDK apps

Downloads

32

Readme

AWS CDK Toolkit


cdk-constructs: Stable


The AWS CDK Toolkit provides the cdk command-line interface that can be used to work with AWS CDK applications.

Command | Description ----------------------------------|------------------------------------------------------------------------------------- cdk docs | Access the online documentation cdk init | Start a new CDK project (app or library) cdk list | List stacks in an application cdk synth | Synthesize a CDK app to CloudFormation template(s) cdk diff | Diff stacks against current state cdk deploy | Deploy a stack into an AWS account cdk destroy | Deletes a stack from an AWS account cdk bootstrap | Deploy a toolkit stack to support deploying large stacks & artifacts cdk doctor | Inspect the environment and produce information useful for troubleshooting

This module is part of the AWS Cloud Development Kit project.

Commands

cdk docs

Outputs the URL to the documentation for the current toolkit version, and attempts to open a browser to that URL.

$ # Open the documentation in the default browser (using 'open')
$ cdk docs
https://docs.aws.amazon.com/cdk/api/latest/

$ # Open the documentation in Chrome.
$ cdk docs --browser='chrome %u'
https://docs.aws.amazon.com/cdk/api/latest/

cdk init

Creates a new CDK project.

$ # List the available template types & languages
$ cdk init --list
Available templates:
* app: Template for a CDK Application
   └─ cdk init app --language=[java|typescript]
* lib: Template for a CDK Construct Library
   └─ cdk init lib --language=typescript

$ # Create a new library application in typescript
$ cdk init lib --language=typescript

cdk list

Lists the stacks modeled in the CDK app.

$ # List all stacks in the CDK app 'node bin/main.js'
$ cdk list --app='node bin/main.js'
Foo
Bar
Baz

$ # List all stack including all details (add --json to output JSON instead of YAML)
$ cdk list --app='node bin/main.js' --long
-
    name: Foo
    environment:
        name: 000000000000/bermuda-triangle-1
        account: '000000000000'
        region: bermuda-triangle-1
-
    name: Bar
    environment:
        name: 111111111111/bermuda-triangle-2
        account: '111111111111'
        region: bermuda-triangle-2
-
    name: Baz
    environment:
        name: 333333333333/bermuda-triangle-3
        account: '333333333333'
        region: bermuda-triangle-3

cdk synthesize

Synthesizes the CDK app and produces a cloud assembly to a designated output (defaults to cdk.out)

Typically you don't interact directly with cloud assemblies. They are files that include everything needed to deploy your app to a cloud environment. For example, it includes an AWS CloudFormation template for each stack in your app, and a copy of any file assets or Docker images that you reference in your app.

If your app contains a single stack or a stack is supplied as an argument to cdk synth, the CloudFormation template will also be displayed in the standard output (STDOUT) as YAML.

If there are multiple stacks in your application, cdk synth will synthesize the cloud assembly to cdk.out.

$ # Synthesize cloud assembly for StackName and output the CloudFormation template to STDOUT
$ cdk synth MyStackName

$ # Synthesize cloud assembly for all the stacks and save them into cdk.out/
$ cdk synth

$ # Synthesize cloud assembly for StackName, but don't include dependencies
$ cdk synth MyStackName --exclusively

See the AWS Documentation to learn more about cloud assemblies. See the CDK reference documentation for details on the cloud assembly specification

cdk diff

Computes differences between the infrastructure specified in the current state of the CDK app and the currently deployed application (or a user-specified CloudFormation template). This command returns non-zero if any differences are found.

$ # Diff against the currently deployed stack
$ cdk diff --app='node bin/main.js' MyStackName

$ # Diff against a specific template document
$ cdk diff --app='node bin/main.js' MyStackName --template=path/to/template.yml

cdk deploy

Deploys a stack of your CDK app to it's environment. During the deployment, the toolkit will output progress indications, similar to what can be observed in the AWS CloudFormation Console. If the environment was never bootstrapped (using cdk bootstrap), only stacks that are not using assets and synthesize to a template that is under 51,200 bytes will successfully deploy.

$ cdk deploy --app='node bin/main.js' MyStackName

Before creating a change set, cdk deploy will compare the template and tags of the currently deployed stack to the template and tags that are about to be deployed and will skip deployment if they are identical. Use --force to override this behavior and always deploy the stack.

Parameters

Pass parameters to your template during deployment by using --parameters (STACK:KEY=VALUE). This will apply the value VALUE to the key KEY for stack STACK.

Example of providing an attribute value for an SNS Topic through a parameter in TypeScript:

Usage of parameter in CDK Stack:

new sns.Topic(this, 'TopicParameter', {
    topicName: new cdk.CfnParameter(this, 'TopicNameParam').value.toString()
});

Parameter values as a part of cdk deploy

$ cdk deploy --parameters "MyStackName:TopicNameParam=parameterized"

Parameter values can be overwritten by supplying the --force flag. Example of overwriting the topic name from a previous deployment.

$ cdk deploy --parameters "ParametersStack:TopicNameParam=blahagain" --force

⚠️ Parameters will be applied to all stacks if a stack name is not specified or * is provided. Parameters provided to Stacks that do not make use of the parameter will not successfully deploy.

⚠️ Parameters do not propagate to NestedStacks. These must be sent with the constructor. See Nested Stack documentation

Outputs

Write stack outputs from deployments into a file. When your stack finishes deploying, all stack outputs will be written to the output file as JSON.

Usage of output in a CDK stack

const fn = new lambda.Function(this, "fn", {
  handler: "index.handler",
  code: lambda.Code.fromInline(`exports.handler = \${handler.toString()}`),
  runtime: lambda.Runtime.NODEJS_10_X
});

new cdk.CfnOutput(this, 'FunctionArn', {
  value: fn.functionArn,
});

Specify an outputs file to write to by supplying the --outputs-file parameter

$ cdk deploy --outputs-file outputs.json

When the stack finishes deployment, outputs.json would look like this:

{
  "MyStack": {
    "FunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:MyStack-fn5FF616E3-G632ITHSP5HK"
  }
}

⚠️ The key of the outputs corresponds to the logical ID of the CfnOutput. Read more about identifiers in the CDK here

If multiple stacks are being deployed or the wild card * is used to deploy all stacks, all outputs are written to the same output file where each stack artifact ID is a key in the JSON file

$ cdk deploy '*' --outputs-file "/Users/code/myproject/outputs.json"

Example outputs.json after deployment of multiple stacks

{
  "MyStack": {
    "FunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:MyStack-fn5FF616E3-G632ITHSP5HK"
  },
  "AnotherStack": {
    "VPCId": "vpc-z0mg270fee16693f"
  }  
}

cdk destroy

Deletes a stack from it's environment. This will cause the resources in the stack to be destroyed (unless they were configured with a DeletionPolicy of Retain). During the stack destruction, the command will output progress information similar to what cdk deploy provides.

$ cdk destroy --app='node bin/main.js' MyStackName

cdk bootstrap

Deploys a CDKToolkit CloudFormation stack into the specified environment(s), that provides an S3 bucket that cdk deploy will use to store synthesized templates and the related assets, before triggering a CloudFormation stack update. The name of the deployed stack can be configured using the --toolkit-stack-name argument. The S3 Bucket Public Access Block Configuration can be configured using the --public-access-block-configuration argument.

$ # Deploys to all environments
$ cdk bootstrap --app='node bin/main.js'

$ # Deploys only to environments foo and bar
$ cdk bootstrap --app='node bin/main.js' foo bar

By default, bootstrap stack will be protected from stack termination. This can be disabled using --termination-protection argument.

cdk doctor

Inspect the current command-line environment and configurations, and collect information that can be useful for troubleshooting problems. It is usually a good idea to include the information provided by this command when submitting a bug report.

$ cdk doctor
ℹ️ CDK Version: 1.0.0 (build e64993a)
ℹ️ AWS environment variables:
  - AWS_EC2_METADATA_DISABLED = 1
  - AWS_SDK_LOAD_CONFIG = 1

MFA support

If mfa_serial is found in the active profile of the shared ini file AWS CDK will ask for token defined in the mfa_serial. This token will be provided to STS assume role call.

Example profile in ~/.aws/config where mfa_serial is used to assume role:

[profile my_assume_role_profile]
source_profile=my_source_role
role_arn=arn:aws:iam::123456789123:role/role_to_be_assumed
mfa_serial=arn:aws:iam::123456789123:mfa/my_user

Configuration

On top of passing configuration through command-line arguments, it is possible to use JSON configuration files. The configuration's order of precedence is:

  1. Command-line arguments
  2. Project configuration (./cdk.json)
  3. User configuration (~/.cdk.json)

JSON Configuration files

Some of the interesting keys that can be used in the JSON configuration files:

{
    "app": "node bin/main.js",        // Command to start the CDK app      (--app='node bin/main.js')
    "context": {                      // Context entries                   (--context=key=value)
        "key": "value"
    },
    "toolkitStackName": "foo",        // Customize 'bootstrap' stack name  (--toolkit-stack-name=foo)
    "toolkitBucketName": "fooBucket", // Customize 'bootstrap' bucket name (--toolkit-bucket-name=fooBucket)
    "versionReporting": false,         // Opt-out of version reporting      (--no-version-reporting)
}