數據源資源(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個值。