組み込み関数 Fn::GetStackOutput は、スタックの出力をクエリします。
宣言
JSON
{ "Fn::GetStackOutput": [ Stack, OutputName, RegionId ] }YAML
完全な関数名の構文:
Fn::GetStackOutput: Stack, OutputName, RegionId短縮形の構文:
!GetStackOutput [Stack, OutputName, RegionId]
パラメーター
Stack: 必須。このパラメーターは、スタックの名前または ID を指定します。パラメーター値は文字列型である必要があります。OutputName: 必須。このパラメーターは、スタック内の出力の名前を指定します。パラメーター値は文字列型である必要があります。RegionId: オプション。このパラメーターは、スタックのリージョン ID を指定します。パラメーター値は文字列型である必要があります。このパラメーターを指定しない場合、呼び出されたスタックのリージョン ID が使用されます。
戻り値
スタックの OutputName パラメーターに対応する出力。出力タイプは、出力値によって異なります。
次の場合、空の文字列が返されます。
必須パラメーターのいずれかが空です。
スタックが存在しないか、削除されています。
スタックが実行中であるか、削除に失敗しました。
出力が存在しません。
制限
一方向の参照のみがサポートされています。たとえば、A->B->C はサポートされていますが、A->B->A または A->A はサポートされていません。
サポートされる最大の参照の深さは 3 です。たとえば、A->B->C はサポートされていますが、A->B->C->D->E はサポートされていません。
A、B、C、D、E は、スタック内の出力の名前を表します。最大の参照の深さは、Fn::GetStackOutput 関数の OutputName の最大の参照の深さを表します。
サンプル テンプレート
このセクションでは、stack_a、stack_b、stack_c というスタックのサンプル テンプレートを示します。スタックの ID は、stack_a_id、stack_b_id、stack_c_id です。 stack_a の出力値は stack_depth_3 です。 Fn::GetStackOutput 関数は、stack_b の stack_a の出力値を参照するために呼び出されます。次に、Fn::GetStackOutput 関数は、stack_c の stack_b の出力値を参照するために呼び出されます。その結果、stack_c の出力値は stack_depth_3 になります。
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 - OutputValueAstack_c
ROSTemplateFormatVersion: '2015-09-01' Outputs: OutputValueC: Value: Fn::GetStackOutPut: - stack_b_id - OutputValueB
例
!GetStackOutput [4a6c9851-3b0f-4f5f-b4ca-a14bf691****, InstanceId]