在输出(Outputs)中,定义在调用查询资源栈接口时返回的值。例如,定义ECS实例ID的输出,然后可在调用查询资源栈的接口时,查看该实例ID。

语法

Outputs由输出ID和输出描述组成。所有输出描述都被括在大括号里。如果声明多个输出项,则用逗号分隔开。每一个输出项支持以数组形式输出多个值。请参见以下Outputs的语法结构示例代码:

"Outputs" : {
  "输出1 ID" : {
    "Description" : "输出的描述",
    "Condition": "是否输出此资源属性的条件",
    "Value" : "输出值的表达式"
  },
  "输出2 ID" : {
    "Description" : "输出的描述",
    "Condition": "是否输出此资源属性的条件",
    "Value" : [
      "输出值的表达式1",
      "输出值的表达式2",
      ...
    ]
  }
}
			
  • 输出ID:输出项的标识符,在模板中具有唯一性。
  • Description(可选):对输出值的描述。
  • Value(必需):在调用查询资源栈接口时,返回的属性值。
  • Condition(可选):使用Condition属性可以指定是否需要创建某个资源和输出资源的信息。当Condition所指定的条件值为true时,才创建此资源和输出资源信息。

如以下代码所示,根据MaxAmount的值判断是否创建WebServer:

{
  "ROSTemplateFormatVersion" : "2015-09-01",
  "Parameters": {
    "MaxAmount": {
      "Type": "Number",
      "Default": 1
    }
  },
  "Conditions": {
    "CreateWebServer": {"Fn::Not": {"Fn::Equals": [0, {"Ref": "MaxAmount"}]}}
  }
  "Resources" : {
    "WebServer": {
      "Type": "ALIYUN::ECS::InstanceGroup",
      "Condition": "CreateWebServer",
      "Properties": {
        "ImageId" : "m-25l0r****",
        "InstanceType": "ecs.t1.small"
        "MaxAmount": {"Ref": "MaxAmount"}
      }
    }
  }
  "Outputs": {
    "WebServerIP": {
      "Condition": "CreateWebServer",
      "Value": {
        "Fn::GetAtt": ["WebServer", "PublicIps"]
      }
    }
  }
}
			

示例

在以下示例中,输出部分有2个输出项。第一个输出资源ID为WebServer的InstanceId属性,第二个输出资源ID为WebServer的PublicIp和PrivateIp属性。

"Outputs": {
  "InstanceId": {
    "Value" : {"Fn::GetAtt": ["WebServer", "InstanceId"]}
  },
  "PublicIp & PrivateIp": {
    "Value" : [
      {"Fn::GetAtt": ["WebServer", "PublicIp"]},
      {"Fn::GetAtt": ["WebServer", "PrivateIp"]}
    ]
  }
}