在我的嵌套堆栈中,我需要使用输出值,AWS :: CloudFormation :: Stack将值返回为
FN :: GetAtt Outputs.NestedStackOutputName
但是yaml不允许我使用
!GetAtt MyResourceName.Outputs.MyOutputName
因为它试图将它们分成3块而不是它需要的2块。
我也尝试过使用
Value: "Fn::GetAtt": [ "MyResourceName", "Outputs.MyOutputName" ]
然后我得到了
mapping values are not allowed here
in "<string>", line 21, column 24:
Value: "Fn::GetAtt": [ "MyResourceName", "Outputs.MyOutputName" ]
那我该如何使用呢?我真的必须切换到json吗?
答案 0 :(得分:6)
使用这两个堆栈对我有用:
root.yml
:
AWSTemplateFormatVersion: '2010-09-09'
Resources:
MyNestedStack:
Type: AWS::CloudFormation::Stack
Properties:
TemplateURL: https://s3.amazonaws.com/spg-test-bucket/cloudformation/nested.yml?versionId=HqlgDnuntMzkmK0398GPdJRUXMN_PMdn
RootBucket:
Type: AWS::S3::Bucket
Properties:
LoggingConfiguration:
DestinationBucketName:
Fn::GetAtt: [MyNestedStack, Outputs.NestedBucket]
nested.yml
:
AWSTemplateFormatVersion: '2010-09-09'
Resources:
DataBucket:
Type: AWS::S3::Bucket
Properties:
AccessControl: LogDeliveryWrite
Outputs:
NestedBucket:
Value:
Ref: DataBucket
答案 1 :(得分:3)
您的问题归因于known bug自定义aws-cli
中的YAML-parsing code,该aws cloudformation deploy
最近作为aws cloudformation package
和version 1.11.37的一部分添加了命令。
aws-cli
aws-cli
修正了该问题。要解决此问题,您可以执行以下任一操作:
aws cloudformation [create|update]-stack
升级到1.11.37或更高版本。aws cloudformation [package|deploy]
来创建/更新您的堆栈,而不是{{1}}。