拥有父子关系中的一组cloudformation模板,并希望将AWS :: IAM :: Role传递给子堆栈的参数,并使用GetAttr获取Arn。
验证失败,因为只能在资源上调用GetAttr,而不能在参数上调用。
任何人都知道/猜测为什么这是以这种方式设计的?
这不是问题因为它可以通过将Arn传递到堆栈中来解决,我只是很好奇
答案 0 :(得分:0)
AWS CloudFormation 中的Fn::GetAttr
和Parameters
尝试做的事情根本不同。根据AWS文档:
内部函数Fn :: GetAtt返回属性的值 来自模板中的资源。
您可以使用可选的“参数”部分将值传递到您的 创建堆栈时的模板。使用参数,您可以创建 每次创建堆栈时自定义的模板。
[2] http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html
我相信你的困惑源于这样一个事实:你试图从面向对象/其他一些编程范式来考虑这个问题,其中Resources
和Parameters
是某种形式的对象和Fn::GetAttr
是一个泛型函数,它检索作为参数传入的引用的值。
答案 1 :(得分:0)
就我而言,我想访问嵌套堆栈中的资源属性,例如 ARN 和 Name。如果我传递资源字符串并使用 GetAtt 来获取这些,我不需要将它们作为两个参数传递。由于这个限制,我不得不将它们作为两个参数传递。