输出(Outputs)

更新时间:2025-01-22 06:16:57

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

语法

Outputs由输出Name和输出描述组成。每一个输出项支持以数组形式输出多个值。请参见以下Outputs的语法结构示例代码:

Outputs:
  输出1 Name:
    Description: 输出的描述
    Condition: 是否输出此资源属性的条件
    Value: 输出值的表达式
    Label: 输出的别名
  输出2 Name:
    Description: 输出的描述
    Condition: 是否输出此资源属性的条件
    Value:
      - 输出值的表达式1
      - 输出值的表达式2
      - ...
    Label: 输出的别名
  • 输出Name:输出项的标识符,在模板中具有唯一性。

  • Description(可选):对输出值的描述。

  • Value(必须):在调用查询资源栈接口时,返回的属性值。

  • Condition(可选):使用Condition属性可以指定是否需要创建某个资源和输出资源的信息。当Condition所指定的条件值为true时,才创建此资源和输出资源信息。

  • Label(可选):输出的别名。

  • NoEcho(可选):是否输出参数值。如果将值设置为true,则只输出星号(*)。

  • Console.Url(可选):在资源栈信息页面输出使用信息。

说明

其中Value支持引用(Ref)、获取资源属性(Fn::GetAtt)、函数、常量(如数字、字符串、字典、列表等数据结构)定义输出结果。

示例

在以下示例中,输出部分有2个输出项。第一个输出资源IDWebServerInstanceId属性,第二个输出资源IDWebServerPublicIpPrivateIp属性。

Outputs:
  InstanceId:
    Value:
      Fn::GetAtt:
        - WebServer
        - InstanceId
  PublicIp & PrivateIp:
    Value:
      - Fn::GetAtt:
          - WebServer
          - PublicIp
      - Fn::GetAtt:
          - WebServer
          - PrivateIp

在以下示例中,根据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

在以下示例中,输出了Output Value所支持的多种数据类型(如列表、字典、函数、常量等),并加入了服务域名访问地址的Output示例。

ROSTemplateFormatVersion: '2015-09-01'
Metadata: {}
Parameters:
  DictObjectParameter:
    Default:
      k2: v2
      k1: v1
    Type: Json
  NumberParameter:
    Default: 3.14
    Type: Number
  StringParameter:
    Default: ecs.c1.large
    Type: String
  ArrayListParameter:
    Default:
      - xiaomi
      - xiaofeng
      - xiaoliang
    Type: Json
  EcsInstancePublicIp:
    Default: 1.1.X.X
    Type: String
Resources: {}
Outputs:
  Console.Url:
    Description: Console Url Demo Value
    Value:
      Fn::Sub:
        - http://${EcsPublicIp}/elasticsearch-demo
        - EcsPublicIp:
            Ref: EcsInstancePublicIp
  ArrayList:
    Description: ArrayList Output Value
    Value:
      Ref: ArrayListParameter
  DictObject:
    Description: DictObject Output Value
    Value:
      Ref: DictObjectParameter
  Number:
    Description: Number Output Value
    Value:
      Ref: NumberParameter
  String:
    Description: String Output Value
    Value:
      Ref: StringParameter

在以下示例中,输出了Output Value一次性输出多组WebServer URL的示例(多组URL通过逗号进行分隔)。

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  WebServerAddress:
    Type: String
    Default: 192.168.1.1
    Label:
      zh-cn: Web服务访问地址
      en: WebServerAddress
Outputs:
  WebServerAddress:
    Description:
      zh-cn: Web服务访问地址。
      en: Web Server url.
    Value:
      Fn::Sub:
        - http://${WebServerAddress}:80,http://${WebServerAddress}:8080,http://${WebServerAddress}:8881
        - WebServerAddress:
            Ref: WebServerAddress
  • 本页导读 (1)
  • 语法
  • 示例
AI助理

点击开启售前

在线咨询服务

你好,我是AI助理

可以解答问题、推荐解决方案等