Wie übergebe ich Werte zwischen verschachtelten Stacks innerhalb desselben übergeordneten Stacks in AWS CloudFormation?

Lesedauer: 2 Minute
0

Ich möchte einen Wert zwischen zwei verschachtelten Stacks innerhalb desselben übergeordneten Stacks in AWS CloudFormation weitergeben oder teilen.

Kurzbeschreibung

Die Auflösung geht von folgenden Annahmen aus:

  • Sie haben zwei verschachtelte Stacks, NestedStackA und NestedStackB, die Teil desselben übergeordneten Stacks sind.
  • Sie möchten einen Wert von NestedStackA in NestedStackB verwenden.

Behebung

1.fSpin Ihrer AWS CloudFormation-Vorlage und übergeben Sie den Wert, den Sie teilen möchten, als Ausgabe in Ihren Quell-Stack (NestedStackA). Sehen Sie sich die folgenden JSON- und YAML-Beispiele an.

JSON:

"Outputs": {
    "SharedValueOutput": {
        "Value": "yourValue",
        "Description": "You can refer to any resource from the template."
    }
}

YAML:

Outputs:
  SharedValueOutput:
    Value: yourValue         
    Description: You can refer to any resource from the template.

2.FSP Erstellen Sie einen Parameter im Zielstapel (NestedStackB). Sehen Sie sich die folgenden JSON- und YAML-Beispiele an.

JSON:

"Parameters": {
    "SharedValueParameter": {
        "Type": "String",
        "Description": "The shared value will be passed to this parameter by the parent stack."
    }
}

YAML:

Parameters:
  SharedValueParameter:
    Type: String
    Description: The shared value will be passed to this parameter by parent stack.

3.fspÜbergeben Sie den Ausgabewert von NestedStackA als Parameterwert für NestedStackB. Verwenden Sie die Funktion Fn::GetAtt, um auf diesen Wert im übergeordneten Stack zuzugreifen. Verwenden Sie den logischen Namen von NestedStackA und den Namen des Ausgabewerts im Format Outputs.NestedStackOutputName. Sehen Sie sich die folgenden JSON- und YAML-Beispiele an.

JSON:

{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Resources": {
    "NestedStackA": {
      "Type": "AWS::CloudFormation::Stack",
      "Properties": {
        "TemplateURL": "<S3 URL for the template>"
      }
    },
    "NestedStackB": {
      "Type": "AWS::CloudFormation::Stack",
      "Properties": {
        "TemplateURL": "<S3 URL for the template>",
        "Parameters": {
          "SharedValueParameter": {
            "Fn::GetAtt": [
              "NestedStackA",
              "Outputs.SharedValueOutput"
            ]
          }
        }
      }
    }
  }
}

YAML:

AWSTemplateFormatVersion: 2010-09-09
Resources:
  NestedStackA:
    Type: 'AWS::CloudFormation::Stack'
    Properties:
      TemplateURL: <S3 URL for the template>
  NestedStackB:
    Type: 'AWS::CloudFormation::Stack'
    Properties:
      TemplateURL: <S3 URL for the template>
      Parameters:
        SharedValueParameter:
          Fn::GetAtt:
          - NestedStackA
          - Outputs.SharedValueOutput

Weitere Informationen

Arbeiten mit verschachtelten Stapeln

AWS::CloudFormation::Stack

Auszüge aus AWS CloudFormation-Vorlagen

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren