Collection of notes, templates and tips for building AWS CloudFormation templates.
The basic structure of CloudFormation files (in JSON):
{ "Resources" : { "ExampleResourceName" : { "Type" : "AWS::?::?", "Properties" : { "Example" : "propertyvalue" } } } }
- Resources: the AWS services to be provisioned. There can be multiple repeating Resource elements in this section, to provision/configure multiple services in a stack
- ExampleResourceName: a name for each resource being provisioned
- Type: the AWS type for the resource, e.g. AWS::S3::Bucket
- Properties: properties for the service being provisioned/configured
AWS CLI commands:
aws cloudformation create-stack --stack-name STACK-NAME --template-body file://template-file.json --parameters ParameterKey=example1,ParameterValue=value1 ParameterKey=example2,ParameterValue=value2
aws cloudformation list-stacks
aws cloudformation delete-stack --stack-name STACK-NAME
If your stack creates IAM resources, you’ll also need to pass:
--capabilities CAPABILITY_NAMED_IAM
Otherwise you’ll see this error:
An error occurred (InsufficientCapabilitiesException) when calling the CreateStack operation: Requires capabilities : [CAPABILITY_NAMED_IAM]