数据源资源(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个值。