如何查找用于创建或更新CloudFormation栈的原始模板?
AWS平台侧确实存储了对应的栈与模板的关联信息,可通过以下三种方式精准定位:
直接从CloudFormation导出栈对应模板
AWS会保留每个栈的全生命周期模板记录,包括初始创建模板、每次更新后的生效模板。
控制台操作路径:进入CloudFormation控制台,选择目标栈,切换到「模板」标签页即可查看或下载当前生效模板,也可切换查看创建时的原始模板。
对应CLI命令:aws cloudformation get-template --stack-name <你的栈名称> --template-stage Original
其中--template-stage参数可填Original(原始提交模板)或Processed(经过宏、嵌套栈处理后的实际执行模板),也可以指定变更集名称查询某次更新对应的模板。通过CloudTrail日志查询S3模板地址
所有CloudFormation的创建、更新操作都会记录在CloudTrail事件中,如果你是通过S3地址提交的模板,事件的requestParameters字段会明确记录当时使用的TemplateURL,可直接对应到S3存储桶内的具体对象,若你开启了S3版本控制,还能匹配到对应的对象版本。
对应CLI查询示例:aws cloudtrail lookup-events --lookup-attributes AttributeKey=ResourceName,AttributeValue=<你的栈名称> --max-results 10
从返回的事件详情中即可提取到对应操作的S3模板路径。主动打标签简化后续查询
若你需要长期维护对应关联关系,可在每次创建、更新栈时,将使用的S3模板路径、版本号作为自定义标签添加到CloudFormation栈上,后续仅需查看栈的标签即可直接获取对应模板地址,无需二次查询。
如果需要验证模板一致性,可将从CloudFormation导出的原始模板与S3内的对象做哈希值比对,即可确认两者是否完全一致。
内容的提问来源于stack exchange,提问作者NosIreland

