All Products
Search
Document Center

Resource Orchestration Service:Mengelola beberapa instans ECS menggunakan grup penskalaan

Last Updated:Jun 19, 2026

Pelajari cara mengedit templat Resource Orchestration Service (ROS) untuk mengelola beberapa instans Elastic Compute Service (ECS) menggunakan grup penskalaan, mulai dari konfigurasi sederhana hingga konfigurasi yang lebih kompleks.

Prasyarat

Pahami sintaks dan struktur templat. Untuk informasi selengkapnya, lihat Quick Start.

Skenario contoh

Buat grup penskalaan dengan aturan penskalaan di virtual private cloud (VPC) Alibaba Cloud, tambahkan instans ECS ke dalam grup tersebut, lalu lakukan penskalaan keluar atau masuk berdasarkan aturan yang telah dikonfigurasi.2023-03-29_10-36-10

Catatan penggunaan

Lihat detail properti untuk setiap tipe resource. Untuk informasi selengkapnya, lihat View resource types.

Setiap tipe resource menentukan tipe, persyaratan, dan kebijakan pembaruan untuk propertinya. Properti wajib harus dideklarasikan dalam bagian `Properties` pada blok `Resources`. Properti opsional tidak perlu dideklarasikan. Jika suatu properti memungkinkan pembaruan, Anda dapat mengubahnya dalam templat baru lalu memperbarui stack untuk menerapkan perubahan tersebut. Jika tidak, properti tersebut tidak dapat diperbarui.

Edit templat

Anda dapat menemukan tipe resource yang diperlukan dalam dokumen indeks tipe resource. Untuk informasi selengkapnya, lihat Resource type index.

Skenario ini mengharuskan Anda membuat VPC (ALIYUN::ECS::VPC), instans ECS (ALIYUN::ECS::Instance), dan grup penskalaan (ALIYUN::ESS::ScalingGroup). Anda juga memerlukan vSwitch (ALIYUN::ECS::VSwitch) dan security group (ALIYUN::ECS::SecurityGroup) untuk instans ECS, konfigurasi penskalaan (ALIYUN::ESS::ScalingConfiguration) untuk grup penskalaan, serta resource untuk mengaktifkan grup penskalaan (ALIYUN::ESS::ScalingGroupEnable).

Tentukan resource templat dan dependensinya

Tentukan resource jaringan dasar

Tentukan resource jaringan dasar `Vpc`, `vSwitch`, dan `EcsSecurityGroup` dalam templat.

  • Gunakan fungsi intrinsik `Ref` dan parameter pseudo `ALIYUN::StackName` untuk mengambil nama stack dan menggunakannya sebagai nilai properti resource, seperti `VpcName` pada `Vpc` dan `VSwitchName` pada `vSwitch`. Untuk informasi selengkapnya, lihat Ref dan ALIYUN::StackName.

  • Gunakan fungsi intrinsik `Fn::Select` dan `Fn::GetAZs` dengan parameter pseudo `ALIYUN::Region` untuk mengambil ID zona pertama di wilayah tempat stack dibuat, misalnya untuk properti `ZoneId` pada `vSwitch`. Untuk informasi selengkapnya, lihat Functions dan ALIYUN::Region.

Resources:
  Vpc:
    Type: ALIYUN::ECS::VPC
    Properties:
      CidrBlock: 192.168.0.0/16
      VpcName:
        Ref: ALIYUN::StackName
  VSwitch:
    Type: ALIYUN::ECS::VSwitch
    Properties:
      VSwitchName:
        Ref: ALIYUN::StackName
      VpcId:
        Ref: Vpc
      ZoneId:
        Fn::Select:
          - '0'
          - Fn::GetAZs:
              Ref: ALIYUN::Region
      CidrBlock: 192.168.0.0/24
  EcsSecurityGroup:
    Type: ALIYUN::ECS::SecurityGroup
    Properties:
      SecurityGroupName:
        Ref: ALIYUN::StackName
      VpcId:
        Ref: Vpc
      SecurityGroupEgress:
        - PortRange: '-1/-1'
          Priority: 1
          IpProtocol: all
          DestCidrIp: 0.0.0.0/0
          NicType: intranet

Tentukan resource ECS

Tentukan resource ECS `EcsInstanceGroup` dalam templat.

