All Products
Search
Document Center

Resource Orchestration Service:AssociationProperty dan AssociationPropertyMetadata

Last Updated:Jun 10, 2026

Saat menggunakan Resource Orchestration Service (ROS) untuk membuat stack yang mengelola beberapa resource, Anda sering perlu membuka berbagai konsol guna mencari informasi parameter. Untuk menyederhanakan proses ini, Anda dapat menentukan `AssociationProperty` dalam pengaturan parameter templat agar secara otomatis mengambil resource di wilayah yang dipilih. Selain itu, Anda juga dapat menentukan `AssociationPropertyMetadata` untuk menambahkan kondisi filter pada parameter tertentu, sehingga memungkinkan pemilihan konfigurasi parameter secara dinamis di konsol.

Deskripsi parameter

Parameter `AssociationPropertyMetadata` menerima nilai-nilai berikut:

  • Anda dapat menentukan nilai spesifik untuk parameter tersebut. Misalnya, jika Anda menetapkan "RegionId": "cn-hangzhou", ROS akan menggunakan wilayah `cn-hangzhou`.

  • Anda dapat menentukan variabel untuk parameter tersebut dalam format ${ParameterKey}. Misalnya, jika Anda menetapkan "VpcId": "${VpcId}", ROS akan secara dinamis mengambil nilai parameter `VpcId` dari templat saat ini.

    Catatan
    • Untuk menetapkan ${ParameterKey} sebagai bidang statis, tambahkan tanda seru (!). Misalnya, ${!Literal} dievaluasi menjadi string literal ${Literal}.

    • Untuk menggunakan variabel parameter dalam templat Terraform, tambahkan $ sebelum $. Misalnya, jika Anda menetapkan "VpcId": "$${VpcId}", ROS akan secara dinamis mengambil nilai `VpcId` dari templat Terraform.

`AssociationPropertyMetadata` yang diperlukan bervariasi tergantung pada jenis resource yang ditentukan dalam `AssociationProperty`.

Contoh

Contoh 1: Contoh AssociationProperty

Anda dapat mengatur `AssociationProperty` ke `ALIYUN::ECS::Image::ImageId` dalam parameter untuk mengambil semua ID image di wilayah yang dipilih.

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

Contoh 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

Deskripsi parameter:

  • UserName: Username. Parameter ini berupa string dengan panjang antara 6 hingga 12 karakter. Nilai yang valid:

    • anonymous (default)

    • user-one

    • user-two

  • PassWord: Kata sandi. Parameter ini berupa string dengan panjang antara 1 hingga 41 karakter dan tidak memiliki nilai default. Kata sandi dapat berisi huruf kapital, huruf kecil, dan angka.

    Jika `NoEcho` diatur ke `true`, nilai parameter tidak dikembalikan saat Anda melakukan kueri terhadap stack.

  • ImageId: ID image. Jenis string.

    Ketika `AssociationProperty` diatur ke `ALIYUN::ECS::Image::ImageId`, konsol ROS memvalidasi ID image yang ditentukan saat Anda membuat stack dan menampilkan daftar ID image lain yang tersedia di wilayah yang dipilih dalam bentuk daftar drop-down.

Contoh 2: Contoh AssociationPropertyMetadata

Anda dapat menentukan `AssociationProperty` dan `AssociationPropertyMetadata` yang sesuai (`RegionId`, `VpcId`, dan `ZoneId`) dalam parameter untuk mengambil vSwitch untuk virtual private cloud (VPC) dan zona tertentu. Dalam contoh ini, `RegionId` diatur ke bidang statis `cn-hangzhou`. `VpcId` dan `ZoneId` diatur ke variabel `${VpcId}` dan `${EcsZone}`. Nilai variabel ini diperbarui secara dinamis berdasarkan nilai yang dipilih untuk `ALIYUN::ECS::VPC::VPCId` dan `ZoneId`, sehingga mengaitkan vSwitch dengan VPC dan zona tersebut.

Catatan

Untuk parameter seperti `EcsZone` yang telah dikonfigurasi dengan `AllowedValues`, Anda dapat menambahkan `AutoChangeType` ke `AssociationPropertyMetadata` dan mengatur nilainya ke `false`. Pengaturan ini menampilkan parameter `AllowedValues` sebagai daftar drop-down di konsol ROS.

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

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

Contoh 3: Contoh transformasi otomatis Terraform

Ketika `AssociationProperty` diatur ke `Auto`, ROS secara otomatis menghasilkan field seperti `AssociationProperty` dan `AssociationPropertyMetadata` berdasarkan struktur data Terraform asli.

  • Kode templat contoh lengkap

    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
    }
  • Kode templat contoh setelah parameter user_information ditransformasi

    {
      "AssociationPropertyMetadata":{
        "Parameters":{
          "address":{
            "Type":"String"
          },
          "name":{
            "Type":"String",
            "Label":{
              "en":"Name",
              "zh-cn":"Name"
            }
          }
        }
      }
    }
  • Kode templat contoh setelah parameter region_ids ditransformasi

    {
      "AssociationPropertyMetadata":{
        "Parameter":{
          "AssociationProperty":"ALIYUN::ECS::RegionId",
          "Type":"String"
        }
      },
      "AssociationProperty":"List[Parameter]"
    }
  • Kode templat contoh setelah parameter docker_ports ditransformasi

    {
      "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]"
    }
  • Kode contoh templat setelah parameter complex_type_demo ditransformasi

    {
      "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]"
    }

Contoh lainnya

Anda juga dapat menggunakan `AssociationProperty` dan `AssociationPropertyMetadata` untuk: