- Documentation: https://aws-cloudformation.github.io/rain/
Rain is what happens when you have a lot of CloudFormation
Rain is also a command line tool for working with AWS CloudFormation templates and stacks.
Join us on Discord to discuss rain and all things CloudFormation! Connect and interact with CloudFormation developers and experts, find channels to discuss rain, the CloudFormation registry, StackSets, cfn-lint, Guard and more:
-
Interactive deployments: With
rain deploy
, rain packages your CloudFormation templates usingaws cloudformation package
, prompts you for any parameters that have not yet been defined, shows you a summary of the changes that will be made, and then displays real-time updates as your stack is being deployed. Once finished, you get a summary of the outcome along with any error messages collected along the way - including errors messages for stacks that have been rolled back and no longer exist. -
Consistent formatting of CloudFormation templates: Using
rain fmt
, you can format your CloudFormation templates to a consistent standard or reformat a template from JSON to YAML (or YAML to JSON if you prefer). Rain preserves your comments when using YAML and switches use of intrinsic functions to use the short syntax where possible. -
Combined logs for nested stacks with sensible filtering: When you run
rain log
, you will see a combined stream of logs from the stack you specified along with any nested stack associated with it. Rain also filters out uninteresting log messages by default so you just see the errors that require attention. -
Build new CloudFormation templates:
rain build
generates new CloudFormation templates containing skeleton resources that you specify. This saves you having to look up which properties are available and which are required vs. optional. -
Manipulate CloudFormation stack sets:
rain stackset deploy
creates a new stackset, updates an existing one or adds a stack instance(s) to an existing stack set. You can list stack sets usingrain stackset ls
, review stack set details withrain stackset ls <stack set name>
and delete stack set and\or its instances withrain stackset rm <stack set name>
-
Predict deployment failures (EXPERIMENTAL):
rain forecast
analyzes a template and the target deployment account to predict things that might go wrong when you attempt to create, update, or delete a stack. This command speeds up development by giving you advanced notice for issues like missing permissions, resources that already exist, and a variety of other common resource-specific deployment blockers.
Note that in order to use experimental commands, you have to add --experimental
or -x
as an argument.
If you have homebrew installed, brew install rain
Or you can download the appropriate binary for your system from the releases page.
Or if you're a Gopher, you can GO111MODULE=on go install github.com/aws-cloudformation/rain/cmd/rain
Usage:
rain [command]
Stack commands:
cat Get the CloudFormation template from a running stack
deploy Deploy a CloudFormation stack from a local template
logs Show the event log for the named stack
ls List running CloudFormation stacks
rm Delete a running CloudFormation stack
stackset This command manipulates stack sets.
watch Display an updating view of a CloudFormation stack
Template commands:
build Create CloudFormation templates
diff Compare CloudFormation templates
fmt Format CloudFormation templates
forecast Predict deployment failures
merge Merge two or more CloudFormation templates
pkg Package local artifacts into a template
tree Find dependencies of Resources and Outputs in a local template
Other Commands:
console Login to the AWS console
help Help about any command
info Show your current configuration
You can find shell completion scripts in docs/bash_completion.sh and docs/zsh_completion.sh.
Rain is written in Go and uses the AWS SDK for Go v2.
To contribute a change to Rain, fork this repository, make your changes, and submit a Pull Request.
The README.md
, documentation in docs/
, the auto completion scripts and a copy of the cloudformation specification in cft/spec/cfn.go
are generated through go generate
.
Rain is licensed under the Apache 2.0 License.
In alphabetical order:
-
Validate CloudFormation yaml/json templates against the CloudFormation spec and additional checks. Includes checking valid values for resource properties and best practices.
-
The cfn-nag tool looks for patterns in CloudFormation templates that may indicate insecure infrastructure.
-
taskcat is a tool that tests AWS CloudFormation templates. It deploys your AWS CloudFormation template in multiple AWS Regions and generates a report with a pass/fail grade for each region. You can specify the regions and number of Availability Zones you want to include in the test, and pass in parameter values from your AWS CloudFormation template. taskcat is implemented as a Python class that you import, instantiate, and run.
Are we missing an excellent tool? Let us know via a GitHub issue.