Gunakan fungsi intrinsik `Ref` untuk mereferensikan nama logis resource lain dalam templat, seperti `VpcId` dari resource `Vpc`, `SecurityGroupId` dari resource `EcsSecurityGroup`, dan `VSwitchId` dari resource `vSwitch`. Untuk informasi selengkapnya, lihat Ref.

Resources:
	EcsInstanceGroup:
    Type: ALIYUN::ECS::Instance
    Properties:
      VpcId:
        Ref: Vpc
      SecurityGroupId:
        Ref: EcsSecurityGroup
      VSwitchId:
        Ref: VSwitch
      ImageId: centos_7
      AllocatePublicIP: false
      InstanceType: ecs.c5.large
      SystemDiskSize: 40
      SystemDiskCategory: cloud_essd
      Password:
        Ref: EcsInstancePassword

Mendefinisikan sumber daya grup penskalaan

Tentukan resource grup penskalaan `EssInstanceScalingGroup`, `EssInstanceScalingGroupEnable`, dan `EssInstanceScalingConfiguration` dalam templat.

  • Gunakan fungsi intrinsik `Fn::GetAtt` untuk mengambil nilai atribut resource, seperti `InstanceIds` pada `EssInstanceScalingGroupEnable`. Untuk informasi selengkapnya, lihat Fn::GetAtt.

  • Gunakan fungsi intrinsik `Fn::Sub` untuk mengganti variabel dalam string input dengan nilai yang ditentukan. Misalnya, Anda dapat menggunakan fungsi ini untuk properti `ScalingConfigurationName` pada `EssInstanceScalingConfiguration`. Untuk informasi selengkapnya, lihat Fn::Sub.

Resources:
	EssInstanceScalingGroup:
    Type: ALIYUN::ESS::ScalingGroup
    Properties:
      ScalingGroupName:
        Ref: ALIYUN::StackName
      RemovalPolicys:
        - NewestInstance
      MinSize: 3
      MaxSize: 50
      VSwitchId:
        Ref: VSwitch
      DefaultCooldown: 300
  EssInstanceScalingConfiguration:
    Type: ALIYUN::ESS::ScalingConfiguration
    Properties:
      SecurityGroupId:
        Ref: EcsSecurityGroup
      ScalingGroupId:
        Ref: EssInstanceScalingGroup
      ScalingConfigurationName:
        Fn::Sub: sc-${ALIYUN::StackName}
      InstanceType: ecs.c5.large
      SystemDiskCategory: cloud_essd
      SystemDiskSize: 200
      ImageId: centos_7_9_x64_20G_alibase_20220727.vhd
      InstanceName:
        Fn::Join:
          - '-'
          - - Ref: ALIYUN::StackName
            - '[1,4]'
  EssInstanceScalingGroupEnable:
    Type: ALIYUN::ESS::ScalingGroupEnable
    Properties:
      ScalingRuleArisExecuteVersion: '1'
      ScalingConfigurationId:
        Ref: EssInstanceScalingConfiguration
      InstanceIds:
        Fn::GetAtt:
          - EcsInstanceGroup
          - InstanceIds
      ScalingGroupId:
        Ref: EssInstanceScalingGroup

Templat contoh lengkap

ROSTemplateFormatVersion: '2015-09-01'
Description: { }
Parameters:
  EcsInstancePassword:
    NoEcho: true
    Type: String
    Description: The logon password for the server. It must be 8 to 30 characters in length and contain at least three of the following character types: uppercase letters, lowercase letters, digits, and special characters. Special characters include ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/.
    AllowedPattern: '[0-9A-Za-z\_\-\&:;''<>,=%`~!@#\(\)\$\^\*\+\|\{\}\[\]\.\?\/]+$'
    Label: Instance Password
    ConstraintDescription: The password must be 8 to 30 characters in length and contain at least three of the following character types: uppercase letters, lowercase letters, digits, and special characters. Special characters include ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/.
    MinLength: 8
    MaxLength: 30
