全部產品
Search
文件中心

Resource Orchestration Service:資料來源資源

更新時間:Aug 24, 2023

資料來源資源(DataSource)用於查詢雲端服務的資源資料。資料來源資源可以被其他資源引用,也可以在輸出(Outputs)中被引用。資料來源資源和普通資源除了作用不同,支援的功能(例如:引用、依賴、更新等)完全相同。

應用情境

將動態查詢結果作為建立資源的輸入

ROS根據指定的條件動態查詢結果,然後將此結果作為建立其他資源的輸入屬性。

以下樣本模板中指定了多個參數,用於查詢參數取值列表,ROS將動態查詢結果作為建立ECS執行個體的輸入屬性。

  • CPU核心數和記憶體動態:用於查詢可用的ECS執行個體規格列表,ROS預設挑選清單中第一個規格建立ECS執行個體。
  • 鏡像名稱:用於動態查詢鏡像列表,ROS預設挑選清單中第一個鏡像ID建立ECS執行個體。
ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  ZoneId:
    Type: String
    AssociationProperty: ALIYUN::ECS::ZoneId
  VpcId:
    Type: String
    AssociationProperty: ALIYUN::ECS::VPC::VPCId
  VSwitchId:
    Type: String
    AssociationProperty: ALIYUN::ECS::VSwitch::VSwitchId
    AssociationPropertyMetadata:
      VpcId: ${VpcId}
      ZoneId: ${ZoneId}
  SecurityGroupId:
    Type: String
    AssociationProperty: ALIYUN::ECS::SecurityGroup::SecurityGroupId
    AssociationPropertyMetadata:
      VpcId: ${VpcId}
Resources:
  DS-RecommendInstanceTypes:
    Type: DATASOURCE::ECS::RecommendInstanceTypes
    Properties:
      Cores: 1
      Memory: 1
  DS-Images:
    Type: DATASOURCE::ECS::Images
    Properties:
      ImageName: CentOS8*
      InstanceType:
        Fn::Select:
          - 0
          - Ref: DS-RecommendInstanceTypes
  Instance:
    Type: ALIYUN::ECS::Instance
    Properties:
      InstanceName: MyInstance
      ImageId:
        Fn::Select:
          - 0
          - Ref: DS-Images
      InstanceType:
        Fn::Select:
          - 0
          - Ref: DS-RecommendInstanceTypes
      ZoneId:
        Ref: ZoneId
      VSwitchId:
        Ref: VSwitchId
      SecurityGroupId:
        Ref: SecurityGroupId
      SystemDiskCategory: cloud_efficiency
Outputs:
  InstanceId:
    Value:
      Ref: Instance

模板說明:

  • 參數(Parameters)中定義了4個參數:ZoneIdVpcIdVSwitchIdSecurityGroupId。每個參數都配置了AssociationProperty,以便在ROS控制台的參數選擇介面查詢參數的取值列表。
  • 資源(Resources)中定義了3個資源,包含2個資料來源資源和1個普通資源。
    • 邏輯ID為DS-RecommendInstanceTypes的資料來源資源根據指定的1核1 G的條件,查詢合格ECS執行個體規格。
    • 邏輯ID為DS-Images的資料來源資源使用{ "Fn::Select": [0, { "Ref": "DS-RecommendInstanceTypes" } }擷取ECS執行個體規格列表中的第1個規格作為InstanceType輸入,並指定鏡像名稱以CentOS開頭,查詢合格鏡像。
    • 邏輯ID為Instance的普通資源將ROS擷取到的執行個體規格和鏡像作為輸入,建立ECS執行個體。
  • 輸出(Outputs)中定義了1個輸出變數InstanceId

在模板輸出中呈現資源詳情

在模板資源中建立資料來源資源後,在模板輸出中即可引用該資料來源資源,以呈現資源詳情。

以下樣本模板中,建立VPC後,ROS將通過源資源查詢VPC的詳細資料,並在輸出中呈現VPC詳情。

ROSTemplateFormatVersion: '2015-09-01'
Resources:
  Vpc:
    Type: ALIYUN::ECS::VPC
    Properties:
      VpcName: MyVpc
      CidrBlock: 172.16.0.0/12
  DS-Vpcs:
    Type: DATASOURCE::VPC::Vpcs
    Properties:
      VpcIds:
        - Ref: Vpc
Outputs:
  VpcData:
    Value:
      Fn::Select:
        - 0
        - Fn::GetAtt:
            - DS-Vpcs
            - Vpcs

模板說明如下:

  • 資源(Resources)中定義了2個資源,包含1個普通資源和1個資料來源資源。
    • 邏輯ID為Vpc的普通資源指定VPC名稱和網段,用於建立1個VPC。
    • 邏輯ID為DS-Vpcs的資料來源資源將已建立的VPC ID作為輸入,查詢VPC詳情。
  • 輸出(Outputs)中定義了1個輸出變數VpcData,取值為資料來源資源DS-VpcsVpcs屬性值的第1個值。