A fully generic, modular DSL for AWS CloudFormation
Ruby Shell
Latest commit faa7b97 Feb 15, 2017 @erran-r7 erran-r7 committed on GitHub Merge pull request #241 from rapid7/tfisher_aws_logs_subscription
Add AWS::Logs::SubscriptionFilter resource for streaming AWS CloudWatch logs to Kinesis/Lambda
Failed to load latest commit information.
.github Add both issue and pull request templates Sep 22, 2016
bin Print out error message correctly when there is one Feb 14, 2017
docs Merge branch 'master' into add-alb Oct 31, 2016
example Allow overriding the AWS region in the web-service-resource-collectio… Aug 10, 2016
ext Adds resource_generator.sh Feb 24, 2015
lib Add AWS::Logs::SubscriptionFilter resource for streaming AWS CloudWat… Feb 15, 2017
spec Failing test for #234 Jan 20, 2017
tmp Add separate file for replace_properties Nov 7, 2016
yard_extensions Fix doc and naming suggestions for elbv2 Oct 28, 2016
.gitignore Add S3 Website Configuration and properties Nov 1, 2016
.rubocop.yml Remove minitest references from Gemfile and rubocop configuration Jul 12, 2016
.rubocop_todo.yml Remove minitest references from Gemfile and rubocop configuration Jul 12, 2016
.ruby-version Create an example of a custom resource collection Aug 10, 2016
.travis.yml Add 2.3.0 to test matrix Jan 19, 2017
.yardopts Add a .yardopts to load YARD extensions by default Jul 23, 2016
Gemfile Re-introduce our "yard" gem dependency Jul 21, 2016
LICENSE.md Move LICENSE to LICENSE.md Sep 26, 2016
README.md Symlink README.md to docs/index.md Jul 21, 2016
Rakefile Define the :yard rake task vs. using a custom :yardoc task Jul 21, 2016
Thorfile PoC DSL and Stack control Jan 9, 2015
convection.gemspec remove colorize and add region back to emit events for one cloudfile Oct 4, 2016
yard_extensions.rb Split yard handlers into separate extension files Jul 21, 2016


Convection Build Status

A fully generic, modular DSL for AWS CloudFormation

This gem aims to provide a reusable model for AWS CloudFormation in Ruby. It exposes a DSL for template definition, and a simple, decoupled abstraction of a CloudFormation Stack to compile and apply templates.


Please read our Contributing guidelines for more information on contributing to Convection.


Add this line to your application's Gemfile:

gem 'convection'

And then execute:

$ bundle

Or install it yourself as:

$ gem install convection

CLI Commands

  • To converge all stacks in your cloudfile run convection converge in the same directory as your cloudfile or use --cloudfiles and specify the path to the cloudfile. If you provide the name of your stack as a additional argument such as convection converge my-stack-name then all stacks above and including the stack you specified will be converged.
  • To converge a stack group run convection converge --stack_group YOUR_STACK_GROUP_NAME
  • To converge a specific stack or a list of stacks run convection converge --stacks stackA stackB ...
  • To converge multiple cloudfiles at the same time run use the --cloudfiles option providing the path to the cloudfiles. Example bundle exec convection converge --cloudfiles us-east-1/Cloudfile eu-central-1/Cloudfile
  • To display a diff between your local changes and the version of your stack in cloud formation of your changes run convection diff.
  • To diff the changes in a stack group run convection diff --stack_group YOUR_STACK_GROUP_NAME
  • To diff the changes for a specific stack or a list of stacks run convection diff --stacks stackA stackB ...
  • To print out a list of available cli options with their descriptions run convection help.
  • To print out the cloud formation template for a specific stack run convection print-template my-stack-name.
  • To validate your stack is not missing a required resource run convection validate my-stack-name.


We highly recommend consulting the getting started guide for a in depth walk through on how to to set up your project and create and deploy a stack. Example stacks and resources are available in the convection/example folder

Additionally you can generate the Ruby API documentation by executing bundle exec rake yard.


Convection is distributed under the MIT license - please refer to the LICENSE for more information.