用途
CloudFormation 技能用于使用 AWS 原生 CloudFormation 模板部署 AWS 基础设施,属于基础设施即代码(IaC)实践。它适合以下场景:
- 使用 AWS 原生 IaC 部署 AWS 资源
- 创建可重复、参数化的基础设施模板
- 使用同一模板管理多环境部署(dev、staging、prod)
- 通过变更集和回滚保护实现安全部署
- 检测并修复配置漂移
- 将大型基础设施组织为嵌套堆栈
- 在堆栈之间导出/导入值
主要能力
该技能覆盖 CloudFormation 的核心工作流:
- 模板结构:提供包含 AWSTemplateFormatVersion、Description、Metadata、Parameters、Conditions、Resources、Outputs 的完整模板示例,展示安全组、启动模板、自动伸缩组、目标组等资源的定义方式。
- 堆栈操作:验证模板、使用 cfn-lint 检查、创建堆栈、等待创建完成、描述堆栈状态与输出、列出堆栈资源、删除堆栈。
- 变更集(安全更新):创建变更集预览变更、描述变更集审查计划变更、执行变更集、等待更新完成、删除未应用的变更集。
- 漂移检测:启动漂移检测、检查检测状态、查看漂移资源、对特定资源检测漂移。
- 嵌套堆栈:父模板引用子模板,通过
aws cloudformation package打包本地引用到 S3,再使用aws cloudformation deploy部署。 - 内置函数参考:Ref、GetAtt、Sub、Join、Select、Split、If、Equals、ImportValue、Cidr、GetAZs。
- 堆栈策略:防止数据库等关键资源被意外替换或删除。
- 事件与调试:查看堆栈事件、继续卡住的回滚、取消进行中的更新、从现有堆栈获取模板。
- 故障排查:提供常见问题、原因与修复方法的对照表。
使用方式
使用前需满足以下前提条件:
- 安装并配置 AWS CLI v2
- 配置最小权限的 CloudFormation 操作权限,以及经过审查、范围限定在目标堆栈的执行角色/资源权限
- (可选)安装 cfn-lint 进行模板校验(
pip install cfn-lint) - 对于大于 51,200 字节的模板,需要 S3 存储桶
典型流程为:编写模板 → 使用 aws cloudformation validate-template 或 cfn-lint 校验 → 创建堆栈或创建变更集预览 → 执行变更集 → 等待完成 → 按需进行漂移检测。嵌套堆栈场景下,先使用 aws cloudformation package 打包,再使用 aws cloudformation deploy 部署。
适用场景
- 需要以可重复、参数化模板管理 AWS 多环境部署的团队
- 需要安全预览并应用基础设施变更的运维场景
- 需要检测并修复手动变更导致的配置漂移
- 需要将大型基础设施拆分为嵌套堆栈进行组织
- 需要在堆栈之间共享输出值(导出/导入)
限制
- 基础设施命令可能中断服务:在变更状态前应确认目标主机/范围,并准备备份/快照。
- 该技能为仅文档导入:上游脚本和模板未随附。
- 模板示例是基础设施脚手架,并非可直接部署的生产应用:需要提供经过验证的、区域特定的 AmiId 以及引导/监听器、实际的负载均衡器/监听器,以及从其安全组到目标端口 8080 的入站规则。
- 未捆绑 cfn-signal 发送器,因此资源信号等待被禁用;在启用前需实现并测试信号。
- 嵌套子模板也是外部前提条件。
- 文档中未提供收费、价格、平台或效果相关信息。