mcpField
C
cloudformation-best-practices

cloudformation-best-practices

github.com/sickn33云与 DevOps48.7k62 次安装今天更新
代码仓库

关于 cloudformation-best-practices

cloudformation-best-practices 是用于编写、审查和排查 AWS CloudFormation 模板的指导技能,重点涉及模板结构、参数化、资源保留措施和验证,并区分模板检查与部署安全。

主要功能

  1. 01YAML 模板结构建议
  2. 02参数化与环境条件设置
  3. 03有状态资源的保留策略
  4. 04跨堆栈输出与导出
  5. 05验证和故障排查方法

适用场景

  1. 01编写或审查 CloudFormation 模板
  2. 02设计嵌套或跨堆栈架构
  3. 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
  • 任务涉及应用程序代码,而非基础设施

说明

  1. 优先使用 YAML,而非 JSON,以提高可读性。
  2. 将特定于环境的值参数化;对静态查找使用 Mappings。
  3. 对有状态资源(RDS、S3、DynamoDB)应用 DeletionPolicy: Retain。
  4. 使用 Conditions 支持多环境模板。
  5. 部署前使用 aws cloudformation validate-template 验证模板。
  6. 字符串插值优先使用 !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