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]