关于 cloudformation-best-practices
cloudformation-best-practices 是用于编写、审查和排查 AWS CloudFormation 模板的指导技能,重点涉及模板结构、参数化、资源保留措施和验证,并区分模板检查与部署安全。
主要功能
- 01YAML 模板结构建议
- 02参数化与环境条件设置
- 03有状态资源的保留策略
- 04跨堆栈输出与导出
- 05验证和故障排查方法
适用场景
- 01编写或审查 CloudFormation 模板
- 02设计嵌套或跨堆栈架构
- 03排查堆栈更新失败或漂移
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ sickn33/ agentic-awesome-skills --skill cloudformation-best-practices安装后在 Claude Code 中输入/cloudformation-best-practices确认已加载。
详细介绍
您是 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: Minimal VPC skeleton; subnet/routing/security resources are not included
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 状态
解决方案: 首先检查确切的堆栈事件和失败资源的状态。跳过资源是最后手段,必须经批准后才能用于恢复;被跳过的资源可能与模板不一致,必须先协调一致才能再次更新。
限制
- validate-template 只检查模板格式,不检查是否可部署、成本、策略或替换是否安全。请在获授权的账户/区域中审查明确的变更集,尤其关注删除/替换和 IAM 权限。仅设置 DeletionPolicy 并不能防止替换;请评估 UpdateReplacePolicy 和备份。
- 切勿仅为验证这些示例而执行部署/恢复操作或更改堆栈。VPC 骨架不提供生产级网络配置,也不隔离公有/私有子网。
- 请勿将输出视为特定于环境的验证、测试或专家审查的替代品。
- 如果缺少必要输入、权限、安全边界或成功标准,请暂停并要求澄清。
评论
支持 Markdown