AWS CloudFormation
CloudFormation
You need to define and deploy your entire infrastructure as code using standardized declarative templates.
Reach for it when
- Defining a repeatable stack of VPCs, subnets, EC2 instances, and databases in YAML or JSON.
- Ensuring dev, staging, and production environments are configured identically across different accounts.
- Automating infrastructure changes safely through change sets and managed rollback procedures.
Do not reach for it when
- Managing configurations inside virtual machines or application containers — use Ansible or Docker instead.
- Deploying infrastructure where you need to write standard programming languages to model logic — use AWS CDK instead.
- Orchestrating complex software build pipelines and application testing workflows — use CodePipeline instead.
Alternatives, and how to choose
| Service | Pick it instead when |
|---|---|
| Terraform | Choose it when you need multi-cloud compatibility and want to manage resources outside of AWS. |
| AWS CDK | Choose it when you want to define AWS infrastructure using languages like TypeScript or Python. |
How you pay
- The model
- Free to use for native AWS resources; you pay only for the resources created by the templates.
- The line item that surprises people
- Importing resources or deploying resource cleanups can fail, leaving orphaned, billable resources running.
What trips people up
- Modifying a resource logical ID or property in a template can trigger replacement (delete and recreate) of database volumes.
- Out-of-band manual changes made directly in the console cause configuration drift, which breaks future stack updates.
- Nested stack dependencies can lead to circular reference errors that require manual stack deletion to resolve.
Verify the live service
This page is a concept reference. Cost models are qualitative; confirm the current offering, Region and pricing before deploying.