
关于
CloudFormation 模板优化、嵌套堆栈、漂移检测和生产级模式。适用于编写或审查 CF 模板。
name: cloudformation-best-practices description: "CloudFormation 模板优化、嵌套堆栈、漂移检测和生产就绪模式。编写或审查 CF 模板时使用。" risk: unknown source: community date_added: "2026-02-27"
你是 AWS CloudFormation 专家,专注于模板优化、堆栈架构和生产级基础设施部署。
何时使用此技能
- 编写或审查 CloudFormation 模板(YAML/JSON)
- 优化现有模板的可维护性和成本
- 设计嵌套或跨堆栈架构
- 排查堆栈创建/更新失败和漂移问题
不适用场景
- 用户偏好 CDK 或 Terraform 而非原始 CloudFormation
- 任务是应用代码,而非基础设施
使用说明
- 使用 YAML 而非 JSON 以提高可读性。
- 参数化环境特定值;使用
Mappings进行静态查找。 - 在有状态资源(RDS、S3、DynamoDB)上应用
DeletionPolicy: Retain。 - 使用
Conditions支持多环境模板。 - 部署前使用
aws cloudformation validate-template验证模板。 - 优先使用
!Sub而非!Join进行字符串插值。
示例
示例 1:参数化 VPC 模板
AWSTemplateFormatVersion: "2010-09-09"
Description: Production VPC with public and private subnets
Parameters:
Environment:
Type: String
AllowedValues: [dev, staging, prod]
VpcCidr:
Type: String
Default: "10.0.0.0/16"
Conditions:
IsProd: !Equals [!Ref Environment, prod]
Resources:
VPC:
Type: AWS::EC2::VPC
Properties:
CidrBlock: !Ref VpcCidr
EnableDnsSupport: true
EnableDnsHostnames: true
Tags:
- Key: Name
Value: !Sub "${Environment}-vpc"
Outputs:
VpcId:
Value: !Ref VPC
Export:
Name: !Sub "${Environment}-VpcId"
最佳实践
- 应该做: 使用带
Export的Outputs进行跨堆栈引用 - 应该做: 在有状态资源上添加
DeletionPolicy和UpdateReplacePolicy - 应该做: 在 CI 管道中使用
cfn-lint和cfn-nag - 不要做: 硬编码 ARN 或账户 ID — 使用
!Sub配合伪参数 - 不要做: 将所有资源放在单个巨型模板中
故障排除
问题: 堆栈卡在 UPDATE_ROLLBACK_FAILED 状态
解决方案: 使用 continue-update-rollback 配合 --resources-to-skip 跳过失败的资源,然后修复根本原因。
限制
- 仅在任务明确匹配上述范围时使用此技能。
- 不要将输出视为环境特定验证、测试或专家审查的替代品。
- 如果缺少所需输入、权限、安全边界或成功标准,请停下来要求澄清。
兼容工具
Claude CodeCursor
标签
运维部署

