为什么GetAttr无法处理云信息模板参数?

时间:2017-03-06 15:50:42

标签: amazon-cloudformation

拥有父子关系中的一组cloudformation模板,并希望将AWS :: IAM :: Role传递给子堆栈的参数,并使用GetAttr获取Arn。

验证失败,因为只能在资源上调用GetAttr,而不能在参数上调用。

任何人都知道/猜测为什么这是以这种方式设计的?

这不是问题因为它可以通过将Arn传递到堆栈中来解决,我只是很好奇

2 个答案:

答案 0 :(得分:0)

AWS CloudFormation 中的Fn::GetAttrParameters尝试做的事情根本不同。根据AWS文档:

  

内部函数Fn :: GetAtt返回属性的值   来自模板中的资源。

[1] http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-getatt.html

  

您可以使用可选的“参数”部分将值传递到您的   创建堆栈时的模板。使用参数,您可以创建   每次创建堆栈时自定义的模板。

[2] http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html

我相信你的困惑源于这样一个事实:你试图从面向对象/其他一些编程范式来考虑这个问题,其中ResourcesParameters是某种形式的对象和Fn::GetAttr是一个泛型函数,它检索作为参数传入的引用的值。

答案 1 :(得分:0)

就我而言,我想访问嵌套堆栈中的资源属性,例如 ARN 和 Name。如果我传递资源字符串并使用 GetAtt 来获取这些,我不需要将它们作为两个参数传递。由于这个限制,我不得不将它们作为两个参数传递。