Tous les produits
Search
Centre de documentation

Resource Orchestration Service:AssociationProperty and AssociationPropertyMetadata

Dernière mise à jour :Aug 10, 2026

Dans un modèle Resource Orchestration Service (ROS), AssociationProperty récupère les ressources disponibles dans la région sélectionnée, tandis que AssociationPropertyMetadata ajoute des conditions de filtrage aux paramètres. Cette combinaison vous permet de sélectionner dynamiquement les valeurs des paramètres dans la console sans avoir à basculer entre plusieurs interfaces.

Description des paramètres

Le paramètre AssociationPropertyMetadata accepte les valeurs suivantes :

  • Spécifiez une valeur précise pour le paramètre. Par exemple, si vous spécifiez "RegionId": "cn-hangzhou", ROS utilise la région cn-hangzhou.

  • Spécifiez une variable pour le paramètre au format ${ParameterKey}. Par exemple, si vous spécifiez "VpcId": "${VpcId}", ROS récupère dynamiquement la valeur du paramètre VpcId à partir du modèle actuel.

    Remarque
    • Pour spécifier ${ParameterKey} en tant que champ statique, ajoutez un point d'exclamation (!). Par exemple, ${!Literal} est évalué comme la chaîne littérale ${Literal}.

    • Pour utiliser une variable de paramètre dans un modèle Terraform, ajoutez un $ avant le $. Par exemple, si vous spécifiez "VpcId": "$${VpcId}", ROS récupère dynamiquement la valeur de VpcId à partir du modèle Terraform.

La configuration requise pour AssociationPropertyMetadata varie selon le type de ressource spécifié dans AssociationProperty.

Exemples

Exemple 1 : exemple AssociationProperty

Définissez AssociationProperty sur ALIYUN::ECS::Image::ImageId pour récupérer tous les ID d'image dans la région sélectionnée.

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

Exemple 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

Description des paramètres :

  • UserName : le nom d'utilisateur. Ce paramètre est une chaîne qui doit comporter entre 6 et 12 caractères. Valeurs valides :

    • anonymous (par défaut)

    • user-one

    • user-two

  • PassWord : le mot de passe. Ce paramètre est une chaîne qui doit comporter entre 1 et 41 caractères et peut contenir des lettres majuscules, des lettres minuscules et des chiffres. Aucune valeur par défaut.

    Si NoEcho est défini sur true, la valeur du paramètre n'est pas renvoyée lorsque vous interrogez la pile.

  • ImageId : l'ID de l'image. Type de chaîne.

    Lorsque AssociationProperty est défini sur ALIYUN::ECS::Image::ImageId, la console ROS valide l'ID d'image spécifié lors de la création de la pile et répertorie les autres ID d'image disponibles dans la région sélectionnée dans une liste déroulante.

Exemple 2 : exemple AssociationPropertyMetadata

Spécifiez AssociationProperty avec le AssociationPropertyMetadata correspondant (RegionId, VpcId et ZoneId) pour récupérer le vSwitch d'un cloud privé virtuel (VPC) et d'une zone spécifiques. Dans cet exemple, RegionId est défini sur le champ statique cn-hangzhou, tandis que VpcId et ZoneId utilisent les variables ${VpcId} et ${EcsZone}. Ces variables s'actualisent dynamiquement en fonction des valeurs sélectionnées pour ALIYUN::ECS::VPC::VPCId et ZoneId, associant ainsi le vSwitch au VPC et à la zone.

Remarque

Pour les paramètres tels que EcsZone dont AllowedValues est configuré, ajoutez AutoChangeType à AssociationPropertyMetadata et définissez-le sur false. Cela affiche les AllowedValues sous forme de liste déroulante dans la console ROS.

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

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

Exemple 3 : exemple de transformation automatique Terraform

Lorsque AssociationProperty est défini sur Auto, ROS génère automatiquement les champs AssociationProperty et AssociationPropertyMetadata en fonction de la structure de données Terraform d'origine.

  • Code complet de l'exemple de modèle

    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
    }
  • Exemple de code de modèle après la transformation du paramètre user_information

    {
      "AssociationPropertyMetadata":{
        "Parameters":{
          "address":{
            "Type":"String"
          },
          "name":{
            "Type":"String",
            "Label":{
              "en":"Name",
              "zh-cn":"Name"
            }
          }
        }
      }
    }
  • Exemple de code de modèle après la transformation du paramètre region_ids

    {
      "AssociationPropertyMetadata":{
        "Parameter":{
          "AssociationProperty":"ALIYUN::ECS::RegionId",
          "Type":"String"
        }
      },
      "AssociationProperty":"List[Parameter]"
    }
  • Exemple de code de modèle après la transformation du paramètre 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]"
    }
  • Exemple de code de modèle après la transformation du paramètre 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]"
    }

Plus d'exemples

Vous pouvez également utiliser AssociationProperty et AssociationPropertyMetadata pour :