Je souhaite transmettre ou partager une valeur entre deux piles imbriquées au sein de la même pile parent dans AWS CloudFormation.
Brève description
La solution s'applique si :
- Vous disposez de deux piles imbriquées, NestedStackA et NestedStackB qui font partie de la même pile parent.
- Vous souhaitez utiliser une valeur de NestedStackA dans NestedStackB.
Solution
1.FSPDans votre modèle AWS CloudFormation, transmettez la valeur que vous souhaitez partager en tant que sortie dans votre pile source ( NestedStackA). Consultez les exemples JSON et YAML suivants.
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.FSPCréez un paramètre dans la pile de destination (NestedStackB). Consultez les exemples JSON et YAML suivants.
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.FSPTransmettez la valeur de sortie de NestedStackA comme valeur de paramètre pour NestedStackB. Pour accéder à cette valeur dans la pile parente, utilisez la fonction Fn::GetAtt. Utilisez le nom logique de NestedStackA et le nom de la valeur en sortie au format Outputs.NestedStackOutputName. Consultez les exemples JSON et YAML suivants.
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
Informations connexes
Utilisation des piles imbriquées
AWS::CloudFormation::Stack
Extraits de modèle AWS CloudFormation