Todos los productos
Search
Centro de documentos

Resource Orchestration Service:AssociationProperty and AssociationPropertyMetadata

Última actualización: Sep 04, 2026

En una plantilla de Resource Orchestration Service (ROS), AssociationProperty recupera los recursos disponibles en la región seleccionada, mientras que AssociationPropertyMetadata agrega condiciones de filtro para los parámetros. En conjunto, permiten seleccionar valores de parámetros de forma dinámica en la consola sin necesidad de alternar entre varias consolas.

Descripción de parámetros

El parámetro AssociationPropertyMetadata acepta los siguientes valores:

  • Es posible especificar un valor concreto para el parámetro. Por ejemplo, si se establece "RegionId": "cn-hangzhou", ROS utiliza la región cn-hangzhou.

  • También se puede asignar una variable al parámetro con el formato ${ParameterKey}. Por ejemplo, al definir "VpcId": "${VpcId}", ROS obtiene dinámicamente el valor del parámetro VpcId de la plantilla actual.

    Nota
    • Para usar ${ParameterKey} como campo estático, agregue un signo de exclamación (!). Por ejemplo, ${!Literal} se evalúa como la cadena literal ${Literal}.

    • Para utilizar una variable de parámetro en una plantilla de terraform, anteponga un símbolo $ antes del símbolo $. Por ejemplo, si se define "VpcId": "$${VpcId}", ROS recupera dinámicamente el valor de VpcId desde la plantilla de terraform.

Los metadatos obligatorios de AssociationPropertyMetadata varían según el tipo de recurso indicado en AssociationProperty.

Ejemplos

Ejemplo 1: Uso de AssociationProperty

Establezca AssociationProperty en ALIYUN::ECS::Image::ImageId para recuperar todos los ID de imagen en la región seleccionada.

Ejemplo en JSON:

{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Parameters": {
    "UserName": {
      "Label": "Username",
      "Description": "Enter a username",
      "Default": "anonymous",
      "Type": "String",
      "MinLength": "6",
      "MaxLength": "12",
      "AllowedValues": [
        "anonymous",
        "user-one",
        "user-two"
      ]
    },
    "PassWord": {
      "Label": "Password",
      "NoEcho": "True",
      "Description": "Enter a user password",
      "Type": "String",
      "MinLength": "1",
      "MaxLength": "41",
      "AllowedPattern": "[a-zA-Z0-9]*"
    },
    "ImageId": {
      "Label": "Image",
      "Type": "String",
      "Description": "Select an image",
      "AssociationProperty": "ALIYUN::ECS::Image::ImageId",
      "Default": "centos_7_7_x64_20G_alibase_2020****.vhd"
    }
  }
}

Ejemplo en YAML:

ROSTemplateFormatVersion: '2015-09-01'
Parameters:
  UserName:
    Label: Username
    Description: Enter a username
    Default: anonymous
    Type: String
    MinLength: '6'
    MaxLength: '12'
    AllowedValues:
      - anonymous
      - user-one
      - user-two
  PassWord:
    Label: Password
    NoEcho: 'True'
    Description: Enter a user password
    Type: String
    MinLength: '1'
    MaxLength: '41'
    AllowedPattern: '[a-zA-Z0-9]*'
  ImageId:
    Label: Image
    Type: String
    Description: Select an image
    AssociationProperty: ALIYUN::ECS::Image::ImageId
    Default: centos_7_7_x64_20G_alibase_2020****.vhd

Descripción de parámetros:

  • UserName: Nombre de usuario. Este parámetro es una cadena que debe tener entre 6 y 12 caracteres. Valores válidos:

    • anonymous (predeterminado)

    • user-one

    • user-two

  • PassWord: Contraseña. Este parámetro es una cadena de 1 a 41 caracteres que admite letras mayúsculas, minúsculas y dígitos. No tiene valor predeterminado.

    Si NoEcho se establece en true, el valor del parámetro no se devuelve al consultar la pila.

  • ImageId: ID de la imagen. Tipo cadena.

    Cuando AssociationProperty se configura como ALIYUN::ECS::Image::ImageId, la consola de ROS valida el ID de imagen especificado durante la creación de la pila y muestra otros ID de imagen disponibles en la región seleccionada mediante una lista desplegable.

