All Products
Search
Document Center

Resource Orchestration Service:Query the constraints of parameters

Last Updated:Jun 01, 2023

You can obtain the values of parameters that are defined in a template by querying the constraints of the parameters.

Background information

When you use AssociationProperty and AssociationPropertyMetadata to filter parameters, the filtered parameters may not meet your requirements in specific scenarios.

For example, the ZoneId parameter is used for multiple Alibaba Cloud services, but the values of the ZoneId parameter vary based on the Alibaba Cloud services. In this case, you can obtain the value of the ZoneId parameter defined in your template by querying the constraint of the ZoneId parameter.

Supported parameters

You can call the GetTemplateParameterConstraints operation instead of adding the relevant parameter to a template to query the values of parameters that are defined in the template.

Note

The template whose parameter constraints you want to query must contain the Parameters section.

The following table describes the parameters of which the constraints you can query.

Resource type

Parameter

Description

ALIYUN::CS::KubernetesCluster

  • MasterInstanceTypes

  • MasterSystemDiskCategory

  • WorkerInstanceTypes

  • WorkerSystemDiskCategory

  • WorkerVSwitchIds

  • PodVswitchIds

  • KubernetesVersion

  • PeriodUnit

  • WorkerZoneIds

  • Period

  • MasterZoneIds

  • ScalingGroup.InstanceTypes in NodePools

  • Category in ScalingGroup.DataDisks of NodePools

  • ScalingGroup.ZoneIds in NodePools

  • ScalingGroup.SystemDiskCategory in NodePools

  • Category in MasterDataDisks

  • Category in WorkerDataDisks

None

ALIYUN::CS::ManagedKubernetesCluster

  • WorkerInstanceTypes

  • WorkerSystemDiskCategory

  • VSwitchIds

  • PodVswitchIds

  • KubernetesVersion

  • PeriodUnit

  • Period

  • ZoneIds

  • ScalingGroup.ZoneIds in NodePools

  • ScalingGroup.InstanceTypes in NodePools

  • Category in ScalingGroup.DataDisks of NodePools

  • Category in WorkerDataDisks

  • ScalingGroup.SystemDiskCategory in NodePools

None

ALIYUN::CS::ManagedEdgeKubernetesCluster

  • WorkerInstanceTypes

  • PeriodUnit

  • Period

  • ZoneIds

  • VSwitchIds

  • WorkerSystemDiskCategory

  • WorkerDataDiskCategory

None

ALIYUN::ECS::Instance

  • ZoneId

  • PeriodUnit

  • InstanceType

  • Period

  • SystemDiskCategory

  • Category in DiskMappings

None

ALIYUN::ECS::InstanceGroup

  • ZoneId

  • PeriodUnit

  • InstanceType

  • Period

  • SystemDiskCategory

  • Category in DiskMappings

None

ALIYUN::ECS::VSwitch

  • ZoneId

  • Period

  • PeriodType

None

ALIYUN::RDS::DBInstance

  • ZoneId

  • Period

  • PeriodType

  • EngineVersion

  • Category

  • DBInstanceStorageType

  • DBInstanceClass

Note
  • To ensure that the verification is complete, we recommend that you specify ZoneId, DBInstanceStorageType, and Category.

  • To ensure that the verification is complete, we recommend that you set MultiAZ to false.

  • To ensure that the verification is complete, we recommend that you place the parameters related to the Engine property of ApsaraDB RDS before the parameters related to other ApsaraDB RDS properties when you use Metadata to specify the order of parameters.

ALIYUN::RDS::PrepayDBInstance

  • ZoneId

  • EngineVersion

  • Category

  • DBInstanceStorageType

  • DBInstanceClass

  • Period

  • PeriodType

Note
  • To ensure that the verification is complete, we recommend that you specify ZoneId, DBInstanceStorageType, and Category.

  • To ensure that the verification is complete, we recommend that you set MultiAZ to false.

  • To ensure that the verification is complete, we recommend that you place the parameters related to the Engine property of ApsaraDB RDS before the parameters related to other ApsaraDB RDS properties when you use Metadata to specify the order of parameters.

ALIYUN::POLARDB::DBCluster

  • ZoneId

  • Duration

  • PricingCycle

  • DBNodeClass

None

ALIYUN::REDIS::Instance

  • ZoneId

  • EngineVersion

  • InstanceClass

  • PeriodUnit

  • Period

None

ALIYUN::REDIS::PrepayInstance

  • ZoneId

  • Period

  • PeriodUnit

  • EngineVersion

  • InstanceClass

None

ALIYUN::VPC::NatGateway

  • ZoneId

  • Duration

  • PricingCycle

None

ALIYUN::ADB::DBCluster

  • ZoneId

None

ALIYUN::GPDB::DBInstance

  • ZoneId

  • PeriodUnit

  • Period

None

ALIYUN::GPDB::ElasticDBInstance

  • ZoneId

  • EngineVersion

  • InstanceSpec

  • DBInstanceCategory

  • SegStorageType

None

ALIYUN::ALB::LoadBalancer

  • ZoneId in ZoneMappings

None

ALIYUN::ElasticSearch::Instance

  • PeriodUnit

  • ZoneId

  • Period

  • Spec in DataNode

  • Spec in MasterNode

  • Spec in KibanaNode

You can query specifications only by zone.

ALIYUN::SLB::LoadBalancer

  • MasterZoneId

  • SlaveZoneId

  • Duration

  • PricingCycle

None

ALIYUN::TSDB::HiTSDBInstance

  • InstanceClass

  • ZoneId

  • Duration

  • PricingCycle

None

ALIYUN::DTS::SynchronizationJob

  • Period

  • UsedTime

None

ALIYUN::MONGODB::Instance

  • StorageType

  • DBInstanceClass

  • EngineVersion

  • ZoneId

None

ALIYUN::GA::BandwidthPackage

  • PricingCycle

  • Duration

None

ALIYUN::MONGODB::ServerlessInstance

  • StorageType

  • DBInstanceClass

  • EngineVersion

  • ZoneId

None

ALIYUN::RDS::DBInstanceClone

  • PeriodType

  • Period

  • Category

  • EngineVersion

  • PeriodType

  • DBInstanceClass

  • DBInstanceStorageType

  • Period

  • ZoneId

Note
  • To ensure that the verification is complete, we recommend that you specify ZoneId, DBInstanceStorageType, and Category.

  • To ensure that the verification is complete, we recommend that you set MultiAZ to false.

  • To ensure that the verification is complete, we recommend that you place the parameters related to the Engine property of ApsaraDB RDS before the parameters related to other ApsaraDB RDS properties when you use Metadata to specify the order of parameters.

ALIYUN::VPC::EIP

  • PricingCycle

  • Period

None

ALIYUN::NAS::FileSystem

  • ProtocolType

  • StorageType

  • ZoneId

None

ALIYUN::VPC::RouterInterface

  • PricingCycle

  • Period

None

ALIYUN::ECS::Disk

  • DiskCategory

  • ZoneId

None

ALIYUN::EHPC::Cluster

  • PeriodUnit

  • Period

  • EcsOrderManagerInstanceType

  • EcsOrderComputeInstanceType

  • EcsOrderLoginInstanceType

  • SystemDiskType

  • ZoneId

None

ALIYUN::ApiGateway::Instance

  • PricingCycle

  • Duration

None

ALIYUN::AMQP::Instance

  • PeriodUnit

  • Period

None

ALIYUN::PrivateLink::VpcEndpointService

  • ZoneId in Resource

None

ALIYUN::GA::Accelerator

  • PricingCycle

  • Duration

None

ALIYUN::CS::ClusterNodePool

  • PeriodUnit in ScalingGroup

  • Period in ScalingGroup

  • InstanceTypes in ScalingGroup

  • ZoneIds in ScalingGroup

  • Category in ScalingGroup.DataDisks

  • SystemDiskCategory in ScalingGroup

None

ALIYUN::CS::ServerlessKubernetesCluster

  • PeriodUnit

  • Period

  • KubernetesVersion

None

ALIYUN::GWS::Instance

  • PeriodUnit

  • Period

None

ALIYUN::MONGODB::PrepayInstance

  • StorageType

  • DBInstanceClass

  • EngineVersion

  • ZoneId

None

ALIYUN::Flink::Instance

  • PricingCycle

  • Duration

  • ZoneId

None

ALIYUN::ECS::InstanceGroupClone

  • PeriodUnit

  • Period

  • SystemDiskCategory

  • Category in DiskMappings

  • PeriodUnit

  • Period

  • InstanceType

  • ZoneId

None

ALIYUN::RDS::ReadOnlyDBInstance

  • PeriodType

  • Period

  • Category

  • DBInstanceClass

  • EngineVersion

  • DBInstanceStorageType

  • ZoneId

Note
  • To ensure that the verification is complete, we recommend that you specify ZoneId, DBInstanceStorageType, and Category.

  • To ensure that the verification is complete, we recommend that you set MultiAZ to false.

  • To ensure that the verification is complete, we recommend that you place the parameters related to the Engine property of ApsaraDB RDS before the parameters related to other ApsaraDB RDS properties when you use Metadata to specify the order of parameters.

ALIYUN::EMR::Cluster

  • DiskType in HostGroup

  • NetType

  • SysDiskType in HostGroup

  • InstanceType in HostGroup

  • ZoneId

None

ALIYUN::CloudPhone::InstanceGroup

  • PeriodUnit

  • Period

None

ALIYUN::ECS::PrepayInstance

  • PeriodUnit

  • Period

  • SystemDiskCategory

  • Category in DiskMappings

  • PeriodUnit

  • Period

  • InstanceType

  • ZoneId

None

ALIYUN::MONGODB::ShardingInstance

  • StorageType

  • DBInstanceClass

  • EngineVersion

  • ZoneId

None

ALIYUN::CS::AnyCluster

  • PeriodUnit

  • Period

  • MasterInstanceTypes

  • WorkerZoneIds

  • PodVswitchIds

  • WorkerSystemDiskCategory

  • MasterZoneIds

  • WorkerVSwitchIds

  • KubernetesVersion

  • WorkerInstanceTypes

  • ScalingGroup.SystemDiskCategory in NodePools

  • ScalingGroup.ZoneIds in NodePools

  • ScalingGroup.InstanceTypes in NodePools

  • MasterSystemDiskCategory

  • Category in WorkerDataDisks

  • Category in MasterDataDisks

  • Category in ScalingGroup.DataDisks of NodePools

None

ALIYUN::CDDC::DedicatedHost

  • Period

  • UsedTime

None

ALIYUN::ECS::DedicatedHost

  • PeriodUnit

  • Period

None

ALIYUN::SLB::AnyTunnel

  • PricingCycle

  • Duration

  • MasterZoneId

  • SlaveZoneId

None

ALIYUN::VPC::EIPPro

  • PricingCycle

  • Period

None

ALIYUN::ECD::Desktops

  • PeriodUnit

  • Period

None

ALIYUN::DRDS::DrdsInstance

  • PricingCycle

  • Duration

None

ALIYUN::DTS::SubscriptionInstance

  • Period

  • UsedTime

None

ALIYUN::ClickHouse::DBCluster

  • Period

  • ZoneId

  • UsedTime

None

ALIYUN::ECS::PrepayInstanceGroupClone

  • PeriodUnit

  • Period

  • SystemDiskCategory

  • Category in DiskMappings

  • PeriodUnit

  • Period

  • InstanceType

  • ZoneId

None

ALIYUN::CEN::CenBandwidthPackage

  • PricingCycle

  • Period

None

Dependencies between parameters

When you use a template to create Elastic Compute Service (ECS) resources in Resource Orchestration Service (ROS), you must specify parameters such as ZoneInfo and InstanceType.

The supported ECS instance types vary based on zones. Therefore, a specific value of the InstanceType parameter may become unavailable after you specify the ZoneInfo parameter.

If you want to use only a specific value of the InstanceType parameter, you can use the Metadata section to configure the dependencies between parameters.

Note

For more information about the Metadata section, see 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
          - ZoneInfo

Parameter constraint query for a Terraform template

You can add ResourcesForParameterConstraints to ALIYUN::ROS::Interface in the Metadata section or the .metadata file to configure the constraints of parameters.

You must define the resources relevant to the parameter constraints and specify the resource properties. For more information about the syntax of ResourcesForParameterConstraints, see Resources.

When you query the parameter constraints, the Mappings (optional), Conditions (optional), and Rules (optional) sections defined in the template automatically take effect.

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
    }

In the preceding Terraform template, four resources are defined. Constraints are configured for the zone_id and instance_type parameters, and the parameters are associated with alicloud_instance.

In ResourcesForParameterConstraints, only the ALIYUN::ECS::Instance resource type of ROS that corresponds to alicloud_instance is defined. The resource type is associated with the image_id, instance_type, and zone_id parameters to configure constraints for these parameters. In this example, the image_id parameter is hidden.