Resources:
  Vpc:
    Type: ALIYUN::ECS::VPC
    Properties:
      CidrBlock: 192.168.0.0/16
      VpcName:
        Ref: ALIYUN::StackName
  VSwitch:
    Type: ALIYUN::ECS::VSwitch
    Properties:
      VSwitchName:
        Ref: ALIYUN::StackName
      VpcId:
        Ref: Vpc
      ZoneId:
        Fn::Select:
          - '0'
          - Fn::GetAZs:
              Ref: ALIYUN::Region
      CidrBlock: 192.168.0.0/24
  EcsSecurityGroup:
    Type: ALIYUN::ECS::SecurityGroup
    Properties:
      SecurityGroupName:
        Ref: ALIYUN::StackName
      VpcId:
        Ref: Vpc
      SecurityGroupEgress:
        - PortRange: '-1/-1'
          Priority: 1
          IpProtocol: all
          DestCidrIp: 0.0.0.0/0
          NicType: intranet
  EcsInstance:
    Type: ALIYUN::ECS::Instance
    Properties:
      VpcId:
        Ref: Vpc
      SecurityGroupId:
        Ref: EcsSecurityGroup
      VSwitchId:
        Ref: VSwitch
      ImageId: centos_7
      AllocatePublicIP: false
      InstanceType: ecs.c5.large
      SystemDiskSize: 40
      SystemDiskCategory: cloud_essd
      Password:
        Ref: EcsInstancePassword
  EssInstanceScalingGroup:
    Type: ALIYUN::ESS::ScalingGroup
    Properties:
      ScalingGroupName:
        Ref: ALIYUN::StackName
      RemovalPolicys:
        - NewestInstance
      MinSize: 3
      MaxSize: 50
      VSwitchId:
        Ref: VSwitch
      DefaultCooldown: 300
  EssInstanceScalingConfiguration:
    Type: ALIYUN::ESS::ScalingConfiguration
    Properties:
      SecurityGroupId:
        Ref: EcsSecurityGroup
      ScalingGroupId:
        Ref: EssInstanceScalingGroup
      ScalingConfigurationName:
        Fn::Sub: sc-${ALIYUN::StackName}
      InstanceType: ecs.c5.large
      SystemDiskCategory: cloud_essd
      SystemDiskSize: 200
      ImageId: centos_7_9_x64_20G_alibase_20220727.vhd
      InstanceName:
        Fn::Join:
          - '-'
          - - Ref: ALIYUN::StackName
            - '[1,4]'
  EssInstanceScalingGroupEnable:
    Type: ALIYUN::ESS::ScalingGroupEnable
    Properties:
      ScalingRuleArisExecuteVersion: '1'
      ScalingConfigurationId:
        Ref: EssInstanceScalingConfiguration
      InstanceIds:
        Fn::GetAtt:
          - EcsInstance
          - InstanceIds

Tambahkan grup parameter templat dan dapatkan konfigurasi parameter secara dinamis

Templat sebelumnya telah menentukan resource dan dependensinya, tetapi properti seperti `InstanceType` dan `SystemDiskCategory` untuk `EcsInstance` menggunakan nilai statis. Anda perlu mengubah templat setiap kali membuat stack di wilayah yang berbeda.

Untuk membuat templat lebih fleksibel dan dapat digunakan kembali, tambahkan bagian `Parameters`.

Tambahkan grup parameter templat

Gunakan bagian `Metadata` dalam templat untuk mengelompokkan parameter dan menentukan label grup.

Setelah Anda menentukan resource dan parameter templat, kelompokkan parameter berdasarkan resource terkait sebagai berikut:

Kategorisasi parameter resource

Nama resource

Nama parameter

Konfigurasi jaringan dasar

Vpc, VSwitch, EcsSecurityGroup

VSwitchZoneId, VpcCidrBlock, VSwitchCidrBlock

Konfigurasi ECS

EcsInstance

ECSInstanceType, ECSInstanceGroupCount, ECSImageId, ECSDiskCategory, EcsInstancePassword

Konfigurasi resource grup penskalaan

EssInstanceScalingGroup, EssInstanceScalingGroupEnable, EssInstanceScalingConfiguration

ESSGroupMaxSize

Dapatkan pengaturan parameter secara dinamis

