Need help with rain?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

304 Stars 25 Forks Apache License 2.0 375 Commits 11 Opened issues


A development workflow tool for working with AWS CloudFormation.

Services available


Need anything else?

Contributors list

# 54,312
Amazon ...
349 commits
# 79,024
3 commits
# 30,803
1 commit
# 50,913
1 commit
# 771,240
1 commit
# 474,145
1 commit
# 434,989
1 commit
# 495,159
1 commit


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.

Make it Rain

Key features:

  • Interactive deployments: With

    rain deploy
    , rain packages your CloudFormation templates using
    aws 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.

Getting started

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 get

Rain requires the AWS CLI to package CloudFormation templates when you use

rain deploy
. (See the
aws cloudformation package
command for details.)
  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 watch Display an updating view of a CloudFormation stack

Template commands: build Create CloudFormation templates diff Compare CloudFormation templates fmt Format CloudFormation templates merge Merge two or more CloudFormation templates 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/ and docs/


Rain is written in Go and uses the AWS SDK for Go v2.

To contribute a change to Rain, just fork this repository, make your changes, and submit a Pull Request.


Rain is licensed under the Apache 2.0 License.

Other CloudFormation tools

In alphabetical order:

  • cfn-flip

    cfn-flip converts AWS CloudFormation templates between JSON and YAML formats, making use of the YAML format's short function syntax where possible.

  • cfn-format

    cfn-format reads in an existing AWS CloudFormation template and outputs a cleanly-formatted, easy-to-read copy of the same template adhering to standards as used in AWS documentation. cfn-format can output either YAML or JSON as desired.

  • cfn-lint

    Validate CloudFormation yaml/json templates against the CloudFormation spec and additional checks. Includes checking valid values for resource properties and best practices.

  • cfn-nag

    The cfn-nag tool looks for patterns in CloudFormation templates that may indicate insecure infrastructure.

  • cfn-skeleton

    cfn-skeleton that consumes the published CloudFormation specification and generates skeleton CloudFormation templates with mandatory and optional parameters of chosen resource types pre-filled with placeholder values.

  • sceptre

    Sceptre is a tool to drive CloudFormation. Sceptre manages the creation, update and deletion of stacks while providing meta commands which allow users to retrieve information about their stacks.

  • taskcat

    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.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.