Skip to content
ServerlessSam edited this page Jan 31, 2023 · 4 revisions

Welcome to BetterCF: The open-source tool that improves your experience with AWS CloudFormation. The project's documentation will assist you in:

  • Installing and using the BetterCF CLI
  • Creating your own end-to-end CloudFormation deployment pipeline (in minutes)
  • Managing multiple CloudFormation stacks
  • Maintaining compliance
  • Contributing to BetterCF's open-source codebase

Summary

Docker Comparison

BetterCF works in a similar way to how we create, maintain and deploy Docker images:

  1. Developers write code
  2. A docker image is created, containing this code. This image is tagged with something concrete (e.g a version number) and pushed to a container repository
  3. When required, a deployment is triggered to an environment for testing (e.g Staging or QA)
  4. When tests and checks have passed, a deployment is triggered to a production environment, using the exact docker image that was tested in the previous step.

BetterCF works in a similar way:

  1. Developers write CloudFormation config
  2. The CloudFormation template file is created, containing this config. This template is tagged with something concrete (e.g a version number) and pushed to a template repository
  3. When required, a deployment is triggered to stack for testing (e.g Staging or QA)
  4. When tests and checks have passed, a deployment is triggered to a production stack, using the exact template that was tested in the previous step

Key Concepts

  • Template: A CloudFormation template file containing CloudFormation configuration.
  • Stack: A CloudFormation stack, which will depend on a template, and is defined by a stack configuration file.
  • Stack Configuration File: A configuration file (the last one I promise), that contains the definition of your stack. See the configuration anatomy here
  • DFM (Data-File-Merge) (Only relevant to the optional 'build' stage): A rule-based, config-driven mechanism for merging or splitting the contents of data file (JSON/YAML). We use this in the optional build stage.

Clone this wiki locally