Ejemplo 2: Uso de AssociationPropertyMetadata

Defina AssociationProperty junto con su AssociationPropertyMetadata correspondiente (RegionId, VpcId y ZoneId) para obtener el vSwitch de una virtual private cloud (VPC) y zona específicas. En este caso, RegionId se fija al campo estático cn-hangzhou, mientras que VpcId y ZoneId emplean las variables ${VpcId} y ${EcsZone}. Dichas variables se actualizan de manera dinámica según los valores seleccionados para ALIYUN::ECS::VPC::VPCId y ZoneId, lo que vincula el vSwitch con la VPC y la zona elegidas.

Nota

Para parámetros como EcsZone que tienen configurado AllowedValues, agregue AutoChangeType a AssociationPropertyMetadata y establézcalo en false. Esto permite que los valores permitidos aparezcan como una lista desplegable en la consola de ROS.

Ejemplo en 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}"
      }
    }
  }
}

Ejemplo en 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}

Ejemplo 3: Transformación automática de terraform

Si AssociationProperty se establece en Auto, ROS genera automáticamente los campos AssociationProperty y AssociationPropertyMetadata a partir de la estructura de datos original de terraform.

  • Código completo de la plantilla de ejemplo

    variable "user_information" {
      type = object({
        name    = string
        address = string
      })
      description = <<EOT
      {
        "AssociationProperty": "Auto",
        "AssociationPropertyMetadata": {
          "Overwrite": {
            "name": {
              "Label": {
                "zh-cn": "Name",
                "en": "Name"
              }
            }
          }
        }
      }
      EOT
    }
    
    variable "region_ids" {
      type    = list(string)
      description = <<EOT
      {
        "AssociationProperty": "Auto",
        "AssociationPropertyMetadata": {
          "Overwrite": {
            "*": {
              "AssociationProperty": "ALIYUN::ECS::RegionId"
            }
          }
        }
      }
      EOT
    }
    
    variable "docker_ports" {
      type = list(object({
        internal = number
        external = number
        protocol = string
      }))
      description = <<EOT
      {
        "AssociationProperty": "Auto",
        "AssociationPropertyMetadata": {
          "Overwrite": {
            "protocol": {
              "AllowedValues": ["TCP", "UDP", "ICMP"]
            },
            "internal": {
              "Label": {
                "zh-cn": "Internal Port",
                "en": "Internal Port"
              }
            }
          }
        }
      }
      EOT
    }
    
    variable "complex_type_demo" {
      type = list(object({
        b = list(string)
        c = list(object({
          d = list(string)
        }))
        e = list(list(string))
        f = list(list(object({
          g = list(string)
        })))
      }))
      description = <<EOT
      {
        "AssociationProperty": "Auto",
        "AssociationPropertyMetadata": {
            "Overwrite": {
                "b": {
                    "MaxLength": 3,
                    "AssociationPropertyMetadata": {
                        "Something": "123"
                    },
                    "Label": {
                        "zh-cn": "B",
                        "en": "B"
                    }
                },
                "b.*": {
                    "AssociationProperty": "ALIYUN::ECS::RegionId"
                },
                "c": {
                    "Label": {
                        "zh-cn": "C",
                        "en": "C"
                    }
                },
                "c.d": {
                    "Label": {
                        "zh-cn": "C/D",
                        "en": "C/D"
                    }
                },
                "c.d.*": {
                    "AssociationProperty": "ALIYUN::ECS::RegionId"
                },
                "e": {
                    "Label": {
                        "zh-cn": "E",
                        "en": "E"
                    }
                },
                "e.*": {
                    "MaxLength": 3
                },
                "e.*.*": {
                    "AssociationProperty": "ALIYUN::ECS::RegionId"
                },
                "f.g": {
                    "Label": {
                        "zh-cn": "F/G",
                        "en": "F/G"
                    }
                },
                "f.g.*": {
                    "AssociationProperty": "ALIYUN::ECS::RegionId"
                }
            }
        }
      }
      EOT
    }
  • Código de plantilla de ejemplo tras transformar el parámetro user_information

    {
      "AssociationPropertyMetadata":{
        "Parameters":{
          "address":{
            "Type":"String"
          },
          "name":{
            "Type":"String",
            "Label":{
              "en":"Name",
              "zh-cn":"Name"
            }
          }
        }
      }
    }
  • Código de plantilla de ejemplo tras transformar el parámetro region_ids

    {
      "AssociationPropertyMetadata":{
        "Parameter":{
          "AssociationProperty":"ALIYUN::ECS::RegionId",
          "Type":"String"
        }
      },
      "AssociationProperty":"List[Parameter]"
    }
  • Código de plantilla de ejemplo tras transformar el parámetro docker_ports

    {
      "AssociationPropertyMetadata":{
        "Parameters":{
          "internal":{
            "Type":"Number",
            "Label":{
              "en":"Internal Port",
              "zh-cn":"Internal Port"
            }
          },
          "protocol":{
            "Type":"String",
            "AllowedValues":[
              "TCP",
              "UDP",
              "ICMP"
            ]
          },
          "external":{
            "Type":"Number"
          }
        }
      },
      "AssociationProperty":"List[Parameters]"
    }
  • Código de plantilla de ejemplo tras transformar el parámetro complex_type_demo

    {
      "AssociationPropertyMetadata":{
        "Parameter":{
          "AssociationPropertyMetadata":{
            "Parameters":{
              "b":{
                "AssociationPropertyMetadata":{
                  "Parameter":{
                    "AssociationProperty":"ALIYUN::ECS::RegionId",
                    "Type":"String"
                  },
                  "Something":"123"
                },
                "AssociationProperty":"List[Parameter]",
                "Type":"Json",
                "Label":{
                  "en":"B",
                  "zh-cn":"B"
                },
                "MaxLength":3
              },
              "c":{
                "AssociationPropertyMetadata":{
                  "Parameter":{
                    "AssociationPropertyMetadata":{
                      "Parameters":{
                        "d":{
                          "AssociationPropertyMetadata":{
                            "Parameter":{
                              "AssociationProperty":"ALIYUN::ECS::RegionId",
                              "Type":"String"
                            }
                          },
                          "AssociationProperty":"List[Parameter]",
                          "Type":"Json",
                          "Label":{
                            "en":"C/D",
                            "zh-cn":"C/D"
                          }
                        }
                      }
                    },
                    "Type":"Json"
                  }
                },
                "AssociationProperty":"List[Parameter]",
                "Type":"Json",
                "Label":{
                  "en":"C",
                  "zh-cn":"C"
                }
              },
              "e":{
                "AssociationPropertyMetadata":{
                  "Parameter":{
                    "AssociationPropertyMetadata":{
                      "Parameter":{
                        "AssociationProperty":"ALIYUN::ECS::RegionId",
                        "Type":"String"
                      }
                    },
                    "AssociationProperty":"List[Parameter]",
                    "Type":"Json",
                    "MaxLength":3
                  }
                },
                "AssociationProperty":"List[Parameter]",
                "Type":"Json",
                "Label":{
                  "en":"E",
                  "zh-cn":"E"
                }
              },
              "f":{
                "AssociationPropertyMetadata":{
                  "Parameter":{
                    "AssociationPropertyMetadata":{
                      "Parameter":{
                        "AssociationPropertyMetadata":{
                          "Parameters":{
                            "g":{
                              "AssociationPropertyMetadata":{
                                "Parameter":{
                                  "AssociationProperty":"ALIYUN::ECS::RegionId",
                                  "Type":"String"
                                }
                              },
                              "AssociationProperty":"List[Parameter]",
                              "Type":"Json",
                              "Label":{
                                "en":"F/G",
                                "zh-cn":"F/G"
                              }
                            }
                          }
                        },
                        "Type":"Json"
                      }
                    },
                    "AssociationProperty":"List[Parameter]",
                    "Type":"Json"
                  }
                },
                "AssociationProperty":"List[Parameter]",
                "Type":"Json"
              }
            }
          },
          "Type":"Json"
        }
      },
      "AssociationProperty":"List[Parameter]"
    }

Más ejemplos

También puede aprovechar AssociationProperty y AssociationPropertyMetadata para: