给定一个包含对内部函数的调用和潜在引用参数的 AWS 模板,是否有一个 CLI 工具允许传递参数值并生成相应的模板文件?
例如,来自
{
"Resource" : { "Fn::Join" : [ "", [ "xxx-" , { "Ref": "SomeParam" }, "-zzz" ] ] }
}
提供SomeParam
有价值bar
,你应该得到一个可读的文本文件:
{
"Resource" : "xxx-bar-yyy"
}
我看了各种aws cloudformation
子命令(我曾抱有希望verify-template
,但没有成功……
(理由:创建/更新堆栈需要很长时间,而且我没有足够的脑力在第一次就正确获取云信息文件。或者,n
就此而言,第一次因为太高的值而失败n
。)
答案1
CloudFormation 本身目前不具备您描述的功能。Amazon 已承认类似命令--dry-run
的功能create-stack
会很有用,例如此线程:
https://forums.aws.amazon.com/thread.jspa?threadID=122514
建议的解决方法:
将堆栈拆分成更小的块(嵌套),然后独立运行它们以加快测试迭代速度。这并不适用于所有用例,并且仍然受 CloudFormation API/引擎性能低下的影响。
尝试
moto
- 一个专门用于测试的模仿 AWS API 的 Python 库 - 它似乎已经实现了核心 CloudFormation API,尽管我实际上并没有专门将此库用于 CFN,所以 YMMV。如果你还没有了解过 Terraform,它有以下概念:执行计划,通过
terraform plan
基本上执行您所描述的操作的命令,但是针对的是 Terraform 堆栈。
答案2
create-change-set
可能是最接近的:问题是像Ref
和这样的函数Fn::GetAttr
只能在堆栈运行后才存在的资源上调用(即它如何告诉您将使用哪个实例 ID 创建您的实例?)