繁体   English   中英

在yaml中的Cloudformation嵌套堆栈输出

[英]Cloudformation nested stack outputs in yaml

在我的嵌套堆栈中,我需要使用输出值,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吗?

它使用这两个堆栈对我有用:

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

您的问题是由于aws-cli的自定义YAML解析代码中的已知错误 ,该代码最近作为aws cloudformation deployaws cloudformation package命令的一部分添加。

该问题已在aws-cli 1.11.37版本中修复 要解决此问题,您可以执行以下任一操作:

  • aws-cli升级到1.11.37或更高版本。
  • 如果您没有使用本地工件,请使用aws cloudformation [create|update]-stack来创建/更新堆栈而不是aws cloudformation [package|deploy]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM