Fn::GetStackOutput

调用内部函数Fn::GetStackOutput,获取指定资源栈的输出。

函数声明

  • JSON

    {
      "Fn::GetStackOutput": [
        Stack,
        OutputName,
        RegionId
      ]
    }
  • YAML

    • 完整函数的语法。

      Fn::GetStackOutput: Stack, OutputName, RegionId
    • 缩写形式。

      !GetStackOutput [Stack, OutputName, RegionId]

参数信息

  • Stack:必选,String类型。资源栈的名称或ID。

  • OutputName:必选,String类型。资源栈某一输出名称。

  • RegionId:可选,String类型。资源栈所属地域,若不指定,则与调用资源栈的地域相同。

返回值

返回资源栈Stack中名为OutputName的输出,类型依赖于输出值。

若符合如下条件则返回空值:

  • 传递的必选参数中有一个值为空值。

  • Stack不存在(含已删除)。

  • Stack运行中或删除失败。

  • Output不存在。

使用限制

  • 单向引用:A->B->C(允许),A->B->A(不允许),A->A(不允许)。

  • 引用最大长度为3:A->B->C->D(允许),A->B->C->D->E(不允许)。

说明

其中A,B,C,D,E是指资源栈的输出名称,引用最大长度是指函数Fn::GetStackOutput中OutputName引用的深度。

示例

假设目前有3个资源栈stack_a、stack_b 和stack_c ,其中资源栈ID为stack_a_id 、stack_b_id 和stack_c_id 。资源栈stack_a的输出值为stack_depth_3,资源栈stack_b调用函数引用stack_a的输出值,然后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
        	- OutputValueA
  • 资源栈stack_c

    ROSTemplateFormatVersion: '2015-09-01'
    Outputs:
    	OutputValueC:
      	Value: 
        	Fn::GetStackOutPut:
        	- stack_b_id
        	- OutputValueB

使用示例

!GetStackOutput [4a6c9851-3b0f-4f5f-b4ca-a14bf691****, InstanceId]