Cloudformation
AWS CloudFormation infrastructure as code for stack management.
Install
npx skills add itsmostafa/aws-agent-skills --skill cloudformation -g -a claude-code -y- Repository
- itsmostafa/aws-agent-skills1.2k
- Category
- DevOps
- Updated
- 9d ago
- License
- MIT
- Context cost
- Mediumabout 2,367 tokens
- Runs scripts
- No, instructions only
What it does
AWS CloudFormation infrastructure as code for stack management. Use when writing templates, deploying stacks, managing drift, troubleshooting deployments, or organizing infrastructure with nested stacks.
AWS CloudFormation
AWS CloudFormation provisions and manages AWS resources using templates. Define infrastructure as code, version control it, and deploy consistently across environments.
Table of Contents
Core Concepts
Templates
JSON or YAML files defining AWS resources. Key sections:
- Parameters: Input values
- Mappings: Static lookup tables
- Conditions: Conditional resource creation
- Resources: AWS resources (required)
- Outputs: Return values
Stacks
Collection of resources managed as a single unit. Created from templates.
Change Sets
Preview changes before executing updates.
Stack Sets
Deploy stacks across multiple accounts and regions.
Common Patterns
Basic Template Structure
AWSTemplateFormatVersion: '2010-09-09'
Description: My infrastructure template
Parameters:
Environment:
Type: String
AllowedValues: [dev, staging, prod]
Default: dev
Mappings:
EnvironmentConfig:
dev:
InstanceType: t3.micro
prod:
InstanceType: t3.large
Conditions:
IsProd: !Equals [!Ref Environment, prod]
Resources:
MyBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: !Sub 'my-app-${Environment}-${AWS::AccountId}'
VersioningConfiguration:
Status: !If [IsProd, Enabled, Suspended]
Outputs:
BucketName:
Description: S3 bucket name
Value: !Ref MyBucket
Export:
Name: !Sub '${AWS::StackName}-BucketName'
Deploy a Stack
AWS CLI:
# Create stack
aws cloudformation create-stack \
--stack-name my-stack \
--template-body file://template.yaml \
--parameters ParameterKey=Environment,ParameterValue=prod \
--capabilities CAPABILITY_IAM

