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