AWS CloudFormation 堆栈诊断
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/aws-cloudformation-stack-diagnostics。
技能介绍
要解决的具体问题
当 CloudFormation 堆栈部署失败时,错误信息并不会集中出现在一个地方。工程师通常要在 AWS 控制台里逐层翻看事件,或手动拼接 aws cloudformation describe-stack-events 的原始输出,再对照模板语法和 AWS 文档找原因。资源创建失败、回滚触发、嵌套堆栈依赖链断裂,这些关键线索散落在不同 API 返回和日志条目里,定位一次根因往往耗时数十分钟甚至更久。尤其当堆栈包含多层嵌套时,父栈的 ROLLBACK_COMPLETE 可能掩盖子栈的具体错误,手工排查极易遗漏。
技能如何工作
该技能围绕两条主线展开,最终输出一份结构化诊断结果:
- 事件追踪:调用
aws cloudformation describe-stack-events拉取堆栈最近事件,按资源逻辑 ID 和物理状态归类,自动标出CREATE_FAILED、ROLLBACK、DELETE_FAILED等关键节点,并保留失败消息原文。 - 模板校验:通过
cfn-lint对模板做静态分析,捕捉参数类型不匹配、属性缺失、IAM 策略不合规、资源类型拼写错误等常见问题,减少反复试错。 - 依赖链还原:结合嵌套堆栈的
Outputs与DependsOn声明,重建资源创建顺序,定位回滚究竟源于父栈还是某个子栈,并给出可读的调用路径。 - 漂移检测:对照已附加资源与模板声明,识别偏离预期的配置项,帮助区分是运维人员手动修改导致,还是模板本身存在缺陷。
适用边界与注意点
- 需要本地配置好 AWS CLI 并拥有
cloudformation:DescribeStackEvents等 IAM 权限;cfn-lint需单独安装或通过技能内置方式调用。 cfn-lint只覆盖静态规则,无法检测运行时依赖(如外部 API 不可用、密钥未同步)。- 漂移检测依赖资源已被正确附加到堆栈;游离资源或通过
ImportValue引入的资源可能不在结果中。 - 该技能聚焦于 CloudFormation,不涉及 Terraform、Ansible 或 AWS CDK 等其他编排工具。
- 诊断结果仅反映诊断时刻的状态,不提供自动修复动作;修复仍需人工决策或配合其他自动化流程。
使用场景
- 堆栈部署失败时,需要快速定位哪个资源的创建触发了回滚,而非逐个事件翻看。
- 嵌套堆栈回滚后,要还原父子栈之间的依赖链,判断错误源自哪一层。
- 模板更新后部署报参数类型错误,需要静态扫描定位不合规的资源定义。
- 怀疑配置被手动修改导致堆栈与模板不一致,需要比对漂移项。
适合人员
- 负责 AWS 基础设施部署的运维工程师,常需排查 CloudFormation 堆栈失败原因。
- 管理 IaC 模板的 DevOps 工程师,要在上线前校验模板语法与资源合规性。
- 处理生产事故的 SRE,需要在回滚发生后快速还原资源依赖链与失败根因。