Quickly configure and start AWS CloudFormation stacks.
- CLI tool provides prompting for easy stack configuration and verification of intended changes to your stack.
- Save parameter values in a specified S3 bucket for easy reuse and sharing privately.
- Optional KMS encryption of sensitive parameter values.
To use cfn-config, you will need to have two (or more) S3 buckets ready:
config bucket: this is a bucket where cfn-config will save stack configurations (parameter values) that can be reused.
template buckets: cfn-config will upload your template file to a bucket each time you perform a
updateaction. There must be a bucket in any region to which you intend to deploy CloudFormation stacks. The suggested default bucket names are:
If you create buckets matching this pattern in each region you wish to use, then you do not need to specify the
--template-bucketoption when using cfn-config's CLI tool.
cfn-config includes a CLI tool for working with CloudFormation stacks. Install globally with
npm to use the CLI commands:
$ npm install -g cfn-config
$ cfn-config --help Quickly configure and start AWS CloudFormation stacks USAGE: cfn-config <command> <environment> [templatePath] [options] command: - create create a new stack - update update an existing stack - delete delete an existing stack - info fetch information about an existing stack - save save an existing stack's configuration environment: Any string. A stack's name is constructed as name-environment templatePath: The relative path to the CloudFormation template in JSON format, required for create and update commands. options: -n, --name the stack's base name (default: current dir name) -r, --region the stack's region (default: us-east-1) -c, --config-bucket an S3 bucket for storing stack configurations. Required for the create, update, and save commands. -t, --template-bucket an S3 bucket for storing templates (default: cfn-config-templates-$AWS_ACCOUNT_ID-region) -k, --kms a KMS key ID for parameter encryption or configuration encryption at rest on S3. If not provided, no encryption will be performed. If provided as a flag without a value, the default key id alias/cloudformation will be used. -f, --force perform a create/update/delete command without any prompting, accepting all defaults -e, --extended display resource details with the info command
Include cfn-config into your project to incorporate/extend its functionality. Add to your project's package.json by running the following from your project's directory:
$ npm install --save cfn-config
Then, in your scripts:
var cfnConfig = ;
High-level prompting routines to create, update, and delete stacks are provided, as well as to fetch detailed information about a stack or to save an existing stack's configuration to S3.
First, create a commands object:
var options =name: 'my-stack' // the base name of the stackregion: 'us-east-1' // the region where the stack residestemplatePath: '~/my-stack/cfn.template.json' // the template fileconfigBucket: 'my-cfn-configurations' // bucket for configuration filestemplateBucket: 'cfn-config-templates-123456789012-us-east-1' // bucket for templates;var commands = cfnConfig;
Then, perform the desired operation:
// Create a stack called `my-stack-testing`commands;// Update the stack with a different version of the templatecommands;// Save the stack's configuration to S3commands;// Get information about the stackcommands;// Delete the stackcommands;
For low-level functions, see documentation in the code for now. More legible docs are to come.