部署前 CloudFormation 模板校验
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/validate-cloudformation-templates-before-deploy-with-cfn-lint
技能介绍
要解决的问题
CloudFormation 模板的语法与配置错误,往往要到 Stack 更新真正开始时才暴露出来。一次看似简单的 stack update,可能因为一个属性名拼写错误、Region 不匹配,或 Fn::GetAtt 引用了不存在的资源而直接失败,排查链路却要从审查阶段重新开始。这类问题的代价不在修复本身,而在于发现得太晚。
技能如何工作
这个技能基于开源的 cfn-lint,在模板提交或部署前做一轮静态检查。它可以在本地直接运行,无需触碰 AWS 环境,核心能力包括:
- Schema 校验:检查模板中的属性名、类型与取值是否符合 CloudFormation 规范;
- Region 检查:识别仅在特定 Region 可用的资源或属性,避免部署到错误环境时才报错;
- 内建函数检查:验证
Ref、Fn::Sub、Fn::GetAtt等函数的引用目标是否存在、参数是否合法; - SAM 转换支持:通过
--info参数可以获取 SAM Transformation 的相关信息,便于排查转换类问题。
典型流程很直接:把 template.yaml 交给 linter,拿到结构化的错误反馈,在部署前完成修复。整个过程不改变现有工作流,只需要把检查动作前置到 CI 或提交前的本地步骤中。
适用边界与注意点
- 上游工具要求 Python 3.10 至 3.14 环境,选型前需要确认运行环境满足版本约束;
- 静态检查能覆盖配置与语法层面的问题,但不能替代真实部署验证,例如权限不足、资源配额、运行时行为等仍需在部署阶段确认;
- 规则集随 CloudFormation 规范演进而更新,建议定期同步最新版本,避免漏掉新增资源的校验规则。
使用场景
- 在提交 Terraform 前的 CI 流程里,需要对 CloudFormation 模板做一轮 schema 校验,拦截拼写和类型错误。
- 部署 SAM 应用到新 Region 之前,想确认模板中的资源与属性在该 Region 可用,避免部署失败。
- 模板里用到多个 Fn::GetAtt,需要验证引用的资源是否存在、参数是否合法,再发起 Stack 更新。
- 接手他人的模板,想本地跑一遍检查,先摸清配置问题再进入审查流程。
适合人员
- 云平台工程师,负责维护 CloudFormation 模板并在部署前定位配置错误。
- DevOps 工程师,需要在 CI 流程里加入模板静态检查,减少人工审查遗漏。
- 负责排查 Stack 更新失败的工程师,需要快速定位 schema、Region 或内建函数问题。
- 刚接手 CloudFormation 项目的开发者,想在本地跑一轮检查后再提交代码。