Ambil `EcsInstanceType` sebagai contoh. Untuk menetapkan kondisi filter dan memilih nilai parameter secara dinamis di Konsol, cari nilai `AssociationProperty` yang didukung untuk parameter tersebut. Nilai `ALIYUN::ECS::Instance::InstanceType` didokumentasikan di bawah bagian `AssociationProperty` dan `AssociationPropertyMetadata` untuk tipe resource `ALIYUN::ECS::Instance`, dengan `ZoneId` sebagai kondisi filter. Untuk informasi selengkapnya, lihat AssociationProperty and AssociationPropertyMetadata.

Templat contoh lengkap

ROSTemplateFormatVersion: '2015-09-01'
Description:
  en: Penerapan ECS yang mendukung penskalaan otomatis.
Parameters:
  VSwitchZoneId:
    Type: String
    AssociationProperty: ALIYUN::ECS::Instance::ZoneId
    Description:
      en: ID zona vSwitch.
    Label:
      en: ID Zona VSwitch
  VpcCidrBlock:
    Default: 192.168.0.0/16
    Label:
      en: Blok CIDR VPC
    Type: String
    Description:
      en: Blok CIDR untuk VPC baru. Kami menyarankan Anda menggunakan salah satu blok CIDR berikut:<br/><font color='green'>[10.0.XX.XX/8]</font><br><font color='green'>[172.16.XX.XX/12]</font><br><font color='green'>[192.168.XX.XX/16]</font>
  VSwitchCidrBlock:
    Default: 192.168.0.0/24
    Type: String
    Description:
      en: Blok CIDR harus berupa subnet dari VPC dan tidak boleh sedang digunakan oleh vSwitch lain.
    Label:
      en: Blok CIDR VSwitch
  ECSInstanceType:
    Type: String
    Label:
      en: Tipe Instance
    AssociationProperty: ALIYUN::ECS::Instance::InstanceType
    AssociationPropertyMetadata:
      ZoneId: ${VSwitchZoneId}
      InstanceChargeType: ${InstanceChargeType}
  ECSDiskCategory:
    Type: String
    Description:
      en: '<font color=''blue''><b>Nilai yang valid:</font><br/>[cloud_efficiency: <font color=''green''>disk ultra</font>]<br>[cloud_ssd: <font color=''green''>SSD standar</font>]<br>[cloud_essd: <font color=''green''>SSD Perusahaan (ESSD)</font>]<br>[cloud: <font color=''green''>disk dasar</font>]<br>[ephemeral_ssd: <font color=''green''>SSD lokal</font>]'
    AssociationProperty: ALIYUN::ECS::Disk::SystemDiskCategory
    AssociationPropertyMetadata:
      ZoneId: ${VSwitchZoneId}
      InstanceType: ${ECSInstanceType}
    Label:
      en: Tipe Disk Sistem
  ECSImageId:
    AssociationProperty: ALIYUN::ECS::Image::ImageId
    Label:
      en: ID Image
    Description:
      en: ID image yang digunakan untuk membuat instance ECS. <font><a href='https://www.alibabacloud.com/help/doc-detail/112977.html' target='_blank'><b>Lihat sumber daya image</font color='blue'></a>
    Type: String
  EcsInstancePassword:
    NoEcho: true
    Type: String
    Description:
      en: Kata sandi logon untuk server. Kata sandi harus memiliki panjang 8 hingga 30 karakter dan berisi karakter dari setidaknya tiga kategori berikut: huruf besar, huruf kecil, angka, dan karakter khusus: ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/.
    AllowedPattern: '[0-9A-Za-z\_\-\&:;''<>,=%`~!@#\(\)\$\^\*\+\|\{\}\[\]\.\?\/]+$'
    Label:
      en: Kata Sandi Instance
    ConstraintDescription:
      en: Kata sandi harus memiliki panjang 8 hingga 30 karakter dan berisi karakter dari setidaknya tiga kategori berikut: huruf besar, huruf kecil, angka, dan karakter khusus: ()`~!@#$%^&*_-+=|{}[]:;'<>,.?/.
    MinLength: 8
    MaxLength: 30
    AssociationProperty: ALIYUN::ECS::Instance::Password
  ECSInstanceGroupCount:
    Type: Number
    Description:
      en: Jumlah instance ECS.
    Label:
      en: Jumlah Instance
    Default: 3
  ESSGroupMaxSize:
    Type: Number
    Label:
      en: Jumlah maksimum instance ECS dalam grup penskalaan.
    Default: 50
Resources:
  Vpc:
    Type: ALIYUN::ECS::VPC
    Properties:
      CidrBlock:
        Ref: VpcCidrBlock
      VpcName:
        Ref: ALIYUN::StackName
  VSwitch:
    Type: ALIYUN::ECS::VSwitch
    Properties:
      VSwitchName:
        Ref: ALIYUN::StackName
      VpcId:
        Ref: Vpc
      ZoneId:
        Ref: VSwitchZoneId
      CidrBlock:
        Ref: VSwitchCidrBlock
  EcsSecurityGroup:
    Type: ALIYUN::ECS::SecurityGroup
    Properties:
      SecurityGroupName:
        Ref: ALIYUN::StackName
      VpcId:
        Ref: Vpc
      SecurityGroupIngress:
        - PortRange: 8080/8080
          Priority: 1
          SourceCidrIp: 0.0.0.0/0
          IpProtocol: tcp
          NicType: internet
      SecurityGroupEgress:
        - PortRange: '-1/-1'
          Priority: 1
          IpProtocol: all
          DestCidrIp: 0.0.0.0/0
          NicType: internet
        - PortRange: '-1/-1'
          Priority: 1
          IpProtocol: all
          DestCidrIp: 0.0.0.0/0
          NicType: intranet
  EcsInstanceGroup:
    Type: ALIYUN::ECS::InstanceGroup
    Properties:
      InstanceName:
        Fn::Join:
          - '-'
          - - Ref: ALIYUN::StackName
            - '[1,4]'
      VpcId:
        Ref: Vpc
      VSwitchId:
        Ref: VSwitch
      SecurityGroupId:
        Ref: EcsSecurityGroup
      SystemDiskCategory:
        Ref: ECSDiskCategory
      SystemDiskSize: 200
      MaxAmount:
        Ref: ECSInstanceGroupCount
      ImageId:
        Ref: ECSImageId
      InstanceType:
        Ref: ECSInstanceType
      Password:
        Ref: EcsInstancePassword
      AllocatePublicIP: false
  EssInstanceScalingGroupEnable:
    Type: ALIYUN::ESS::ScalingGroupEnable
    Properties:
      ScalingRuleArisExecuteVersion: '1'
      ScalingConfigurationId:
        Ref: EssInstanceScalingConfiguration
      InstanceIds:
        Fn::GetAtt:
          - EcsInstanceGroup
          - InstanceIds
      ScalingGroupId:
        Ref: EssInstanceScalingGroup
  EssInstanceScalingConfiguration:
    Type: ALIYUN::ESS::ScalingConfiguration
    Properties:
      SecurityGroupId:
        Ref: EcsSecurityGroup
      ScalingGroupId:
        Ref: EssInstanceScalingGroup
      ScalingConfigurationName:
        Fn::Sub: sc-${ALIYUN::StackName}
      InstanceType:
        Ref: ECSInstanceType
      SystemDiskCategory:
        Ref: ECSDiskCategory
      SystemDiskSize: 200
      ImageId:
        Ref: ECSImageId
      InstanceName:
        Fn::Join:
          - '-'
          - - Ref: ALIYUN::StackName
            - '[1,4]'
  EssInstanceScalingGroup:
    Type: ALIYUN::ESS::ScalingGroup
    Properties:
      ScalingGroupName:
        Ref: ALIYUN::StackName
      RemovalPolicys:
        - NewestInstance
      MinSize:
        Ref: ECSInstanceGroupCount
      MaxSize: 50
      VSwitchId:
        Ref: VSwitch
      DefaultCooldown: 300
Metadata:
  ALIYUN::ROS::Interface:
    ParameterGroups:
      - Parameters:
          - VSwitchZoneId
          - VpcCidrBlock
          - VSwitchCidrBlock
        Label:
          default:
            en: Konfigurasi Jaringan Dasar
      - Parameters:
          - ECSInstanceType
          - ECSDiskCategory
          - ECSImageId
          - EcsInstancePassword
          - ECSInstanceGroupCount
        Label:
          default:
            en: Konfigurasi Instance ECS
      - Parameters:
          - ESSGroupMaxSize
        Label:
          default:
            en: Konfigurasi Grup Penskalaan<br/><br/><br/><br/><br/>