2017-01-02 1 views
0

In meiner verschachtelten Stapel muss ich Ausgangswerte verwenden und AWS :: Cloudformation :: Stapel gibt Werte alsCloudformation verschachtelten Stapel Ausgänge in yaml

Fn :: GetAtt Outputs.NestedStackOutputName

Aber yaml doesn‘ t erlauben sie mir

!GetAtt MyResourceName.Outputs.MyOutputName 

zu verwenden, wie es sie in drei Teile zu spalten versucht, statt der 2 erfordert.

Ich habe auch versucht

Value: "Fn::GetAtt": [ "MyResourceName", "Outputs.MyOutputName" ] 

verwenden, aber dann bekomme ich

mapping values are not allowed here 
    in "<string>", line 21, column 24: 
     Value: "Fn::GetAtt": [ "MyResourceName", "Outputs.MyOutputName" ] 

So wie kann ich diese verwenden soll? Muss ich wirklich zu json wechseln?

Antwort

2

Ihr Problem ist aufgrund eines known bug in aws-cli ‚s benutzerdefinierte YAML-parsing code das war kürzlich als Teil der aws cloudformation deploy und aws cloudformation package Befehl hinzugefügt s. Das Problem wurde behoben in version 1.11.37aws-cli. Um das Problem zu beheben, können Sie einen der folgenden Schritte ausführen:

  • Aktualisieren Sie aws-cli auf Version 1.11.37 oder höher.
  • Verwenden Sie aws cloudformation [create|update]-stack zum Erstellen/Aktualisieren Ihres Stapels anstelle von aws cloudformation [package|deploy], wenn Sie keine lokalen Artefakte verwenden.
+0

Ich habe heute an dieses Thema erinnert und nach einigen Recherchen fand ich heraus, dass mein aws cli alt war und dieses Problem behoben wurde. – Jeppz

+1

@Jeppz ah, der zusätzliche Kontext, dass Sie diesen Fehler von der AWS CLI erhalten haben (nicht von CloudFormation direkt, wie ich angenommen hatte) klärt die Dinge! Meine Antwort wurde aktualisiert, um die Situation zu beschreiben. – wjordan

1

Es funktionierte für mich, diese zwei Stapel mit:

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 
+0

Danke, das funktioniert. AWS-Dokumentation kann wirklich fehlen, wenn es um die Syntax geht. – Jeppz

Verwandte Themen