重要的
我正在动态构建 TemplateURL。
"TemplateURL" : { "Fn::Join" : ["", [ { "Ref" : "TemplateURL"}, "substack.template" ]] }
我正在 AWS 控制台中运行 CloudFormation 模板。
直接运行堆栈
我从使用 IAM 资源的模板开始,控制台提示我在直接运行堆栈时确认 IAM 功能。
小时候运行 Stack
然后我尝试从父堆栈调用相同的堆栈,但没有收到相同的提示。
然后堆栈失败并显示以下消息:
需要能力:[CAPABILITY_IAM]
研究
文档表明我可以通过多种方式运行 CF 脚本。有很多关于 CLI/API 并提供功能参数的文档,但似乎没有关于如何确保在通过控制台运行时应用它的信息。
http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-template.html
AWS CloudFormation 模板中的 IAM 资源
- CF 控制台
- 命令行界面
- API
我做了什么/我的想法
我现在通过论坛提出了一个问题,但没有回应(还): https ://forums.aws.amazon.com/thread.jspa?threadID=139160
我怀疑这是控制台中的一个错误,因为似乎没有任何关于如何通过控制台更改行为的文档,而且据我所知,这应该可以正常工作。
任何人都遇到过同样的问题,或者可以报告它对他们来说工作正常?
我刚刚遇到了这个问题,我的问题是我没有选中“我承认此模板可能导致 AWS CloudFormation 创建 IAM 资源”复选框。在更新我的堆栈之前的最后一个屏幕上。
如果您使用的是 CLI 或 boto,则可以包含“capabilities”参数。这需要一个列表,但现在唯一接受的条目是“CAPABILITY_IAM”。
或者
这将授予整个堆栈树 IAM 创建权限。
动态构建 TemplateURL 时,验证检查器无法提前查看是否有 IAM 资源,这就是它不会询问 IAM_CAPABILITIES 的原因。
解决此问题的最佳方法(现在)是在主模板中创建一个虚拟 IAM 资源以获取提示。