拥有父子关系中的一组cloudformation模板,并希望将AWS :: IAM :: Role传递给子堆栈的参数,并使用GetAttr获取Arn .
验证失败,因为只能在资源上调用GetAttr,而不能在参数上调用 .
任何人都知道/猜测为什么这是这样设计的?
这不是一个问题,因为它可以通过将Arn传递到堆栈来解决,我真的很好奇
Fn::GetAttr 和 Parameters 在AWS CloudFormation中尝试做的事情根本不同 . 根据AWS文档:
Fn::GetAttr
Parameters
内部函数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
我相信你的困惑源于你试图从面向对象/其他一些编程范式的角度来考虑这个问题,其中 Resources 和 Parameters 是某种对象而 Fn::GetAttr 是一个检索值的泛型函数作为参数传入的引用 .
Resources
1 回答
Fn::GetAttr
和Parameters
在AWS CloudFormation中尝试做的事情根本不同 . 根据AWS文档:[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
我相信你的困惑源于你试图从面向对象/其他一些编程范式的角度来考虑这个问题,其中
Resources
和Parameters
是某种对象而Fn::GetAttr
是一个检索值的泛型函数作为参数传入的引用 .