Todos os produtos
Search
Central de documentação

Resource Orchestration Service:AssociationProperty and AssociationPropertyMetadata

Última atualização: Jun 27, 2026

Em um modelo do Resource Orchestration Service (ROS), AssociationProperty recupera os recursos disponíveis na região selecionada e AssociationPropertyMetadata adiciona condições de filtro aos parâmetros. Juntos, permitem a seleção dinâmica de valores de parâmetros no console sem alternar entre vários consoles.

Descrição dos parâmetros

O parâmetro AssociationPropertyMetadata aceita os seguintes valores:

  • Especifique um valor específico para o parâmetro. Por exemplo, ao definir "RegionId": "cn-hangzhou", o ROS usa a região cn-hangzhou.

  • Defina uma variável para o parâmetro no formato ${ParameterKey}. Por exemplo, ao especificar "VpcId": "${VpcId}", o ROS recupera dinamicamente o valor do parâmetro VpcId do modelo atual.

    Nota
    • Para definir ${ParameterKey} como campo estático, adicione um ponto de exclamação (!). Por exemplo, ${!Literal} resulta na string literal ${Literal}.

    • Para usar uma variável de parâmetro em um modelo Terraform, adicione $ antes de $. Por exemplo, ao especificar "VpcId": "$${VpcId}", o ROS recupera dinamicamente o valor de VpcId do modelo Terraform.

O AssociationPropertyMetadata necessário varia conforme o tipo de recurso especificado em AssociationProperty.

Exemplos

Exemplo 1: AssociationProperty

Defina AssociationProperty como ALIYUN::ECS::Image::ImageId para recuperar todos os IDs de imagem na região selecionada.

Exemplo 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"
    }
  }
}

Exemplo 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

Descrição dos parâmetros:

  • UserName: Nome de usuário. Parâmetro do tipo string com 6 a 12 caracteres. Valores válidos:

    • anonymous (padrão)

    • user-one

    • user-two

  • PassWord: Senha. Parâmetro do tipo string com 1 a 41 caracteres, aceitando letras maiúsculas, minúsculas e dígitos. Sem valor padrão.

    Se NoEcho estiver definido como true, o valor do parâmetro não será retornado na consulta da pilha.

  • ImageId: ID da imagem. Tipo string.

    Quando AssociationProperty é definido como ALIYUN::ECS::Image::ImageId, o console ROS valida o ID da imagem especificado durante a criação da pilha e lista outros IDs de imagem disponíveis na região selecionada em uma lista suspensa.

Exemplo 2: AssociationPropertyMetadata

Especifique AssociationProperty com o AssociationPropertyMetadata correspondente (RegionId, VpcId e ZoneId) para recuperar o vSwitch de uma Virtual Private Cloud (VPC) e zona específicas. Neste exemplo, RegionId está definido como o campo estático cn-hangzhou, enquanto VpcId e ZoneId usam as variáveis ${VpcId} e ${EcsZone}. Essas variáveis são atualizadas dinamicamente com base nos valores selecionados para ALIYUN::ECS::VPC::VPCId e ZoneId, associando o vSwitch à VPC e à zona.

Nota

Para parâmetros como EcsZone que possuem AllowedValues configurado, adicione AutoChangeType ao AssociationPropertyMetadata e defina-o como false. Isso exibe os AllowedValues como uma lista suspensa no console ROS.

Exemplo 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}"
      }
    }
  }
}

Exemplo 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}

Exemplo 3: Transformação automática do Terraform

Quando AssociationProperty é definido como Auto, o ROS gera automaticamente os campos AssociationProperty e AssociationPropertyMetadata com base na estrutura de dados original do Terraform.

  • Código completo do modelo de exemplo

    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 do modelo de exemplo após a transformação do parâmetro user_information

    {
      "AssociationPropertyMetadata":{
        "Parameters":{
          "address":{
            "Type":"String"
          },
          "name":{
            "Type":"String",
            "Label":{
              "en":"Name",
              "zh-cn":"Name"
            }
          }
        }
      }
    }
  • Código do modelo de exemplo após a transformação do parâmetro region_ids

    {
      "AssociationPropertyMetadata":{
        "Parameter":{
          "AssociationProperty":"ALIYUN::ECS::RegionId",
          "Type":"String"
        }
      },
      "AssociationProperty":"List[Parameter]"
    }
  • Código do modelo de exemplo após a transformação do 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 do modelo de exemplo após a transformação do 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]"
    }

Mais exemplos

Use AssociationProperty e AssociationPropertyMetadata também para: