資料來源資源(DataSource)用於查詢雲端服務的資源資料。資料來源資源可以被其他資源引用,也可以在輸出(Outputs)中被引用。資料來源資源和普通資源除了作用不同,支援的功能(例如:引用、依賴、更新等)完全相同。
應用情境
- 將動態查詢結果作為建立資源的輸入
ROS根據指定的條件動態查詢結果,然後將此結果作為建立其他資源的輸入屬性。
- 在模板輸出中呈現資源詳情
在模板資源中建立資料來源資源後,在模板輸出中即可引用該資料來源資源,以呈現資源詳情。
將動態查詢結果作為建立資源的輸入
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個參數:
ZoneId
、VpcId
、VSwitchId
和SecurityGroupId
。每個參數都配置了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執行個體。
- 邏輯ID為
- 輸出(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詳情。
- 邏輯ID為
- 輸出(Outputs)中定義了1個輸出變數
VpcData
,取值為資料來源資源DS-Vpcs
的Vpcs
屬性值的第1個值。