Gunakan fitur kueri batasan parameter untuk mendapatkan nilai parameter yang didefinisikan dalam template.
Informasi latar belakang
Saat menggunakan AssociationProperty dan AssociationPropertyMetadata untuk menyaring parameter, hasil penyaringan mungkin tidak memenuhi kebutuhan Anda dalam skenario tertentu.
Sebagai contoh, parameter ZoneId didukung oleh beberapa layanan Alibaba Cloud, tetapi nilai validnya berbeda antar layanan. Dalam hal ini, Anda dapat menjalankan kueri batasan parameter untuk mendapatkan nilai ZoneId yang didefinisikan dalam template Anda.
Properti yang didukung
Jika properti dari tipe sumber daya dirujuk oleh parameter menggunakan fungsi Ref, Anda dapat memanggil operasi GetTemplateParameterConstraints untuk mendapatkan nilai properti tersebut. Tabel berikut mencantumkan semua properti yang mendukung fitur kueri batasan parameter beserta tipe sumber dayanya.
Anda juga dapat memanggil operasi GetFeatureDetails untuk mendapatkan tipe sumber daya yang propertinya mendukung fitur kueri batasan parameter.
Template tempat Anda ingin menanyakan batasan parameter harus mencakup bagian Parameters.
Tipe sumber daya | Properti | Deskripsi |
ALIYUN::ADB::DBCluster |
| Tidak ada. |
ALIYUN::ALB::LoadBalancer |
| Tidak ada. |
ALIYUN::AMQP::Instance |
| Tidak ada. |
ALIYUN::ApiGateway::Instance |
| Tidak ada. |
ALIYUN::CDDC::DedicatedHost |
| Tidak ada. |
ALIYUN::CEN::CenBandwidthPackage |
| Tidak ada. |
ALIYUN::ClickHouse::DBCluster |
| Tidak ada. |
ALIYUN::CloudPhone::InstanceGroup |
| Tidak ada. |
ALIYUN::CS::AnyCluster |
| Tidak ada. |
ALIYUN::CS::ClusterNodePool |
| Tidak ada. |
ALIYUN::CS::KubernetesCluster |
| Tidak ada. |
ALIYUN::CS::ManagedEdgeKubernetesCluster |
| Tidak ada. |
ALIYUN::CS::ManagedKubernetesCluster |
| Tidak ada. |
ALIYUN::CS::ServerlessKubernetesCluster |
| Tidak ada. |
ALIYUN::DRDS::DrdsInstance |
| Tidak ada. |
ALIYUN::DTS::SubscriptionInstance |
| Tidak ada. |
ALIYUN::DTS::SynchronizationJob |
| Tidak ada. |
ALIYUN::ECD::Desktops |
| Tidak ada. |
ALIYUN::ECS::DedicatedHost |
| Tidak ada. |
ALIYUN::ECS::Disk |
| Tidak ada. |
ALIYUN::ECS::Instance |
| Tidak ada. |
ALIYUN::ECS::InstanceGroup |
| Tidak ada. |
ALIYUN::ECS::InstanceGroupClone |
| Tidak ada. |
ALIYUN::ECS::PrepayInstance |
| Tidak ada. |
ALIYUN::ECS::PrepayInstanceGroupClone |
| Tidak ada. |
ALIYUN::ECS::VSwitch |
| Tidak ada. |
ALIYUN::EHPC::Cluster |
| Tidak ada. |
ALIYUN::ElasticSearch::Instance |
| Anda hanya dapat menanyakan spesifikasi berdasarkan zona. |
ALIYUN::EMR::Cluster |
| Tidak ada. |
ALIYUN::Flink::Instance |
| Tidak ada. |
ALIYUN::GA::Accelerator |
| Tidak ada. |
ALIYUN::GA::BandwidthPackage |
| Tidak ada. |
ALIYUN::GPDB::DBInstance |
| Tidak ada. |
ALIYUN::GPDB::ElasticDBInstance |
| Tidak ada. |
ALIYUN::GWS::Instance |
| Tidak ada. |
ALIYUN::MONGODB::Instance |
| Tidak ada. |
ALIYUN::MONGODB::PrepayInstance |
| Tidak ada. |
ALIYUN::MONGODB::ServerlessInstance |
| Tidak ada. |
ALIYUN::MONGODB::ShardingInstance |
| Tidak ada. |
ALIYUN::NAS::FileSystem |
| Tidak ada. |
ALIYUN::POLARDB::DBCluster |
| Tidak ada. |
ALIYUN::PrivateLink::VpcEndpointService |
| Tidak ada. |
ALIYUN::RDS::DBInstance |
| Catatan
|
ALIYUN::RDS::DBInstanceClone |
| Catatan
|
ALIYUN::RDS::PrepayDBInstance |
| Catatan
|
ALIYUN::RDS::ReadOnlyDBInstance |
| Catatan
|
ALIYUN::REDIS::Instance |
| Tidak ada. |
ALIYUN::REDIS::PrepayInstance |
| Tidak ada. |
ALIYUN::SLB::AnyTunnel |
| Tidak ada. |
ALIYUN::SLB::LoadBalancer |
| Tidak ada. |
ALIYUN::TSDB::HiTSDBInstance |
| Tidak ada. |
ALIYUN::VPC::EIP |
| Tidak ada. |
ALIYUN::VPC::EIPPro |
| Tidak ada. |
ALIYUN::VPC::NatGateway |
| Tidak ada. |
ALIYUN::VPC::RouterInterface |
| Tidak ada. |
Hubungan ketergantungan antar parameter
Saat menggunakan template untuk membuat sumber daya Elastic Compute Service (ECS) di Resource Orchestration Service (ROS), Anda perlu menentukan parameter seperti ZoneInfo dan InstanceType.
Tipe instance ECS yang didukung bervariasi berdasarkan zona. Oleh karena itu, nilai tertentu dari parameter InstanceType mungkin menjadi tidak tersedia setelah menentukan parameter ZoneInfo.
Jika Anda hanya ingin menggunakan nilai tertentu dari parameter InstanceType, Anda dapat mengonfigurasi hubungan ketergantungan antara InstanceType dan ZoneInfo melalui bagian Metadata.
Untuk informasi lebih lanjut, lihat Metadata.
ROSTemplateFormatVersion: '2015-09-01'
Parameters:
ZoneInfo:
Type: String
InstanceType:
Type: String
Resources:
ECS:
Type: ALIYUN::ECS::Instance
Properties:
ZoneId:
Ref: ZoneInfo
InstanceType:
Ref: InstanceType
ImageId: ubuntu
Metadata:
ALIYUN::ROS::Interface:
ParameterGroups:
- Parameters:
- InstanceType
- ZoneInfoKonfigurasi manual kueri batasan parameter untuk template Terraform
Tambahkan ResourcesForParameterConstraints ke ALIYUN::ROS::Interface di bagian Metadata atau file .metadata untuk mengonfigurasi batasan parameter.
Definisikan sumber daya yang relevan dengan batasan parameter dan tentukan propertinya. Untuk detail sintaks ResourcesForParameterConstraints, lihat Resources.
Konfigurasi bagian Mappings, Conditions, dan Rules yang didefinisikan dalam template secara otomatis berlaku selama kueri batasan parameter. Untuk informasi lebih lanjut, lihat (Opsional) Mappings, (Opsional) Conditions, dan (Opsional) Rules.
ROSTemplateFormatVersion: '2015-09-01'
Transform: Aliyun::Terraform-v1.1
Workspace:
.metadata: |-
{
"ALIYUN::ROS::Interface": {
"ResourcesForParameterConstraints": {
"instance": {
"Type": "ALIYUN::ECS::Instance",
"Properties": {
"ImageId": {
"Ref": "image_id"
},
"InstanceType": {
"Ref": "instance_type"
},
"ZoneId": {
"Ref": "zone_id"
}
}
}
},
"Hidden": [
"image_id"
]
}
}
main.tf: |-
variable "image_id" {
type = string
default = "ubuntu_18_04_64_20G_alibase_2019****.vhd"
}
variable "instance_type" {
type = string
}
variable "zone_id" {
type = string
}
resource "alicloud_vpc" "vpc" {
cidr_block = "172.16.X.X/16"
}
resource "alicloud_security_group" "group" {
vpc_id = alicloud_vpc.vpc.id
}
resource "alicloud_vswitch" "vswitch" {
vpc_id = alicloud_vpc.vpc.id
cidr_block = "172.16.X.X/24"
zone_id = var.zone_id
}
resource "alicloud_instance" "instance" {
availability_zone = var.zone_id
security_groups = [alicloud_security_group.group.id]
instance_type = var.instance_type
image_id = var.image_id
vswitch_id = alicloud_vswitch.vswitch.id
}Pada template Terraform di atas, empat sumber daya didefinisikan. Batasan dikonfigurasi untuk parameter zone_id dan instance_type, serta parameter tersebut dihubungkan dengan alicloud_instance.
Di ResourcesForParameterConstraints, hanya tipe sumber daya ALIYUN::ECS::Instance dari ROS yang sesuai dengan alicloud_instance yang didefinisikan. Tipe sumber daya ini dihubungkan dengan parameter image_id, instance_type, dan zone_id untuk mengonfigurasi batasan. Dalam contoh ini, parameter image_id disembunyikan.