Resource Orchestration Service (ROS) を使用して複数のリソースを管理するスタックを作成する際、パラメーター情報を検索するために複数のコンソールを開く必要がよくあります。このプロセスを簡素化するために、テンプレートのパラメーター設定で AssociationProperty を指定して、選択したリージョン内のリソースを取得できます。また、AssociationPropertyMetadata を指定して、異なるパラメーターにフィルター条件を追加することもできます。これにより、コンソールでパラメーター設定を動的に選択できるようになります。
パラメーターの説明
AssociationPropertyMetadata パラメーターには、以下の値を指定できます。
-
パラメーターに特定の値を指定できます。たとえば、
"RegionId": "cn-hangzhou"を指定すると、ROS はcn-hangzhouリージョンを使用します。 -
パラメーターに
${ParameterKey}形式の変数を指定できます。たとえば、"VpcId": "${VpcId}"を指定すると、ROS は現在のテンプレートからVpcIdパラメーターの値を動的に取得します。説明-
${ParameterKey}を静的フィールドとして指定するには、感嘆符 (!) を追加します。たとえば、${!Literal}は文字列リテラル${Literal}として評価されます。 -
Terraform テンプレートでパラメーター変数を使用するには、
$の前に$を追加します。たとえば、"VpcId": "$${VpcId}"を指定すると、ROS は Terraform テンプレートからVpcIdの値を動的に取得します。
-
必要な AssociationPropertyMetadata は、AssociationProperty で指定されたリソースタイプによって異なります。
-
カスタムリソース:Alibaba Cloud 製品 OpenAPI のパラメーターに基づくデータクエリなど、カスタムリソースを設定します。
-
基本リソース:一般的な基本パラメータータイプを設定します。
-
ACR リソース:Container Registry Personal Edition リソース。
-
APIG リソース:API Gateway リソース。
-
ALB リソース:Application Load Balancer リソース。
-
Bailian リソース:Model Studio リソース。
-
BSS リソース:User Center リソース。
-
CAS リソース:SSL Certificate リソース。
-
CEN リソース:Cloud Enterprise Network リソース。
-
CMS リソース:Cloud Monitor リソース。
-
CR リソース:Container Registry Enterprise Edition リソース。
-
CS リソース:Container Service for Kubernetes (ACK) リソース。
-
ComputeNest リソース:Compute Nest リソース。
-
ComputeNestSupplier リソース:Compute Nest supplier リソース。
-
DNS リソース:Alibaba Cloud DNS リソース。
-
DashVector リソース:DashVector Vector Retrieval Service リソース。
-
Domain リソース:Domain Names リソース。
-
EAS リソース:Machine Learning PAI-EAS リソース。
-
ECD リソース:Cloud Desktop リソース。
-
ECI リソース:Elastic Container Instance リソース。
-
ECS リソース:Elastic Compute Service (ECS) リソース。
-
EHPC リソース:Elastic High Performance Computing リソース。
-
ESS リソース:Auto Scaling リソース。
-
Elasticsearch リソース:Elasticsearch リソース。
-
Emr リソース:E-MapReduce リソース。
-
FC3 リソース:Function Compute (FC3) リソース。
-
FC リソース:Function Compute リソース。
-
Flow リソース:Logic Composer リソース。
-
Hologres リソース:Hologres リソース。
-
InfluxDB リソース:Time Series Database InfluxDB リソース。
-
Kafka リソース:Message Queue for Kafka リソース。
-
Lindorm リソース:Lindorm サービス内のリソース。
-
MongoDB リソース:ApsaraDB for MongoDB リソース。
-
NAS リソース:File Storage NAS リソース。
-
NLB リソース:Network Load Balancer (NLB) リソース。
-
OOS リソース:Operation Orchestration Service (OOS) リソース。
-
OSS リソース:Object Storage Service (OSS) リソース。
-
PolarDB リソース:PolarDB リソース。
-
RAM リソース:Resource Access Management (RAM) リソース。
-
RDS リソース:ApsaraDB RDS リソース。
-
Redis リソース:Redis リソース。
-
ResourceManager リソース:Resource Management リソース。
-
SAE リソース:Serverless App Engine (SAE) リソース。
-
SLB リソース:Server Load Balancer (SLB) リソース。
-
ServiceCatalog リソース:Service Catalog リソース。
-
Tag リソース:Tag リソース。
-
User リソース:User リソース。
-
VPC リソース:Virtual Private Cloud (VPC) リソース。
例
例 1: AssociationProperty の例
パラメーターで AssociationProperty を ALIYUN::ECS::Image::ImageId に設定すると、選択したリージョン内のすべてのイメージ ID を取得できます。
JSON の例:
{
"ROSTemplateFormatVersion": "2015-09-01",
"Parameters": {
"UserName": {
"Label": "Username",
"Description": "ユーザー名を入力します",
"Default": "anonymous",
"Type": "String",
"MinLength": "6",
"MaxLength": "12",
"AllowedValues": [
"anonymous",
"user-one",
"user-two"
]
},
"PassWord": {
"Label": "Password",
"NoEcho": "True",
"Description": "ユーザーパスワードを入力します",
"Type": "String",
"MinLength": "1",
"MaxLength": "41",
"AllowedPattern": "[a-zA-Z0-9]*"
},
"ImageId": {
"Label": "Image",
"Type": "String",
"Description": "イメージを選択します",
"AssociationProperty": "ALIYUN::ECS::Image::ImageId",
"Default": "centos_7_7_x64_20G_alibase_2020****.vhd"
}
}
}
YAML の例:
ROSTemplateFormatVersion: '2015-09-01'
Parameters:
UserName:
Label: Username
Description: ユーザー名を入力します
Default: anonymous
Type: String
MinLength: '6'
MaxLength: '12'
AllowedValues:
- anonymous
- user-one
- user-two
PassWord:
Label: Password
NoEcho: 'True'
Description: ユーザーパスワードを入力します
Type: String
MinLength: '1'
MaxLength: '41'
AllowedPattern: '[a-zA-Z0-9]*'
ImageId:
Label: Image
Type: String
Description: イメージを選択します
AssociationProperty: ALIYUN::ECS::Image::ImageId
Default: centos_7_7_x64_20G_alibase_2020****.vhd
パラメーターの説明:
-
UserName:ユーザー名。このパラメーターは、6~12文字の文字列である必要があります。有効な値:
-
anonymous (デフォルト)
-
user-one
-
user-two
-
-
PassWord:パスワード。このパラメーターは、1~41文字の文字列である必要があります。デフォルト値はありません。パスワードには、大文字、小文字、数字を含めることができます。
NoEchoがtrueに設定されている場合、スタックをクエリしてもパラメーター値は返されません。 -
ImageId:イメージ ID。文字列型。
AssociationPropertyがALIYUN::ECS::Image::ImageIdに設定されている場合、ROS コンソールはスタックの作成時に指定されたイメージ ID を検証します。また、コンソールでは、選択したリージョンで使用可能な他のイメージ ID がドロップダウンリストに表示されます。
例 2: AssociationPropertyMetadata の例
パラメーターで AssociationProperty とそれに対応する AssociationPropertyMetadata (RegionId、VpcId、ZoneId) を指定すると、特定の仮想プライベートクラウド (VPC) とゾーンに対応する vSwitch を取得できます。この例では、RegionId は静的フィールド cn-hangzhou に設定されています。VpcId と EcsZone は変数 ${VpcId} と ${EcsZone} に設定されています。これらの変数の値は、VpcId パラメーターと EcsZone パラメーターで選択された値に基づいて動的に更新されます。このプロセスにより、vSwitch が VPC とゾーンに関連付けられます。
AllowedValues が設定されている EcsZone などのパラメーターの場合、AssociationPropertyMetadata に AutoChangeType を追加し、その値を false に設定できます。この設定により、ROS コンソールに、AllowedValues が設定されたパラメーターがドロップダウンリストとして表示されます。
JSON の例:
{
"ROSTemplateFormatVersion": "2015-09-01",
"Parameters": {
"VpcId": {
"Type": "String",
"AssociationProperty": "ALIYUN::ECS::VPC::VPCId"
},
"EcsZone": {
"Type": "String",
"AllowedValues": [
"cn-hangzhou-i",
"cn-hangzhou-j",
"cn-hangzhou-k",
"cn-hangzhou-h"
],
"AssociationPropertyMetadata": {
"AutoChangeType": false
}
},
"VSwitchId": {
"Type": "String",
"AssociationProperty": "ALIYUN::VPC::VSwitch::VSwitchId",
"AssociationPropertyMetadata": {
"RegionId": "cn-hangzhou",
"VpcId": "${VpcId}",
"ZoneId": "${EcsZone}"
}
}
}
}
YAML の例:
ROSTemplateFormatVersion: '2015-09-01'
Parameters:
VpcId:
Type: String
AssociationProperty: ALIYUN::ECS::VPC::VPCId
EcsZone:
Type: String
AllowedValues:
- cn-hangzhou-i
- cn-hangzhou-j
- cn-hangzhou-k
- cn-hangzhou-h
AssociationPropertyMetadata:
AutoChangeType: false
VSwitchId:
Type: String
AssociationProperty: ALIYUN::VPC::VSwitch::VSwitchId
AssociationPropertyMetadata:
RegionId: cn-hangzhou
VpcId: ${VpcId}
ZoneId: ${EcsZone}
例 3: Terraform 自動変換の例
AssociationProperty が Auto に設定されている場合、ROS は元の Terraform データ構造に基づいて、「AssociationProperty」や「AssociationPropertyMetadata」などのフィールドを自動的に生成します。
その他の例
AssociationProperty と AssociationPropertyMetadata を使用して、次のこともできます。