La fonction intrinsèque Fn::GetStackOutput permet d'interroger la sortie d'une pile.
Déclaration
-
JSON
{ "Fn::GetStackOutput": [ Stack, OutputName, RegionId ] } -
YAML
-
Syntaxe du nom complet de la fonction :
Fn::GetStackOutput: Stack, OutputName, RegionId -
Syntaxe de la forme abrégée :
!GetStackOutput [Stack, OutputName, RegionId]
-
Paramètres
Stack: Obligatoire. Nom ou ID de la pile. La valeur doit être de type String.OutputName: Obligatoire. Nom d'une sortie définie dans la sectionOutputsde la pile. La valeur doit être de type String.RegionId: Facultatif. ID de région de la pile référencée. La valeur doit être de type String. Par défaut, la région de la pile appelant la fonction est utilisée.
Valeur de retour
La valeur de la sortie identifiée par OutputName. Le type correspond à celui de la valeur de sortie.
Une chaîne vide est renvoyée dans les cas suivants :
Un paramètre obligatoire est vide.
La pile n'existe pas ou a été supprimée.
La pile est en cours d'exécution ou sa suppression a échoué.
La sortie spécifiée n'existe pas dans la pile.
Limites
Seules les références unidirectionnelles sont prises en charge. La pile A peut référencer la sortie de la pile B, et la pile B peut référencer la sortie de la pile C. En revanche, la pile B ne peut pas référencer la sortie de la pile A (ce qui créerait une référence circulaire) et une pile ne peut pas référencer sa propre sortie (par exemple, A→A n'est pas pris en charge).
La profondeur de référence maximale est de 3. Une chaîne A→B→C est prise en charge, mais pas A→B→C→D.
A, B, C, D et E représentent le nom d'une sortie dans une pile. La profondeur de référence maximale correspond à la profondeur maximale de l'argument OutputName dans la fonction Fn::GetStackOutput.
Modèles d'exemple
L'exemple suivant présente trois piles (stack_a, stack_b et stack_c) où la sortie de chaque pile dépend de celle de la pile précédente. La sortie finale de stack_c correspond à stack_depth_3, la valeur initialement définie dans stack_a.
-
stack_a
ROSTemplateFormatVersion: '2015-09-01' Outputs: OutputValueA: Value: 'stack_depth_3' -
stack_b
ROSTemplateFormatVersion: '2015-09-01' Outputs: OutputValueB: Value: Fn::GetStackOutPut: - stack_a_id - OutputValueA -
stack_c
ROSTemplateFormatVersion: '2015-09-01' Outputs: OutputValueC: Value: Fn::GetStackOutPut: - stack_b_id - OutputValueB
Exemples
!GetStackOutput [4a6c9851-3b0f-4f5f-b4ca-a14bf691****, InstanceId]