Resource Orchestration Service (ROS) は、Alibaba Cloud サービスのリソースデータをクエリするためのデータソースリソース (DataSource リソースとも呼ばれます) を提供します。 データソースリソースは、通常のリソースおよび出力で参照できます。 データソースリソースと通常のリソースは、参照、依存関係、更新など、同じ機能を提供しますが、異なるビジネスシナリオに適用されます。
ビジネスシナリオ
ROS は、指定された条件に基づいてデータソースリソースの値をクエリし、クエリされた値を入力プロパティ値として使用して通常のリソースを作成します。
テンプレートの「リソース」セクションでデータソースリソースを指定した後、テンプレートの「出力」セクションでそれを参照できます。 このようにして、ROS コンソールは [出力] タブにリソースの詳細を表示します。
クエリされた値を入力として使用してリソースを作成する
ROS は、指定された条件に基づいてデータソースリソースの値をクエリし、クエリされた値を入力プロパティ値として使用して通常のリソースを作成します。
次のテンプレートを使用して、複数のパラメーターを条件として指定し、データソースリソースの値をクエリし、クエリされた値を入力プロパティ値として使用して Elastic Compute Service (ECS) インスタンスを作成できます。
コア数とメモリ: vCPU の数とメモリサイズを個別に指定する条件。 ROS はこれらの条件を使用して使用可能な ECS インスタンスタイプをクエリし、デフォルトでは最初のインスタンスタイプを使用して 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テンプレート内の構成:
ZoneId、VpcId、VSwitchId、SecurityGroupIdの各パラメーターが [パラメーター] セクションで指定されています。 各パラメーターはAssociationPropertyで構成されています。 このようにして、ROS はコンソールの [テンプレートパラメーターの構成] セクションで選択できるパラメーター値のリストを表示します。以下のデータソースリソースと通常のリソースが [リソース] セクションで指定されています。
DS-RecommendInstanceTypes: データソースリソースの論理 ID。 ROS は 1 vCPU と 1 GB のメモリを条件として使用して、使用可能な ECS インスタンスタイプをクエリします。DS-Images: データソースリソースの論理 ID。 ROS は InstanceType プロパティと ImageName プロパティを条件として使用して、使用可能なイメージをクエリします。InstanceTypeプロパティは{ "Fn::Select": [0, { "Ref": "DS-RecommendInstanceTypes" } }に設定されており、使用可能な ECS インスタンスタイプの中から最初の ECS インスタンスタイプを使用します。 ImageName プロパティは、CentOS で始まる値に設定されています。Instance: 通常のリソースの論理 ID。 ROS は、最初にクエリされたインスタンスタイプとイメージ ID を入力プロパティ値として使用して ECS インスタンスを作成します。
InstanceIdプロパティが [出力] セクションで指定されています。
出力タブにリソースの詳細を表示する
テンプレートの「リソース」セクションでデータソースリソースを指定した後、テンプレートの「出力」セクションでそれを参照できます。 このようにして、ROS コンソールは [出力] タブにリソースの詳細を表示します。
次のテンプレートを使用して Virtual Private Cloud (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テンプレート内の構成:
通常のリソースとデータソースリソースが [リソース] セクションで指定されています。
Vpc: 通常のリソースの論理 ID。 VpcName プロパティと CidrBlock プロパティは、VPC を作成するために Vpc リソースで指定されています。DS-Vpcs: データソースリソースの論理 ID。 ROS は、Vpc リソースに対応する VPC ID を入力プロパティ値として使用して VPC の詳細をクエリします。
DS-VpcsとVpcsがVpcData出力で指定されており、Vpcsの最初の値を使用します。