全部產品
Search
文件中心

Resource Orchestration Service:如何在模板中引用資料來源資源(DataSource)輸出變數

更新時間:Jun 19, 2024

資料來源資源(DataSource)用於查詢雲端服務資源資料。資料來源資源輸出屬性有兩種類型,一種是查詢結果為單個資源,另一種是查詢結果為多個資源,其中多個資源以列表的結果輸出。本文為你介紹如何在模板中引用資料來源資源(DataSource)輸出變數。

查詢結果為單個資源

查詢單個RDS執行個體(DATASOURCE::RDS::DBInstance),擷取RDS執行個體的內網串連連接埠Port,並為其申請一條外網串連地址為例。

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  DBInstanceId:
    Type: String
    AssociationProperty: ALIYUN::RDS::Instance::InstanceId
Resources:
  ExtensionDataSource:
    Properties:
      DBInstanceId:
        Ref: DBInstanceId
    Type: DATASOURCE::RDS::DBInstance
  Connection:
    Type: ALIYUN::RDS::Connection
    Properties:
      DBInstanceId:
        Ref: DBInstanceId
      ConnectionStringPrefix: test1
      Port:
        Fn::GetAtt:
          - ExtensionDataSource
          - Port
Outputs:
  Port:
    Description: The port that is used to connect to the instance over an internal network.
    Value:
      Fn::GetAtt:
        - ExtensionDataSource
        - Port
  ConnectionString:
    Description: Connection string
    Value:
      Fn::GetAtt:
        - Connection
        - ConnectionString

查詢結果為多個資源

查詢已建立的交換器(DATASOURCE::VPC::VSwitches),並為查詢到的交換器的CidrBlock建立安全性群組入方向的訪問規則。其中使用內建函式Fn::Jq用於擷取輸出結果vSwitches中第一個交換器的CidrBlock,Jq功能詳情請參見Jq文檔

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  VpcId:
    Type: String
    AssociationProperty: ALIYUN::ECS::VPC::VPCId
    Description: Please search the ID starts with (vpc-xxx)from console-Virtual Private Cloud
    Label: Existing VPC Instance ID
  SecurityGroupId:
    Type: String
    AssociationProperty: ALIYUN::ECS::SecurityGroup::SecurityGroupId
    AssociationPropertyMetadata:
      VpcId: ${VpcId}
    Default: ''
Resources:
  ExtensionDataSource:
    Type: DATASOURCE::VPC::VSwitches
    Properties:
      VpcId:
        Ref: VpcId
  SecurityGroupIngress:
    Type: ALIYUN::ECS::SecurityGroupIngress
    Properties:
      IpProtocol: all
      SecurityGroupId:
        Ref: SecurityGroupId
      NicType: intranet
      SourceCidrIp:
        Fn::Jq:
          - First
          - .[0].CidrBlock
          - Fn::GetAtt:
              - ExtensionDataSource
              - VSwitches
      PortRange: '-1/-1'
Outputs:
  CidrBlock:
    Description: Cidr Block.
    Value:
      Fn::Jq:
        - First
        - .[0].CidrBlock
        - Fn::GetAtt:
            - ExtensionDataSource
            - VSwitches