All Products
Search
Document Center

Resource Orchestration Service:ALIYUN::ESS::ScalingConfiguration

Last Updated:Oct 10, 2026

Tipe resource ALIYUN::ESS::ScalingConfiguration digunakan untuk membuat konfigurasi penskalaan pada grup penskalaan.

Sintaksis

{
  "Type": "ALIYUN::ESS::ScalingConfiguration",
  "Properties": {
    "PasswordInherit": Boolean,
    "DiskMappings": List,
    "RamRoleName": String,
    "IoOptimized": String,
    "InternetChargeType": String,
    "KeyPairName": String,
    "InstanceId": String,
    "InstanceTypes": List,
    "ImageId": String,
    "ResourceGroupId": String,
    "SpotStrategy": String,
    "InstanceType": String,
    "SystemDiskCategory": String,
    "SystemDiskSize": Integer,
    "SystemDiskAutoSnapshotPolicyId": String,
    "SystemDiskPerformanceLevel": String,
    "InternetMaxBandwidthOut": Integer,
    "InstanceName": String,
    "InternetMaxBandwidthIn": Integer,
    "ScalingConfigurationName": String,
    "UserData": String,
    "DeploymentSetId": String,
    "SecurityGroupId": String,
    "SpotPriceLimit": Number,
    "HpcClusterId": String,
    "ScalingGroupId": String,
    "SpotPriceLimitForInstanceType": Map,
    "TagList": List,
    "Ipv6AddressCount": Integer,
    "LoadBalancerWeight": Integer,
    "CreditSpecification": String,
    "ImageFamily": String,
    "CpuOptions": Map,
    "HostName": String,
    "Password": String,
    "SystemDiskBurstingEnabled": Boolean,
    "ImageOptionsLoginAsNonRoot": Boolean,
    "SystemDiskEncrypted": Boolean,
    "SystemDiskEncryptAlgorithm": String,
    "ZoneId": String,
    "Cpu": Integer,
    "SystemDiskProvisionedIops": Integer,
    "SystemDiskKMSKeyId": String,
    "InstancePatternInfos": List,
    "SpotInterruptionBehavior": String,
    "ImageName": String,
    "SystemDiskDescription": String,
    "SystemDiskDiskName": String,
    "InstanceTypeOverrides": List,
    "SystemDiskCategories": List,
    "Memory": Integer,
    "InstanceDescription": String,
    "SecurityGroupIds": List,
    "SpotDuration": Integer,
    "SecurityEnhancementStrategy": String,
    "Affinity": String,
    "Tenancy": String,
    "PrivatePoolOptions": Map,
    "DedicatedHostId": String
  }
}

Properti

Property

Type

Required

Editable

Description

Constraints

ScalingGroupId

String

Yes

No

ID grup penskalaan tempat konfigurasi penskalaan ini berada.

None.

Affinity

String

No

Yes

Menentukan apakah instans host khusus dikaitkan dengan host khusus.

Nilai yang valid:

  • default: Instans tidak dikaitkan dengan host khusus. Jika instans dengan mode shutdown ekonomis diaktifkan direstart dan host khusus asal kekurangan sumber daya, instans tersebut akan ditempatkan pada host khusus lain dalam kolam sumber daya penyebaran otomatis.

  • host: Instans dikaitkan dengan host khusus. Jika instans dengan mode shutdown ekonomis diaktifkan direstart, instans tetap berada pada host khusus asal. Restart gagal jika host khusus asal kekurangan sumber daya.

Cpu

Integer

No

Yes

Jumlah vCPU.

Anda dapat menentukan Cpu dan Memory bersama-sama untuk mendefinisikan rentang tipe instans. Misalnya, Cpu=2 dan Memory=16 mendefinisikan semua tipe instans dengan 2 vCPU dan memori 16 GiB. Auto Scaling menentukan tipe instans yang tersedia berdasarkan optimasi I/O, zona, dan faktor lainnya, lalu membuat instans dengan harga terendah.

CpuOptions

Map

No

Yes

Opsi CPU.

Untuk informasi lebih lanjut, lihat properti CpuOptions.

CreditSpecification

String

No

Yes

Mode operasi instans burstable.

Nilai yang valid:

  • Unlimited (default): Mode tanpa batas.

  • Standard: Mode standar.

Untuk informasi lebih lanjut tentang performa instans, lihat Instans burstable.

DedicatedHostId

String

No

Yes

Menentukan apakah akan membuat instans ECS pada host khusus.

Host khusus tidak mendukung instans preemptible. Jika Anda menentukan DedicatedHostId, SpotStrategy dan SpotPriceLimit akan diabaikan. Panggil DescribeDedicatedHosts untuk mengkueri ID host khusus.

DeploymentSetId

String

No

No

ID set penyebaran.

None.

DiskMappings

List

No

Yes

Disk yang akan disambungkan.

Maksimal 16 disk didukung. Untuk informasi lebih lanjut, lihat properti DiskMappings.

HostName

String

No

Yes

Hostname server cloud.

Titik (.) atau tanda hubung (-) tidak boleh menjadi karakter pertama atau terakhir, serta titik atau tanda hubung tidak boleh berurutan. Persyaratan penamaan untuk tipe instans berbeda adalah sebagai berikut:

  • Instans Windows: Hostname harus terdiri dari 2 hingga 15 karakter dan dapat berisi huruf kapital, huruf kecil, angka, dan tanda hubung (-). Tidak boleh mengandung titik (.) atau seluruhnya terdiri dari angka.

  • Tipe instans lain, seperti Linux: Hostname harus terdiri dari 2 hingga 64 karakter dan dapat mengandung beberapa titik (.). Setiap segmen antara dua titik (.) dapat berisi huruf kapital, huruf kecil, angka, dan tanda hubung (-).

HpcClusterId

String

No

No

ID kluster E-HPC tempat instans berada.

None.

ImageFamily

String

No

Yes

Nama keluarga gambar.

Tetapkan properti ini untuk mendapatkan gambar terbaru yang tersedia dalam keluarga gambar guna pembuatan instans. Anda tidak dapat menetapkan properti ini jika ImageId telah ditentukan.

ImageId

String

No

Yes

ID gambar instans, termasuk gambar publik, gambar kustom, dan gambar Marketplace Alibaba Cloud.

Untuk informasi lebih lanjut, lihat Gambar publik.

ImageName

String

No

Yes

Nama file gambar.

None.

ImageOptionsLoginAsNonRoot

Boolean

No

No

Menentukan apakah instans ECS menggunakan akun ecs-user untuk login.

Nilai yang valid:

  • true: Ya.

  • false: Tidak.

InstanceDescription

String

No

Yes

Deskripsi instans ECS.

Deskripsi harus terdiri dari 2 hingga 256 karakter bahasa Inggris atau Mandarin dan tidak boleh dimulai dengan http:// atau https://.

InstanceId

String

No

No

ID instans dari konfigurasi penskalaan.

None.

InstanceName

String

No

Yes

Nama instans yang dibuat berdasarkan konfigurasi penskalaan saat ini.

None.

InstancePatternInfos

List

No

Yes

Kumpulan informasi untuk konfigurasi cerdas.

Untuk informasi lebih lanjut, lihat properti InstancePatternInfos.

InstanceType

String

No

Yes

Tipe instans.

Untuk informasi lebih lanjut, lihat Ikhtisar keluarga instans.

InstanceTypeOverrides

List

No

Yes

Informasi tentang tipe instans yang ditentukan.

Untuk informasi lebih lanjut, lihat properti InstanceTypeOverrides.

InstanceTypes

List

No

Yes

Parameter multi-tipe-instans.

Jika InstanceTypes ditentukan, InstanceType tidak berlaku. Anda dapat mengonfigurasi hingga 10 tipe instans dalam satu konfigurasi penskalaan. Prioritasnya menurun sesuai urutan elemen daftar. Jika instans tidak dapat dibuat dengan tipe instans prioritas tinggi, Auto Scaling secara otomatis memilih tipe instans prioritas lebih rendah berikutnya.

InternetChargeType

String

No

Yes

Metode penagihan untuk bandwidth akses jaringan publik.

Nilai yang valid:

  • PayByBandwidth: Ditagih berdasarkan bandwidth tetap.

  • PayByTraffic (default): Ditagih berdasarkan traffic.

InternetMaxBandwidthIn

Integer

No

No

Bandwidth masuk publik maksimum.

Unit: Mbps.

Nilai yang valid: 1 hingga 200.

Jika Anda tidak menentukan properti ini, bandwidth masuk secara otomatis diatur ke 200 Mbps. Traffic data masuk gratis dan properti ini tidak pernah dikenai biaya.

InternetMaxBandwidthOut

Integer

No

Yes

Bandwidth keluar publik maksimum.

Nilai yang valid:

  • Penagihan berbasis bandwidth tetap: 0 hingga 100. Nilai default: 0.

  • Penagihan berbasis traffic: 0 hingga 100. Properti ini wajib diisi.

Unit: Mbps.

IoOptimized

String

No

Yes

Menentukan apakah akan membuat instans I/O teroptimasi.

Nilai yang valid:

  • none (bawaan): Tanpa optimasi I/O.

  • optimized: I/O teroptimasi.

Ipv6AddressCount

Integer

No

Yes

Jumlah alamat IPv6 yang di-generate secara acak untuk diberikan ke antarmuka jaringan elastis.

None.

KeyPairName

String

No

Yes

Nama pasangan kunci yang diikat ke instans.

  • Jika tipe instans adalah Windows, properti ini diabaikan dan nilai default-nya kosong.

  • Jika tipe instans adalah Linux, login berbasis password diinisialisasi sebagai dinonaktifkan.

LoadBalancerWeight

Integer

No

Yes

Bobot instans ECS ketika menjadi server backend load balancing.

Nilai yang valid: 1 hingga 100. Nilai default: 50.

Memory

Integer

No

Yes

Ukuran memori.

Unit: GiB. Anda dapat menentukan Cpu dan Memory bersama-sama untuk mendefinisikan rentang tipe instans. Misalnya, Cpu=2 dan Memory=16 mendefinisikan semua tipe instans dengan 2 vCPU dan memori 16 GiB. Auto Scaling menentukan tipe instans yang tersedia berdasarkan optimasi I/O, zona, dan faktor lainnya, lalu membuat instans dengan harga terendah.

Password

String

No

Yes

Password instans ECS.

Password harus terdiri dari 8 hingga 30 karakter dan harus mencakup tiga kategori karakter: huruf kapital, huruf kecil, angka, dan karakter khusus. Karakter khusus yang didukung:

()` ~!@#$%^&*-_+=\|{}[]:;'<>,.?/

Password untuk instans Windows tidak boleh dimulai dengan garis miring (/).

Catatan

Jika Anda menentukan Password, gunakan HTTPS untuk mengirim permintaan guna mencegah pengungkapan password.

PasswordInherit

Boolean

No

Yes

Menentukan apakah akan menggunakan password yang telah ditetapkan sebelumnya dalam gambar.

Jika password yang telah ditetapkan dalam gambar digunakan, pastikan gambar tersebut memiliki password yang telah ditetapkan sebelumnya.

PrivatePoolOptions

Map

No

Yes

Konfigurasi kolam privat untuk menjalankan instans.

Untuk informasi lebih lanjut, lihat properti PrivatePoolOptions.

RamRoleName

String

No

Yes

Nama role RAM instans.

Gunakan API RAM ListRoles untuk mengkueri nama role RAM. Untuk informasi lebih lanjut, lihat CreateRole dan ListRoles.

ResourceGroupId

String

No

Yes

ID kelompok sumber daya tempat instans berada.

None.

ScalingConfigurationName

String

No

Yes

Nama konfigurasi penskalaan.

Nama harus terdiri dari 2 hingga 64 karakter, dimulai dengan angka, huruf Inggris, atau karakter Mandarin, serta dapat berisi angka, huruf Inggris, karakter Mandarin, garis bawah (_), tanda hubung (-), dan titik (.).

Nama harus unik dalam grup penskalaan di wilayah yang sama.

Jika Anda tidak menentukan properti ini, ID konfigurasi penskalaan digunakan secara default.

SecurityEnhancementStrategy

String

No

No

Menentukan apakah akan mengaktifkan penguatan keamanan.

Nilai yang valid:

  • Active: Mengaktifkan penguatan keamanan dan hanya berlaku untuk gambar publik.

  • Deactive: Tidak mengaktifkan penguatan keamanan dan berlaku untuk semua jenis gambar.

SecurityGroupId

String

No

Yes

Grup keamanan tempat instans berada.

None.

SecurityGroupIds

List

No

Yes

Menambahkan instans ECS ke beberapa grup keamanan.

Catatan

SecurityGroupId dan SecurityGroupIds tidak dapat ditentukan secara bersamaan.

SpotDuration

Integer

No

Yes

Periode retensi instans preemptible.

Unit: jam. Nilai yang valid:

  • 1: Alibaba Cloud menjamin bahwa instans tidak dilepas secara otomatis selama satu jam setelah pembuatan. Setelah satu jam, sistem membandingkan bid dengan harga pasar dan memeriksa inventaris sumber daya untuk menentukan apakah akan menyimpan atau mereklaim instans.

  • 0: Alibaba Cloud tidak menjamin bahwa instans berjalan selama satu jam setelah pembuatan. Sistem membandingkan bid dengan harga pasar dan memeriksa inventaris sumber daya untuk menentukan apakah akan menyimpan atau mereklaim instans.

SpotInterruptionBehavior

String

No

Yes

Perilaku interupsi instans preemptible.

None.

SpotPriceLimit

Number

No

Yes

Harga maksimum per jam instans.

Mendukung hingga tiga tempat desimal.

Properti ini berlaku ketika SpotStrategy diatur ke SpotWithPriceLimit. Nilainya ditimpa oleh SpotPriceLimitForInstanceType.

SpotPriceLimitForInstanceType

Map

No

Yes

Tipe instans dan bid yang sesuai untuk instans preemptible.

Format: {"<instance_type_1>": <price_limit_1>, ..., {"<instance_type_10>": <price_limit_10>}.

Properti ini berlaku ketika SpotStrategy diatur ke SpotWithPriceLimit.

Anda dapat mengonfigurasi hingga 10 pasangan instans dan harga.

SpotStrategy

String

No

Yes

Strategi preemptible instans berbayar sesuai penggunaan.

Nilai yang valid:

  • NoSpot (default): Instans berbayar sesuai penggunaan normal.

  • SpotWithPriceLimit: Instans preemptible dengan batas harga.

  • SpotAsPriceGo: Sistem secara otomatis melakukan bidding sesuai harga pasar saat ini.

SystemDiskAutoSnapshotPolicyId

String

No

Yes

ID kebijakan snapshot otomatis yang digunakan oleh disk sistem.

None.

SystemDiskBurstingEnabled

Boolean

No

No

Menentukan apakah akan mengaktifkan performa burst untuk disk sistem.

Nilai yang valid:

  • true: Diaktifkan.

  • false: Dinonaktifkan.

SystemDiskCategories

List

No

Yes

Beberapa kategori disk untuk disk sistem.

Jika kategori disk prioritas tinggi tidak tersedia, Auto Scaling secara otomatis mencoba membuat disk sistem dengan kategori prioritas lebih rendah berikutnya. Nilai yang valid:

  • cloud: Disk dasar.

  • cloud_efficiency: Ultra disk.

  • cloud_ssd: Standard SSD.

  • cloud_essd: ESSD.

SystemDiskCategory

String

No

Yes

Kategori disk sistem.

Nilai yang valid:

  • cloud: Disk dasar.

  • cloud_efficiency: Ultra disk.

  • cloud_ssd: Standard SSD.

  • ephemeral_ssd: Local SSD.

  • cloud_essd: ESSD.

Ketika InstanceType adalah tipe instans seri-I dan instans tidak dioptimalkan I/O, nilai default-nya adalah cloud. Selain itu, nilai default-nya adalah cloud_efficiency.

SystemDiskDescription

String

No

Yes

Deskripsi disk sistem.

None.

SystemDiskDiskName

String

No

Yes

Nama disk sistem.

None.

SystemDiskEncryptAlgorithm

String

No

Yes

Algoritma enkripsi yang digunakan oleh disk sistem.

Nilai yang valid:

  • AES-256.

  • SM4-128.

SystemDiskEncrypted

Boolean

No

Yes

Menentukan apakah disk sistem dienkripsi.

Nilai yang valid:

  • true: Di-enkripsi.

  • false: Tidak di-enkripsi.

SystemDiskKMSKeyId

String

No

Yes

ID kunci KMS yang digunakan oleh disk sistem.

None.

SystemDiskPerformanceLevel

String

No

Yes

Tingkat performa ESSD yang digunakan sebagai disk sistem.

Nilai yang valid:

  • PL1 (default): Maksimal 50.000 IOPS baca/tulis acak per disk.

  • PL2: Maksimal 100.000 IOPS baca/tulis acak per disk.

  • PL3: Maksimal 1.000.000 IOPS baca/tulis acak per disk.

Untuk informasi tentang pemilihan tingkat performa ESSD, lihat ESSD.

SystemDiskProvisionedIops

Integer

No

Yes

Metrik performa IOPS (Input/Output Operations Per Second) yang disediakan untuk disk sistem.

None.

SystemDiskSize

Integer

No

Yes

Ukuran disk sistem.

Nilai yang valid: 20 hingga 500.

Nilai default: 40.

Unit: GiB.

Jika gambar kustom digunakan untuk membuat disk sistem, ukuran disk sistem harus lebih besar dari atau sama dengan ukuran gambar kustom.

TagList

List

No

Yes

Tag instans.

Tag diteruskan sebagai pasangan kunci-nilai. Anda dapat menggunakan hingga lima tag dalam format berikut: {"key1": "value1", "key2": "value2", ... "key5": "value5"}.

Untuk informasi lebih lanjut, lihat properti TagList.

Tenancy

String

No

Yes

Menentukan apakah akan membuat instans pada host khusus.

Nilai yang valid:

  • default: Membuat instans non-host-khusus.

  • host: Membuat instans host khusus. Jika DedicatedHostId tidak ditentukan, Alibaba Cloud secara otomatis memilih host khusus untuk instans.

UserData

String

No

Yes

Data pengguna yang diteruskan saat instans dibuat.

Konten tidak boleh melebihi 16 KB. Tidak perlu encoding Base64. Escape karakter khusus dengan backslash (\).

ZoneId

String

No

Yes

ID zona tempat instans berada.

None.

Sintaksis DiskMappings

"DiskMappings": [
  {
    "Category": String,
    "DiskName": String,
    "Description": String,
    "AutoSnapshotPolicyId": String,
    "PerformanceLevel": String,
    "Encrypted": String,
    "KMSKeyId": String,
    "Device": String,
    "SnapshotId": String,
    "Size": String,
    "DeleteWithInstance": Boolean,
    "ProvisionedIops": Integer,
    "Categories": List,
    "BurstingEnabled": Boolean
  }
]

Properti DiskMappings

Property

Type

Required

Editable

Description

Constraints

AutoSnapshotPolicyId

String

No

No

ID kebijakan snapshot otomatis yang digunakan oleh disk data.

None.

BurstingEnabled

Boolean

No

No

Menentukan apakah akan mengaktifkan performa burst untuk disk data.

Nilai yang valid:

  • true: Diaktifkan.

  • false: Dinonaktifkan.

Categories

List

No

No

Beberapa kategori disk untuk disk data.

Kategori disk pertama memiliki prioritas tertinggi, dan kategori disk lainnya memiliki prioritas menurun. Jika kategori disk prioritas tinggi tidak tersedia, Auto Scaling secara otomatis mencoba membuat disk data dengan kategori prioritas lebih rendah berikutnya. Nilai yang valid:

  • cloud: Disk dasar. Properti DeleteWithInstance dari disk dasar yang dibuat bersama instans bernilai true.

  • cloud_efficiency: Ultra disk.

  • cloud_ssd: Standard SSD.

  • cloud_essd: ESSD.

Category

String

No

No

Kategori disk data.

Nilai yang valid:

  • cloud: Disk dasar.

  • cloud_efficiency (default): Ultra disk.

  • cloud_ssd: Standard SSD.

  • ephemeral_ssd: Local SSD.

  • cloud_essd: ESSD. Untuk instans I/O teroptimasi, nilai default-nya adalah cloud_efficiency. Untuk instans non-I/O teroptimasi, nilai default-nya adalah cloud.

DeleteWithInstance

Boolean

No

No

Menentukan apakah disk data dilepas bersama instans.

Nilai yang valid:

  • true: Disk dilepas saat instans dilepas.

  • false: Disk dipertahankan saat instans dilepas.

Description

String

No

No

Deskripsi disk data.

Panjangnya harus 2 hingga 256 karakter. Tidak boleh dimulai dengan http:// atau https://.

Device

String

No

No

Titik pemasangan disk data.

Jika properti ini tidak ditentukan, sistem akan menetapkannya saat instans ECS dibuat secara otomatis. Nilainya dimulai dari /dev/xvdb dan berakhir di /dev/xvdz.

DiskName

String

No

No

Nama disk data.

Panjangnya harus 2 hingga 128 karakter. Harus dimulai dengan huruf Inggris atau karakter Mandarin dan tidak boleh dimulai dengan http:// atau https://. Dapat berisi angka, huruf Inggris, karakter Mandarin, titik dua (:), garis bawah (_), dan tanda hubung (-).

Encrypted

String

No

No

Menentukan apakah disk data dienkripsi.

Nilai yang valid:

  • true: Di-enkripsi.

  • false (default): Tidak di-enkripsi.

KMSKeyId

String

No

No

ID kunci KMS untuk disk data.

None.

PerformanceLevel

String

No

No

Tingkat performa ESSD yang digunakan sebagai disk data.

Nilai yang valid:

  • PL1 (default): Maksimal 50.000 IOPS baca/tulis acak per disk.

  • PL2: Maksimal 100.000 IOPS baca/tulis acak per disk.

  • PL3: Maksimal 1.000.000 IOPS baca/tulis acak per disk.

Untuk informasi tentang pemilihan tingkat performa ESSD, lihat ESSD.

ProvisionedIops

Integer

No

No

Metrik performa IOPS (Input/Output Operations Per Second) yang disediakan untuk disk data.

Catatan

IOPS adalah jumlah operasi I/O yang dapat diproses per detik dan menunjukkan kemampuan baca/tulis penyimpanan blok. Unit: operasi.

Size

String

No

No

Ukuran disk data.

Nilai yang valid:

  • cloud: 5 hingga 2.000.

  • cloud_efficiency: 20 hingga 32.768.

  • cloud_ssd: 20 hingga 32.768.

  • cloud_essd: 20 hingga 32.768.

  • ephemeral_ssd: 5 hingga 800.

Unit: GB.

Setelah properti ini ditentukan, ukuran disk harus lebih besar dari atau sama dengan ukuran snapshot yang ditentukan oleh SnapshotId.

SnapshotId

String

No

No

Snapshot yang digunakan untuk membuat disk data.

Setelah properti ini ditentukan, Size diabaikan dan ukuran disk aktual adalah ukuran snapshot yang ditentukan. Jika snapshot dibuat pada atau sebelum 15 Juli 2013, panggilan ditolak dan InvalidSnapshot.TooOld ditampilkan dalam parameter respons.

Sintaksis PrivatePoolOptions

"PrivatePoolOptions": 
  {
    "MatchCriteria": String,
    "Id": String
  }

Properti PrivatePoolOptions

Property

Type

Required

Editable

Description

Constraints

Id

String

No

Yes

ID kolam privat.

ID layanan jaminan elastisitas atau reservasi kapasitas.

MatchCriteria

String

No

Yes

Opsi kapasitas kolam privat untuk menjalankan instans.

Layanan jaminan elastisitas atau reservasi kapasitas menghasilkan kapasitas kolam privat setelah berlaku untuk menjalankan instans. Nilai yang valid:

  • Open: Mode terbuka. Secara otomatis mencocokkan kapasitas kolam privat terbuka. Jika tidak ada kapasitas kolam privat yang cocok, sumber daya kolam publik digunakan untuk menjalankan instans. PrivatePoolOptions.Id tidak diperlukan dalam mode ini.

  • Target: Mode target. Menjalankan instans menggunakan kapasitas kolam privat yang ditentukan. Jika kapasitas kolam privat tidak tersedia, menjalankan instans gagal. PrivatePoolOptions.Id diperlukan dalam mode ini.

  • None: Mode tidak digunakan. Kapasitas kolam privat tidak digunakan untuk menjalankan instans.

Sintaksis InstanceTypeOverrides

"InstanceTypeOverrides": [
  {
    "InstanceType": String,
    "WeightedCapacity": Integer
  }
]

Properti InstanceTypeOverrides

Property

Type

Required

Editable

Description

Constraints

InstanceType

String

No

Yes

Tipe instans yang ditentukan.

Untuk menskalakan grup penskalaan berdasarkan kapasitas tipe instans, tentukan properti ini dan WeightedCapacity bersama-sama.

WeightedCapacity

Integer

No

Yes

Bobot tipe instans yang ditentukan.

Jumlah vCPU, ukuran memori, dan metrik performa lainnya dapat berbeda-beda tergantung tipe instans. Anda dapat mengonfigurasi bobot berbeda untuk tipe instans berbeda sesuai kebutuhan. Contohnya:

  • Kapasitas saat ini: 0.

  • Kapasitas yang diinginkan: 6.

  • Kapasitas ecs.c5.xlarge: 4.

Untuk memenuhi kapasitas yang diinginkan, grup penskalaan menambahkan dua instans ecs.c5.xlarge.

Sintaksis InstancePatternInfos

"InstancePatternInfos": [
  {
    "BurstablePerformance": String,
    "Architectures": List,
    "InstanceFamilyLevel": String,
    "Memory": Number,
    "MaxPrice": Number,
    "ExcludedInstanceTypes": List,
    "Cores": Integer
  }
]

Properti InstancePatternInfos

Property

Type

Required

Editable

Description

Constraints

Architectures

List

No

Yes

Tipe arsitektur tipe instans.

Nilai yang valid:

  • X86: Komputasi X86.

  • Heterogeneous: Komputasi heterogen, seperti GPU atau FPGA.

  • BareMental: Instans Komputasi Elastis Bare Metal.

  • Arm: Komputasi Arm.

Default: Semua tipe arsitektur.

BurstablePerformance

String

No

No

Menentukan apakah tipe instans bersifat burstable.

Nilai yang valid:

  • Exclude: Mengecualikan tipe instans burstable.

  • Include: Menyertakan tipe instans burstable.

  • Required: Hanya menyertakan tipe instans burstable.

Nilai default: Include.

Cores

Integer

No

Yes

Jumlah core vCPU tipe instans dalam mode konfigurasi cerdas.

Digunakan untuk memfilter rentang tipe instans yang memenuhi persyaratan. Untuk informasi lebih lanjut, lihat Ikhtisar keluarga instans. Perhatikan hal berikut:

  • InstancePatternInfos hanya berlaku ketika tipe jaringan grup penskalaan adalah VPC.

  • Konfigurasikan InstancePatternInfos.Cores dan InstancePatternInfos.Memory bersama-sama.

  • Jika InstanceType atau InstanceTypes menentukan tipe instans, Auto Scaling lebih memprioritaskan penggunaan tipe instans yang ditentukan untuk skala keluar. Jika tipe instans tersebut kehabisan stok, Auto Scaling lebih memprioritaskan penggunaan tipe instans dengan harga terendah yang memenuhi nilai parameter InstancePatternInfos.

ExcludedInstanceTypes

List

No

Yes

Tipe instans yang dikecualikan.

Karakter wildcard () dapat mengecualikan satu tipe instans atau seluruh keluarga instans. Contohnya:

  • ecs.c6.large: Mengecualikan tipe instans ecs.c6.large.

  • ecs.c6.: Mengecualikan seluruh keluarga instans c6.

InstanceFamilyLevel

String

No

Yes

Tingkat keluarga instans.

Digunakan untuk memfilter rentang tipe instans yang memenuhi persyaratan dan berlaku ketika CostOptimization diaktifkan. Nilai yang valid:

  • EntryLevel: Tingkat pemula, yaitu tipe instans shared. Biayanya lebih murah tetapi tidak menjamin performa komputasi yang stabil. Cocok untuk skenario bisnis dengan utilisasi CPU rendah. Untuk informasi lebih lanjut, lihat Keluarga instans shared.

  • EnterpriseLevel: Tingkat enterprise. Memberikan performa stabil dan sumber daya eksklusif, serta cocok untuk skenario bisnis yang memerlukan stabilitas tinggi. Untuk informasi lebih lanjut, lihat Ikhtisar keluarga instans.

  • CreditEntryLevel: Tingkat pemula berbasis kredit, yaitu tipe instans burstable. Kredit CPU menjamin performa komputasi dan cocok untuk skenario bisnis dengan utilisasi CPU biasanya rendah dan kadang-kadang terjadi lonjakan CPU. Untuk informasi lebih lanjut, lihat Instans burstable.

MaxPrice

Number

No

Yes

Harga maksimum yang dapat diterima per jam untuk instans berbayar sesuai penggunaan atau instans preemptible dalam mode konfigurasi cerdas.

None.

Memory

Number

No

Yes

Ukuran memori tipe instans dalam mode konfigurasi cerdas.

Unit: GiB.

Digunakan untuk memfilter rentang tipe instans yang memenuhi persyaratan.

Sintaksis CpuOptions

"CpuOptions": 
  {
    "NestedVirtualization": String
  }

Properti CpuOptions

Property

Type

Required

Editable

Description

Constraints

NestedVirtualization

String

No

Yes

Menentukan apakah akan mengaktifkan virtualisasi bersarang.

Nilai yang valid:

  • enabled: Mengaktifkan virtualisasi bersarang.

  • disabled: Menonaktifkan virtualisasi bersarang.

Sintaksis TagList

"TagList": [
  {
    "Key": String,
    "Value": String
  }
]

Properti TagList

Property

Type

Required

Editable

Description

Constraints

Key

String

Yes

No

Kunci tag.

Panjangnya harus 1 hingga 64 karakter. Tidak boleh dimulai dengan aliyun atau acs: dan tidak boleh mengandung http:// atau https://.

Value

String

No

No

Nilai tag.

Panjangnya harus 0 hingga 128 karakter. Tidak boleh dimulai dengan aliyun atau acs: dan tidak boleh mengandung http:// atau https://.

Nilai kembalian

Fn::GetAtt

  • ScalingConfigurationId: ID konfigurasi penskalaan yang di-generate oleh sistem dan unik secara global.

  • ScalingGroupId: ID grup penskalaan tempat konfigurasi penskalaan tersebut berada.

Contoh

Skenario 1: Membuat konfigurasi penskalaan untuk grup penskalaan yang sudah ada.

ROSTemplateFormatVersion: '2015-09-01'
Description:
  zh-cn: "\u4e3a\u5df2\u6709\u4f38\u7f29\u7ec4\u521b\u5efa\u4e00\u4e2a\u7b80\u5355\u7684\u4f38\u7f29\u914d\u7f6e\uff0c\u6307\u5b9a\u5b9e\u4f8b\u89c4\u683c\u3001\u955c\u50cf\u548c\u5b89\u5168\u7ec4\u3002"
  en: Create a simple scaling configuration for an existing scaling group with specified instance type, image, and security group.
Parameters:
  AutoScalingGroupId:
    Type: String
    Label:
      zh-cn: "\u4f38\u7f29\u7ec4ID"
      en: Scaling Group ID
    Description:
      zh-cn: "\u9009\u62e9\u5df2\u521b\u5efa\u7684\u4f38\u7f29\u7ec4ID\u3002"
      en: Select an existing scaling group ID.
    AssociationProperty: ALIYUN::ESS::AutoScalingGroup::AutoScalingGroupId
  SecurityGroupId:
    Type: String
    Label:
      zh-cn: "\u5b89\u5168\u7ec4ID"
      en: Security Group ID
    Description:
      zh-cn: "\u9009\u62e9\u5b89\u5168\u7ec4ID\u3002"
      en: Select a security group ID.
    AssociationProperty: ALIYUN::ECS::SecurityGroup::SecurityGroupId
  ImageId:
    Type: String
    Label:
      zh-cn: "\u955c\u50cfID"
      en: Image ID
    Description:
      zh-cn: "\u9009\u62e9\u7528\u4e8e\u521b\u5efa\u5b9e\u4f8b\u7684\u955c\u50cf\u3002"
      en: Select an image for creating instances.
    AssociationProperty: ALIYUN::ECS::Image::ImageId
    AssociationPropertyMetadata:
      SupportedImageOwnerAlias:
        - system
        - self
        - others
  InstanceType:
    Type: String
    Label:
      zh-cn: "\u5b9e\u4f8b\u89c4\u683c"
      en: Instance Type
    Description:
      zh-cn: "\u9009\u62e9ECS\u5b9e\u4f8b\u89c4\u683c\u3002"
      en: Select an ECS instance type.
    AssociationProperty: ALIYUN::ECS::Instance::InstanceType
    AssociationPropertyMetadata:
      InstanceChargeType: PostPaid
  SystemDiskCategory:
    Type: String
    Label:
      zh-cn: "\u7cfb\u7edf\u76d8\u7c7b\u578b"
      en: System Disk Category
    Description:
      zh-cn: "\u9009\u62e9\u7cfb\u7edf\u76d8\u7c7b\u578b\u3002"
      en: Select a system disk category.
    AssociationProperty: ALIYUN::ECS::Disk::SystemDiskCategory
    AssociationPropertyMetadata:
      InstanceType: ${InstanceType}
    Default: cloud_essd
Resources:
  ScalingConfiguration:
    Type: ALIYUN::ESS::ScalingConfiguration
    Properties:
      ScalingGroupId:
        Ref: AutoScalingGroupId
      SecurityGroupId:
        Ref: SecurityGroupId
      ImageId:
        Ref: ImageId
      InstanceType:
        Ref: InstanceType
      SystemDiskCategory:
        Ref: SystemDiskCategory
      SystemDiskSize: 40
      ScalingConfigurationName:
        Ref: ALIYUN::StackName
      InternetMaxBandwidthOut: 5
      InternetChargeType: PayByTraffic
Outputs:
  ScalingConfigurationId:
    Description:
      zh-cn: "\u4f38\u7f29\u914d\u7f6eID\u3002"
      en: Scaling configuration ID.
    Label:
      zh-cn: "\u4f38\u7f29\u914d\u7f6eID"
      en: Scaling Configuration ID
    Value:
      Fn::GetAtt:
        - ScalingConfiguration
        - ScalingConfigurationId
Metadata:
  ALIYUN::ROS::Interface:
    ParameterGroups:
      - Parameters:
          - AutoScalingGroupId
          - SecurityGroupId
          - ImageId
          - InstanceType
          - SystemDiskCategory
{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Description": {
    "zh-cn": "\u4e3a\u5df2\u6709\u4f38\u7f29\u7ec4\u521b\u5efa\u4e00\u4e2a\u7b80\u5355\u7684\u4f38\u7f29\u914d\u7f6e,\u6307\u5b9a\u5b9e\u4f8b\u89c4\u683c、\u955c\u50cf\u548c\u5b89\u5168\u7ec4。",
    "en": "Create a simple scaling configuration for an existing scaling group with specified instance type, image, and security group."
  },
  "Parameters": {
    "AutoScalingGroupId": {
      "Type": "String",
      "Label": {
        "zh-cn": "\u4f38\u7f29\u7ec4ID",
        "en": "Scaling Group ID"
      },
      "Description": {
        "zh-cn": "\u9009\u62e9\u5df2\u521b\u5efa\u7684\u4f38\u7f29\u7ec4ID。",
        "en": "Select an existing scaling group ID."
      },
      "AssociationProperty": "ALIYUN::ESS::AutoScalingGroup::AutoScalingGroupId"
    },
    "SecurityGroupId": {
      "Type": "String",
      "Label": {
        "zh-cn": "\u5b89\u5168\u7ec4ID",
        "en": "Security Group ID"
      },
      "Description": {
        "zh-cn": "\u9009\u62e9\u5b89\u5168\u7ec4ID。",
        "en": "Select a security group ID."
      },
      "AssociationProperty": "ALIYUN::ECS::SecurityGroup::SecurityGroupId"
    },
    "ImageId": {
      "Type": "String",
      "Label": {
        "zh-cn": "\u955c\u50cfID",
        "en": "Image ID"
      },
      "Description": {
        "zh-cn": "\u9009\u62e9\u7528\u4e8e\u521b\u5efa\u5b9e\u4f8b\u7684\u955c\u50cf。",
        "en": "Select an image for creating instances."
      },
      "AssociationProperty": "ALIYUN::ECS::Image::ImageId",
      "AssociationPropertyMetadata": {
        "SupportedImageOwnerAlias": [
          "system",
          "self",
          "others"
        ]
      }
    },
    "InstanceType": {
      "Type": "String",
      "Label": {
        "zh-cn": "\u5b9e\u4f8b\u89c4\u683c",
        "en": "Instance Type"
      },
      "Description": {
        "zh-cn": "\u9009\u62e9ECS\u5b9e\u4f8b\u89c4\u683c。",
        "en": "Select an ECS instance type."
      },
      "AssociationProperty": "ALIYUN::ECS::Instance::InstanceType",
      "AssociationPropertyMetadata": {
        "InstanceChargeType": "PostPaid"
      }
    },
    "SystemDiskCategory": {
      "Type": "String",
      "Label": {
        "zh-cn": "\u7cfb\u7edf\u76d8\u7c7b\u578b",
        "en": "System Disk Category"
      },
      "Description": {
        "zh-cn": "\u9009\u62e9\u7cfb\u7edf\u76d8\u7c7b\u578b。",
        "en": "Select a system disk category."
      },
      "AssociationProperty": "ALIYUN::ECS::Disk::SystemDiskCategory",
      "AssociationPropertyMetadata": {
        "InstanceType": "${InstanceType}"
      },
      "Default": "cloud_essd"
    }
  },
  "Resources": {
    "ScalingConfiguration": {
      "Type": "ALIYUN::ESS::ScalingConfiguration",
      "Properties": {
        "ScalingGroupId": {
          "Ref": "AutoScalingGroupId"
        },
        "SecurityGroupId": {
          "Ref": "SecurityGroupId"
        },
        "ImageId": {
          "Ref": "ImageId"
        },
        "InstanceType": {
          "Ref": "InstanceType"
        },
        "SystemDiskCategory": {
          "Ref": "SystemDiskCategory"
        },
        "SystemDiskSize": 40,
        "ScalingConfigurationName": {
          "Ref": "ALIYUN::StackName"
        },
        "InternetMaxBandwidthOut": 5,
        "InternetChargeType": "PayByTraffic"
      }
    }
  },
  "Outputs": {
    "ScalingConfigurationId": {
      "Description": {
        "zh-cn": "\u4f38\u7f29\u914d\u7f6eID。",
        "en": "Scaling configuration ID."
      },
      "Label": {
        "zh-cn": "\u4f38\u7f29\u914d\u7f6eID",
        "en": "Scaling Configuration ID"
      },
      "Value": {
        "Fn::GetAtt": [
          "ScalingConfiguration",
          "ScalingConfigurationId"
        ]
      }
    }
  },
  "Metadata": {
    "ALIYUN::ROS::Interface": {
      "ParameterGroups": [
        {
          "Parameters": [
            "AutoScalingGroupId",
            "SecurityGroupId",
            "ImageId",
            "InstanceType",
            "SystemDiskCategory"
          ]
        }
      ]
    }
  }
}

Skenario 2: Membuat jaringan VPC dan membangun infrastruktur lengkap grup penskalaan.

ROSTemplateFormatVersion: '2015-09-01'
Description:
  zh-cn: "\u521b\u5efaVPC\u3001\u4ea4\u6362\u673a\u3001\u5b89\u5168\u7ec4\u3001\u4f38\u7f29\u7ec4\u548c\u4f38\u7f29\u914d\u7f6e\uff0c\u5e76\u542f\u7528\u4f38\u7f29\u7ec4\uff0c\u5b9e\u73b0\u5b8c\u6574\u7684\u5f39\u6027\u4f38\u7f29\u57fa\u7840\u67b6\u6784\u3002"
  en: Create VPC, VSwitch, Security Group, Scaling Group and Scaling Configuration, then enable the scaling group to build a complete auto-scaling infrastructure.
Parameters:
  ZoneId:
    Type: String
    Label:
      zh-cn: "\u53ef\u7528\u533a"
      en: Availability Zone
    Description:
      zh-cn: "\u9009\u62e9\u53ef\u7528\u533a\u3002"
      en: Select an availability zone.
    AssociationProperty: ALIYUN::ECS::Instance::ZoneId
    AssociationPropertyMetadata:
      AutoSelectFirst: true
  InstanceType:
    Type: String
    Label:
      zh-cn: "\u5b9e\u4f8b\u89c4\u683c"
      en: Instance Type
    Description:
      zh-cn: "\u9009\u62e9ECS\u5b9e\u4f8b\u89c4\u683c\u3002"
      en: Select an ECS instance type.
    AssociationProperty: ALIYUN::ECS::Instance::InstanceType
    AssociationPropertyMetadata:
      InstanceChargeType: PostPaid
      ZoneId: ${ZoneId}
  ImageId:
    Type: String
    Label:
      zh-cn: "\u955c\u50cfID"
      en: Image ID
    Description:
      zh-cn: "\u9009\u62e9\u7528\u4e8e\u521b\u5efa\u5b9e\u4f8b\u7684\u955c\u50cf\u3002"
      en: Select an image for creating instances.
    AssociationProperty: ALIYUN::ECS::Image::ImageId
    AssociationPropertyMetadata:
      SupportedImageOwnerAlias:
        - system
        - self
        - others
  SystemDiskCategory:
    Type: String
    Label:
      zh-cn: "\u7cfb\u7edf\u76d8\u7c7b\u578b"
      en: System Disk Category
    Description:
      zh-cn: "\u9009\u62e9\u7cfb\u7edf\u76d8\u7c7b\u578b\u3002"
      en: Select a system disk category.
    AssociationProperty: ALIYUN::ECS::Disk::SystemDiskCategory
    AssociationPropertyMetadata:
      InstanceType: ${InstanceType}
    Default: cloud_essd
  InstancePassword:
    Type: String
    Label:
      zh-cn: "\u5b9e\u4f8b\u5bc6\u7801"
      en: Instance Password
    Description:
      zh-cn: "\u670d\u52a1\u5668\u767b\u5f55\u5bc6\u7801\uff0c\u957f\u5ea68-30\uff0c\u5fc5\u987b\u5305\u542b\u4e09\u9879\uff08\u5927\u5199\u5b57\u6bcd\u3001\u5c0f\u5199\u5b57\u6bcd\u3001\u6570\u5b57\u3001\u7279\u6b8a\u7b26\u53f7\uff09\u3002"
      en: Server login password, 8-30 characters, must contain three types (uppercase, lowercase, numbers, special symbols).
    NoEcho: true
    AssociationProperty: ALIYUN::ECS::Instance::Password
    ConstraintDescription:
      zh-cn: "\u957f\u5ea68-30\uff0c\u5fc5\u987b\u5305\u542b\u4e09\u9879\uff08\u5927\u5199\u5b57\u6bcd\u3001\u5c0f\u5199\u5b57\u6bcd\u3001\u6570\u5b57\u3001\u7279\u6b8a\u7b26\u53f7\uff09\u3002"
      en: Length 8-30, must contain three types (uppercase, lowercase, numbers, special symbols).
  MaxSize:
    Type: Number
    Label:
      zh-cn: "\u6700\u5927\u5b9e\u4f8b\u6570"
      en: Max Size
    Description:
      zh-cn: "\u4f38\u7f29\u7ec4\u5185ECS\u5b9e\u4f8b\u4e2a\u6570\u7684\u6700\u5927\u503c\u3002"
      en: The maximum number of ECS instances in the scaling group.
    Default: 5
    MinValue: 0
    MaxValue: 1000
  MinSize:
    Type: Number
    Label:
      zh-cn: "\u6700\u5c0f\u5b9e\u4f8b\u6570"
      en: Min Size
    Description:
      zh-cn: "\u4f38\u7f29\u7ec4\u5185ECS\u5b9e\u4f8b\u4e2a\u6570\u7684\u6700\u5c0f\u503c\u3002"
      en: The minimum number of ECS instances in the scaling group.
    Default: 1
    MinValue: 0
    MaxValue: 1000
Resources:
  Vpc:
    Type: ALIYUN::ECS::VPC
    Properties:
      VpcName:
        Fn::Sub: ${ALIYUN::StackName}-vpc
      CidrBlock: 192.168.0.0/16
  VSwitch:
    Type: ALIYUN::ECS::VSwitch
    Properties:
      VSwitchName:
        Fn::Sub: ${ALIYUN::StackName}-vsw
      VpcId:
        Ref: Vpc
      CidrBlock: 192.168.0.0/24
      ZoneId:
        Ref: ZoneId
  SecurityGroup:
    Type: ALIYUN::ECS::SecurityGroup
    Properties:
      SecurityGroupName:
        Fn::Sub: ${ALIYUN::StackName}-sg
      VpcId:
        Ref: Vpc
      SecurityGroupIngress:
        - PortRange: 22/22
          Priority: 1
          SourceCidrIp: 0.0.0.0/0
          IpProtocol: tcp
        - PortRange: 80/80
          Priority: 1
          SourceCidrIp: 0.0.0.0/0
          IpProtocol: tcp
        - PortRange: 443/443
          Priority: 1
          SourceCidrIp: 0.0.0.0/0
          IpProtocol: tcp
      SecurityGroupEgress:
        - PortRange: '-1/-1'
          Priority: 1
          IpProtocol: all
          DestCidrIp: 0.0.0.0/0
          NicType: intranet
  ScalingGroup:
    Type: ALIYUN::ESS::ScalingGroup
    DependsOn: SecurityGroup
    Properties:
      MinSize:
        Ref: MinSize
      MaxSize:
        Ref: MaxSize
      DefaultCooldown: 300
      ScalingGroupName: web-autoscaling-group
      VpcId:
        Ref: Vpc
      VSwitchId:
        Ref: VSwitch
      HealthCheckType: ECS
      RemovalPolicys:
        - OldestInstance
        - NewestInstance
      GroupDeletionProtection: false
  ScalingConfiguration:
    Type: ALIYUN::ESS::ScalingConfiguration
    DependsOn: ScalingGroup
    Properties:
      ScalingGroupId:
        Ref: ScalingGroup
      SecurityGroupId:
        Ref: SecurityGroup
      ImageId:
        Ref: ImageId
      InstanceType:
        Ref: InstanceType
      SystemDiskCategory:
        Ref: SystemDiskCategory
      SystemDiskSize: 40
      ScalingConfigurationName: web-scaling-config
      Password:
        Ref: InstancePassword
      InternetMaxBandwidthOut: 5
      InternetChargeType: PayByTraffic
      IoOptimized: optimized
      TagList:
        - Key: CreatedBy
          Value: ROS
  ScalingGroupEnable:
    Type: ALIYUN::ESS::ScalingGroupEnable
    Properties:
      ScalingGroupId:
        Ref: ScalingGroup
      ScalingConfigurationId:
        Ref: ScalingConfiguration
      ScalingRuleArisExecuteVersion: 0
Outputs:
  ScalingGroupId:
    Description:
      zh-cn: "\u4f38\u7f29\u7ec4ID\u3002"
      en: Scaling group ID.
    Label:
      zh-cn: "\u4f38\u7f29\u7ec4ID"
      en: Scaling Group ID
    Value:
      Fn::GetAtt:
        - ScalingGroup
        - ScalingGroupId
  ScalingConfigurationId:
    Description:
      zh-cn: "\u4f38\u7f29\u914d\u7f6eID\u3002"
      en: Scaling configuration ID.
    Label:
      zh-cn: "\u4f38\u7f29\u914d\u7f6eID"
      en: Scaling Configuration ID
    Value:
      Fn::GetAtt:
        - ScalingConfiguration
        - ScalingConfigurationId
  SecurityGroupId:
    Description:
      zh-cn: "\u5b89\u5168\u7ec4ID\u3002"
      en: Security group ID.
    Label:
      zh-cn: "\u5b89\u5168\u7ec4ID"
      en: Security Group ID
    Value:
      Ref: SecurityGroup
Metadata:
  ALIYUN::ROS::Interface:
    ParameterGroups:
      - Parameters:
          - ZoneId
          - InstanceType
          - ImageId
          - SystemDiskCategory
          - InstancePassword
      - Parameters:
          - MaxSize
          - MinSize
{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Description": {
    "zh-cn": "\u521b\u5efaVPC、\u4ea4\u6362\u673a、\u5b89\u5168\u7ec4、\u4f38\u7f29\u7ec4\u548c\u4f38\u7f29\u914d\u7f6e,\u5e76\u542f\u7528\u4f38\u7f29\u7ec4,\u5b9e\u73b0\u5b8c\u6574\u7684\u5f39\u6027\u4f38\u7f29\u57fa\u7840\u67b6\u6784。",
    "en": "Create VPC, VSwitch, Security Group, Scaling Group and Scaling Configuration, then enable the scaling group to build a complete auto-scaling infrastructure."
  },
  "Parameters": {
    "ZoneId": {
      "Type": "String",
      "Label": {
        "zh-cn": "\u53ef\u7528\u533a",
        "en": "Availability Zone"
      },
      "Description": {
        "zh-cn": "\u9009\u62e9\u53ef\u7528\u533a。",
        "en": "Select an availability zone."
      },
      "AssociationProperty": "ALIYUN::ECS::Instance::ZoneId",
      "AssociationPropertyMetadata": {
        "AutoSelectFirst": true
      }
    },
    "InstanceType": {
      "Type": "String",
      "Label": {
        "zh-cn": "\u5b9e\u4f8b\u89c4\u683c",
        "en": "Instance Type"
      },
      "Description": {
        "zh-cn": "\u9009\u62e9ECS\u5b9e\u4f8b\u89c4\u683c。",
        "en": "Select an ECS instance type."
      },
      "AssociationProperty": "ALIYUN::ECS::Instance::InstanceType",
      "AssociationPropertyMetadata": {
        "InstanceChargeType": "PostPaid",
        "ZoneId": "${ZoneId}"
      }
    },
    "ImageId": {
      "Type": "String",
      "Label": {
        "zh-cn": "\u955c\u50cfID",
        "en": "Image ID"
      },
      "Description": {
        "zh-cn": "\u9009\u62e9\u7528\u4e8e\u521b\u5efa\u5b9e\u4f8b\u7684\u955c\u50cf。",
        "en": "Select an image for creating instances."
      },
      "AssociationProperty": "ALIYUN::ECS::Image::ImageId",
      "AssociationPropertyMetadata": {
        "SupportedImageOwnerAlias": [
          "system",
          "self",
          "others"
        ]
      }
    },
    "SystemDiskCategory": {
      "Type": "String",
      "Label": {
        "zh-cn": "\u7cfb\u7edf\u76d8\u7c7b\u578b",
        "en": "System Disk Category"
      },
      "Description": {
        "zh-cn": "\u9009\u62e9\u7cfb\u7edf\u76d8\u7c7b\u578b。",
        "en": "Select a system disk category."
      },
      "AssociationProperty": "ALIYUN::ECS::Disk::SystemDiskCategory",
      "AssociationPropertyMetadata": {
        "InstanceType": "${InstanceType}"
      },
      "Default": "cloud_essd"
    },
    "InstancePassword": {
      "Type": "String",
      "Label": {
        "zh-cn": "\u5b9e\u4f8b\u5bc6\u7801",
        "en": "Instance Password"
      },
      "Description": {
        "zh-cn": "\u670d\u52a1\u5668\u767b\u5f55\u5bc6\u7801,\u957f\u5ea68-30,\u5fc5\u987b\u5305\u542b\u4e09\u9879(\u5927\u5199\u5b57\u6bcd、\u5c0f\u5199\u5b57\u6bcd、\u6570\u5b57、\u7279\u6b8a\u7b26\u53f7)。",
        "en": "Server login password, 8-30 characters, must contain three types (uppercase, lowercase, numbers, special symbols)."
      },
      "NoEcho": true,
      "AssociationProperty": "ALIYUN::ECS::Instance::Password",
      "ConstraintDescription": {
        "zh-cn": "\u957f\u5ea68-30,\u5fc5\u987b\u5305\u542b\u4e09\u9879(\u5927\u5199\u5b57\u6bcd、\u5c0f\u5199\u5b57\u6bcd、\u6570\u5b57、\u7279\u6b8a\u7b26\u53f7)。",
        "en": "Length 8-30, must contain three types (uppercase, lowercase, numbers, special symbols)."
      }
    },
    "MaxSize": {
      "Type": "Number",
      "Label": {
        "zh-cn": "\u6700\u5927\u5b9e\u4f8b\u6570",
        "en": "Max Size"
      },
      "Description": {
        "zh-cn": "\u4f38\u7f29\u7ec4\u5185ECS\u5b9e\u4f8b\u4e2a\u6570\u7684\u6700\u5927\u503c。",
        "en": "The maximum number of ECS instances in the scaling group."
      },
      "Default": 5,
      "MinValue": 0,
      "MaxValue": 1000
    },
    "MinSize": {
      "Type": "Number",
      "Label": {
        "zh-cn": "\u6700\u5c0f\u5b9e\u4f8b\u6570",
        "en": "Min Size"
      },
      "Description": {
        "zh-cn": "\u4f38\u7f29\u7ec4\u5185ECS\u5b9e\u4f8b\u4e2a\u6570\u7684\u6700\u5c0f\u503c。",
        "en": "The minimum number of ECS instances in the scaling group."
      },
      "Default": 1,
      "MinValue": 0,
      "MaxValue": 1000
    }
  },
  "Resources": {
    "Vpc": {
      "Type": "ALIYUN::ECS::VPC",
      "Properties": {
        "VpcName": {
          "Fn::Sub": "${ALIYUN::StackName}-vpc"
        },
        "CidrBlock": "192.168.0.0/16"
      }
    },
    "VSwitch": {
      "Type": "ALIYUN::ECS::VSwitch",
      "Properties": {
        "VSwitchName": {
          "Fn::Sub": "${ALIYUN::StackName}-vsw"
        },
        "VpcId": {
          "Ref": "Vpc"
        },
        "CidrBlock": "192.168.0.0/24",
        "ZoneId": {
          "Ref": "ZoneId"
        }
      }
    },
    "SecurityGroup": {
      "Type": "ALIYUN::ECS::SecurityGroup",
      "Properties": {
        "SecurityGroupName": {
          "Fn::Sub": "${ALIYUN::StackName}-sg"
        },
        "VpcId": {
          "Ref": "Vpc"
        },
        "SecurityGroupIngress": [
          {
            "PortRange": "22/22",
            "Priority": 1,
            "SourceCidrIp": "0.0.0.0/0",
            "IpProtocol": "tcp"
          },
          {
            "PortRange": "80/80",
            "Priority": 1,
            "SourceCidrIp": "0.0.0.0/0",
            "IpProtocol": "tcp"
          },
          {
            "PortRange": "443/443",
            "Priority": 1,
            "SourceCidrIp": "0.0.0.0/0",
            "IpProtocol": "tcp"
          }
        ],
        "SecurityGroupEgress": [
          {
            "PortRange": "-1/-1",
            "Priority": 1,
            "IpProtocol": "all",
            "DestCidrIp": "0.0.0.0/0",
            "NicType": "intranet"
          }
        ]
      }
    },
    "ScalingGroup": {
      "Type": "ALIYUN::ESS::ScalingGroup",
      "DependsOn": "SecurityGroup",
      "Properties": {
        "MinSize": {
          "Ref": "MinSize"
        },
        "MaxSize": {
          "Ref": "MaxSize"
        },
        "DefaultCooldown": 300,
        "ScalingGroupName": "web-autoscaling-group",
        "VpcId": {
          "Ref": "Vpc"
        },
        "VSwitchId": {
          "Ref": "VSwitch"
        },
        "HealthCheckType": "ECS",
        "RemovalPolicys": [
          "OldestInstance",
          "NewestInstance"
        ],
        "GroupDeletionProtection": false
      }
    },
    "ScalingConfiguration": {
      "Type": "ALIYUN::ESS::ScalingConfiguration",
      "DependsOn": "ScalingGroup",
      "Properties": {
        "ScalingGroupId": {
          "Ref": "ScalingGroup"
        },
        "SecurityGroupId": {
          "Ref": "SecurityGroup"
        },
        "ImageId": {
          "Ref": "ImageId"
        },
        "InstanceType": {
          "Ref": "InstanceType"
        },
        "SystemDiskCategory": {
          "Ref": "SystemDiskCategory"
        },
        "SystemDiskSize": 40,
        "ScalingConfigurationName": "web-scaling-config",
        "Password": {
          "Ref": "InstancePassword"
        },
        "InternetMaxBandwidthOut": 5,
        "InternetChargeType": "PayByTraffic",
        "IoOptimized": "optimized",
        "TagList": [
          {
            "Key": "CreatedBy",
            "Value": "ROS"
          }
        ]
      }
    },
    "ScalingGroupEnable": {
      "Type": "ALIYUN::ESS::ScalingGroupEnable",
      "Properties": {
        "ScalingGroupId": {
          "Ref": "ScalingGroup"
        },
        "ScalingConfigurationId": {
          "Ref": "ScalingConfiguration"
        },
        "ScalingRuleArisExecuteVersion": 0
      }
    }
  },
  "Outputs": {
    "ScalingGroupId": {
      "Description": {
        "zh-cn": "\u4f38\u7f29\u7ec4ID。",
        "en": "Scaling group ID."
      },
      "Label": {
        "zh-cn": "\u4f38\u7f29\u7ec4ID",
        "en": "Scaling Group ID"
      },
      "Value": {
        "Fn::GetAtt": [
          "ScalingGroup",
          "ScalingGroupId"
        ]
      }
    },
    "ScalingConfigurationId": {
      "Description": {
        "zh-cn": "\u4f38\u7f29\u914d\u7f6eID。",
        "en": "Scaling configuration ID."
      },
      "Label": {
        "zh-cn": "\u4f38\u7f29\u914d\u7f6eID",
        "en": "Scaling Configuration ID"
      },
      "Value": {
        "Fn::GetAtt": [
          "ScalingConfiguration",
          "ScalingConfigurationId"
        ]
      }
    },
    "SecurityGroupId": {
      "Description": {
        "zh-cn": "\u5b89\u5168\u7ec4ID。",
        "en": "Security group ID."
      },
      "Label": {
        "zh-cn": "\u5b89\u5168\u7ec4ID",
        "en": "Security Group ID"
      },
      "Value": {
        "Ref": "SecurityGroup"
      }
    }
  },
  "Metadata": {
    "ALIYUN::ROS::Interface": {
      "ParameterGroups": [
        {
          "Parameters": [
            "ZoneId",
            "InstanceType",
            "ImageId",
            "SystemDiskCategory",
            "InstancePassword"
          ]
        },
        {
          "Parameters": [
            "MaxSize",
            "MinSize"
          ]
        }
      ]
    }
  }
}

Skenario 3: Membuat solusi penskalaan otomatis lengkap yang mencakup load balancing CLB dan kait siklus hidup.

ROSTemplateFormatVersion: '2015-09-01'
Description:
  zh-cn: "\u521b\u5efa\u5b8c\u6574\u7684\u5f39\u6027\u4f38\u7f29\u65b9\u6848\uff0c\u5305\u542bVPC\u7f51\u7edc\u3001CLB\u8d1f\u8f7d\u5747\u8861\u3001\u591a\u5b9e\u4f8b\u89c4\u683c\u4f38\u7f29\u914d\u7f6e\uff08\u542b\u62a2\u5360\u5f0f\u5b9e\u4f8b\u7b56\u7565\u548c\u6570\u636e\u76d8\uff09\u3001\u751f\u547d\u5468\u671f\u6302\u94a9\uff08\u81ea\u52a8\u90e8\u7f72\u5e94\u7528\uff09\u3001\u4f38\u7f29\u7ec4\u542f\u7528\u4e0e\u8d1f\u8f7d\u5747\u8861\u6302\u8f7d\uff0c\u5b9e\u73b0\u9ad8\u53ef\u7528\u81ea\u52a8\u4f38\u7f29\u4e0e\u81ea\u52a8\u8fd0\u7ef4\u3002"
  en: Create a complete auto-scaling solution including VPC network, CLB load balancer, multi-instance-type scaling configuration with spot strategy and data disks, lifecycle hooks for automatic application deployment, scaling group enablement and load balancer attachment, achieving high-availability auto-scaling and automated O&M.
Parameters:
  ZoneId:
    Type: String
    Label:
      zh-cn: "\u53ef\u7528\u533a"
      en: Availability Zone
    Description:
      zh-cn: "\u9009\u62e9\u53ef\u7528\u533a\u3002"
      en: Select an availability zone.
    AssociationProperty: ALIYUN::ECS::Instance::ZoneId
    AssociationPropertyMetadata:
      AutoSelectFirst: true
  InstanceType:
    Type: String
    Label:
      zh-cn: "\u4e3b\u5b9e\u4f8b\u89c4\u683c"
      en: Primary Instance Type
    Description:
      zh-cn: "\u9009\u62e9ECS\u4e3b\u5b9e\u4f8b\u89c4\u683c\uff08\u4f38\u7f29\u914d\u7f6e\u5c06\u540c\u65f6\u914d\u7f6e\u5907\u9009\u89c4\u683c\u4ee5\u5e94\u5bf9\u5e93\u5b58\u4e0d\u8db3\uff09\u3002"
      en: Select the primary ECS instance type (the scaling configuration will also configure alternate types for inventory fallback).
    AssociationProperty: ALIYUN::ECS::Instance::InstanceType
    AssociationPropertyMetadata:
      InstanceChargeType: PostPaid
      ZoneId: ${ZoneId}
  ImageId:
    Type: String
    Label:
      zh-cn: "\u955c\u50cfID"
      en: Image ID
    Description:
      zh-cn: "\u9009\u62e9\u7528\u4e8e\u521b\u5efa\u5b9e\u4f8b\u7684\u955c\u50cf\u3002"
      en: Select an image for creating instances.
    AssociationProperty: ALIYUN::ECS::Image::ImageId
    AssociationPropertyMetadata:
      SupportedImageOwnerAlias:
        - system
        - self
        - others
  SystemDiskCategory:
    Type: String
    Label:
      zh-cn: "\u7cfb\u7edf\u76d8\u7c7b\u578b"
      en: System Disk Category
    Description:
      zh-cn: "\u9009\u62e9\u7cfb\u7edf\u76d8\u7c7b\u578b\u3002"
      en: Select a system disk category.
    AssociationProperty: ALIYUN::ECS::Disk::SystemDiskCategory
    AssociationPropertyMetadata:
      InstanceType: ${InstanceType}
    Default: cloud_essd
  InstancePassword:
    Type: String
    Label:
      zh-cn: "\u5b9e\u4f8b\u5bc6\u7801"
      en: Instance Password
    Description:
      zh-cn: "\u670d\u52a1\u5668\u767b\u5f55\u5bc6\u7801\uff0c\u957f\u5ea68-30\uff0c\u5fc5\u987b\u5305\u542b\u4e09\u9879\uff08\u5927\u5199\u5b57\u6bcd\u3001\u5c0f\u5199\u5b57\u6bcd\u3001\u6570\u5b57\u3001\u7279\u6b8a\u7b26\u53f7\uff09\u3002"
      en: Server login password, 8-30 characters, must contain three types (uppercase, lowercase, numbers, special symbols).
    NoEcho: true
    AssociationProperty: ALIYUN::ECS::Instance::Password
    ConstraintDescription:
      zh-cn: "\u957f\u5ea68-30\uff0c\u5fc5\u987b\u5305\u542b\u4e09\u9879\uff08\u5927\u5199\u5b57\u6bcd\u3001\u5c0f\u5199\u5b57\u6bcd\u3001\u6570\u5b57\u3001\u7279\u6b8a\u7b26\u53f7\uff09\u3002"
      en: Length 8-30, must contain three types (uppercase, lowercase, numbers, special symbols).
  MaxSize:
    Type: Number
    Label:
      zh-cn: "\u6700\u5927\u5b9e\u4f8b\u6570"
      en: Max Size
    Description:
      zh-cn: "\u4f38\u7f29\u7ec4\u5185ECS\u5b9e\u4f8b\u4e2a\u6570\u7684\u6700\u5927\u503c\u3002"
      en: The maximum number of ECS instances in the scaling group.
    Default: 10
    MinValue: 0
    MaxValue: 1000
  MinSize:
    Type: Number
    Label:
      zh-cn: "\u6700\u5c0f\u5b9e\u4f8b\u6570"
      en: Min Size
    Description:
      zh-cn: "\u4f38\u7f29\u7ec4\u5185ECS\u5b9e\u4f8b\u4e2a\u6570\u7684\u6700\u5c0f\u503c\u3002"
      en: The minimum number of ECS instances in the scaling group.
    Default: 2
    MinValue: 0
    MaxValue: 1000
  DesiredCapacity:
    Type: Number
    Label:
      zh-cn: "\u671f\u671b\u5b9e\u4f8b\u6570"
      en: Desired Capacity
    Description:
      zh-cn: "\u4f38\u7f29\u7ec4\u5185ECS\u5b9e\u4f8b\u7684\u671f\u671b\u6570\u91cf\u3002"
      en: The desired number of ECS instances in the scaling group.
    Default: 2
    MinValue: 0
    MaxValue: 1000
  DataDiskSize:
    Type: Number
    Label:
      zh-cn: "\u6570\u636e\u76d8\u5927\u5c0f(GB)"
      en: Data Disk Size (GB)
    Description:
      zh-cn: "\u6570\u636e\u76d8\u5927\u5c0f\uff0c\u5355\u4f4dGB\u3002"
      en: Data disk size in GB.
    Default: 100
    MinValue: 20
    MaxValue: 32768
Resources:
  Vpc:
    Type: ALIYUN::ECS::VPC
    Properties:
      VpcName:
        Fn::Sub: ${ALIYUN::StackName}-vpc
      CidrBlock: 192.168.0.0/16
  VSwitch:
    Type: ALIYUN::ECS::VSwitch
    Properties:
      VSwitchName:
        Fn::Sub: ${ALIYUN::StackName}-vsw
      VpcId:
        Ref: Vpc
      CidrBlock: 192.168.0.0/24
      ZoneId:
        Ref: ZoneId
  SecurityGroup:
    Type: ALIYUN::ECS::SecurityGroup
    Properties:
      SecurityGroupName:
        Fn::Sub: ${ALIYUN::StackName}-sg
      VpcId:
        Ref: Vpc
      SecurityGroupIngress:
        - PortRange: 22/22
          Priority: 1
          SourceCidrIp: 0.0.0.0/0
          IpProtocol: tcp
        - PortRange: 80/80
          Priority: 1
          SourceCidrIp: 0.0.0.0/0
          IpProtocol: tcp
        - PortRange: 443/443
          Priority: 1
          SourceCidrIp: 0.0.0.0/0
          IpProtocol: tcp
      SecurityGroupEgress:
        - PortRange: '-1/-1'
          Priority: 1
          IpProtocol: all
          DestCidrIp: 0.0.0.0/0
          NicType: intranet
  LoadBalancer:
    Type: ALIYUN::SLB::LoadBalancer
    Properties:
      LoadBalancerName:
        Fn::Sub: ${ALIYUN::StackName}-slb
      AddressType: internet
      VpcId:
        Ref: Vpc
      VSwitchId:
        Ref: VSwitch
      LoadBalancerSpec: slb.s2.medium
      Bandwidth: 5
  LoadBalancerListener:
    Type: ALIYUN::SLB::Listener
    Properties:
      LoadBalancerId:
        Ref: LoadBalancer
      ListenerPort: 80
      BackendServerPort: 80
      Bandwidth: 5
      HealthCheck:
        HealthCheckType: http
        Interval: 5
        Timeout: 3
        URI: /
        HttpCode: http_2xx,http_3xx,http_4xx,http_5xx
        HealthyThreshold: 2
        UnhealthyThreshold: 3
        Port: 80
      Scheduler: wrr
      Protocol: http
  ScalingGroup:
    Type: ALIYUN::ESS::ScalingGroup
    DependsOn: SecurityGroup
    Properties:
      MinSize:
        Ref: MinSize
      MaxSize:
        Ref: MaxSize
      DesiredCapacity:
        Ref: DesiredCapacity
      DefaultCooldown: 300
      ScalingGroupName: web-autoscaling-group
      VpcId:
        Ref: Vpc
      VSwitchId:
        Ref: VSwitch
      HealthCheckType: ECS
      MultiAZPolicy: PRIORITY
      RemovalPolicys:
        - OldestScalingConfiguration
        - OldestInstance
      GroupDeletionProtection: false
      ScalingPolicy: release
      LoadBalancerIds:
        - Ref: LoadBalancer
  ScalingConfiguration:
    Type: ALIYUN::ESS::ScalingConfiguration
    DependsOn: ScalingGroup
    Properties:
      ScalingGroupId:
        Ref: ScalingGroup
      SecurityGroupId:
        Ref: SecurityGroup
      ImageId:
        Ref: ImageId
      InstanceType:
        Ref: InstanceType
      SystemDiskCategory:
        Ref: SystemDiskCategory
      SystemDiskSize: 40
      SystemDiskPerformanceLevel: PL1
      ScalingConfigurationName: web-scaling-config
      Password:
        Ref: InstancePassword
      InternetMaxBandwidthOut: 5
      InternetChargeType: PayByTraffic
      IoOptimized: optimized
      SpotStrategy: SpotWithPriceLimit
      SpotPriceLimit: 0.5
      SpotDuration: 1
      LoadBalancerWeight: 50
      DiskMappings:
        - Category:
            Ref: SystemDiskCategory
          Size:
            Ref: DataDiskSize
          DiskName: data-disk
          DeleteWithInstance: true
          PerformanceLevel: PL1
      TagList:
        - Key: CreatedBy
          Value: ROS
        - Key: Environment
          Value: Production
  ScalingGroupEnable:
    Type: ALIYUN::ESS::ScalingGroupEnable
    Properties:
      ScalingGroupId:
        Ref: ScalingGroup
      ScalingConfigurationId:
        Ref: ScalingConfiguration
      ScalingRuleArisExecuteVersion: 0
  LifecycleHookForScaleOut:
    Type: ALIYUN::ESS::LifecycleHook
    DependsOn: ScalingGroupEnable
    Properties:
      ScalingGroupId:
        Ref: ScalingGroup
      LifecycleHookName: scale-out-hook
      LifecycleTransition: SCALE_OUT
      DefaultResult: CONTINUE
      HeartbeatTimeout: 600
      NotificationArn:
        Fn::Join:
          - ''
          - - 'acs:ess:'
            - Ref: ALIYUN::Region
            - ':'
            - Ref: ALIYUN::TenantId
            - ':'
            - oos/ACS-ESS-LifeCycleRunCommand
      NotificationMetadata:
        Fn::Sub: |-
          {
            "commandContent": "#!/bin/bash\nyum install -y nginx\nsystemctl enable nginx\nsystemctl start nginx",
            "commandType": "RunShellScript"
          }
  LifecycleHookForScaleIn:
    Type: ALIYUN::ESS::LifecycleHook
    DependsOn: ScalingGroupEnable
    Properties:
      ScalingGroupId:
        Ref: ScalingGroup
      LifecycleHookName: scale-in-hook
      LifecycleTransition: SCALE_IN
      DefaultResult: CONTINUE
      HeartbeatTimeout: 300
Outputs:
  ScalingGroupId:
    Description:
      zh-cn: "\u4f38\u7f29\u7ec4ID\u3002"
      en: Scaling group ID.
    Label:
      zh-cn: "\u4f38\u7f29\u7ec4ID"
      en: Scaling Group ID
    Value:
      Fn::GetAtt:
        - ScalingGroup
        - ScalingGroupId
  ScalingConfigurationId:
    Description:
      zh-cn: "\u4f38\u7f29\u914d\u7f6eID\u3002"
      en: Scaling configuration ID.
    Label:
      zh-cn: "\u4f38\u7f29\u914d\u7f6eID"
      en: Scaling Configuration ID
    Value:
      Fn::GetAtt:
        - ScalingConfiguration
        - ScalingConfigurationId
  LoadBalancerId:
    Description:
      zh-cn: "\u8d1f\u8f7d\u5747\u8861\u5b9e\u4f8bID\u3002"
      en: Load balancer ID.
    Label:
      zh-cn: "\u8d1f\u8f7d\u5747\u8861ID"
      en: Load Balancer ID
    Value:
      Ref: LoadBalancer
  LoadBalancerPublicIp:
    Description:
      zh-cn: "\u8d1f\u8f7d\u5747\u8861\u516c\u7f51IP\u3002"
      en: Load balancer public IP.
    Label:
      zh-cn: "\u8d1f\u8f7d\u5747\u8861\u516c\u7f51IP"
      en: Load Balancer Public IP
    Value:
      Fn::GetAtt:
        - LoadBalancer
        - IpAddress
  Console.LoadBalancerUrl:
    Description:
      zh-cn: "\u8d1f\u8f7d\u5747\u8861\u8bbf\u95ee\u5730\u5740\u3002"
      en: Load balancer access URL.
    Label:
      zh-cn: "\u8d1f\u8f7d\u5747\u8861\u5730\u5740"
      en: Load Balancer URL
    Value:
      Fn::Sub:
        - http://${Ip}
        - Ip:
            Fn::GetAtt:
              - LoadBalancer
              - IpAddress
  SecurityGroupId:
    Description:
      zh-cn: "\u5b89\u5168\u7ec4ID\u3002"
      en: Security group ID.
    Label:
      zh-cn: "\u5b89\u5168\u7ec4ID"
      en: Security Group ID
    Value:
      Ref: SecurityGroup
Metadata:
  ALIYUN::ROS::Interface:
    ParameterGroups:
      - Parameters:
          - ZoneId
          - InstanceType
          - ImageId
          - SystemDiskCategory
          - InstancePassword
      - Parameters:
          - MaxSize
          - MinSize
          - DesiredCapacity
          - DataDiskSize
{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Description": {
    "zh-cn": "\u521b\u5efa\u5b8c\u6574\u7684\u5f39\u6027\u4f38\u7f29\u65b9\u6848,\u5305\u542bVPC\u7f51\u7edc、CLB\u8d1f\u8f7d\u5747\u8861、\u591a\u5b9e\u4f8b\u89c4\u683c\u4f38\u7f29\u914d\u7f6e(\u542b\u62a2\u5360\u5f0f\u5b9e\u4f8b\u7b56\u7565\u548c\u6570\u636e\u76d8)、\u751f\u547d\u5468\u671f\u6302\u94a9(\u81ea\u52a8\u90e8\u7f72\u5e94\u7528)、\u4f38\u7f29\u7ec4\u542f\u7528\u4e0e\u8d1f\u8f7d\u5747\u8861\u6302\u8f7d,\u5b9e\u73b0\u9ad8\u53ef\u7528\u81ea\u52a8\u4f38\u7f29\u4e0e\u81ea\u52a8\u8fd0\u7ef4。",
    "en": "Create a complete auto-scaling solution including VPC network, CLB load balancer, multi-instance-type scaling configuration with spot strategy and data disks, lifecycle hooks for automatic application deployment, scaling group enablement and load balancer attachment, achieving high-availability auto-scaling and automated O&M."
  },
  "Parameters": {
    "ZoneId": {
      "Type": "String",
      "Label": {
        "zh-cn": "\u53ef\u7528\u533a",
        "en": "Availability Zone"
      },
      "Description": {
        "zh-cn": "\u9009\u62e9\u53ef\u7528\u533a。",
        "en": "Select an availability zone."
      },
      "AssociationProperty": "ALIYUN::ECS::Instance::ZoneId",
      "AssociationPropertyMetadata": {
        "AutoSelectFirst": true
      }
    },
    "InstanceType": {
      "Type": "String",
      "Label": {
        "zh-cn": "\u4e3b\u5b9e\u4f8b\u89c4\u683c",
        "en": "Primary Instance Type"
      },
      "Description": {
        "zh-cn": "\u9009\u62e9ECS\u4e3b\u5b9e\u4f8b\u89c4\u683c(\u4f38\u7f29\u914d\u7f6e\u5c06\u540c\u65f6\u914d\u7f6e\u5907\u9009\u89c4\u683c\u4ee5\u5e94\u5bf9\u5e93\u5b58\u4e0d\u8db3)。",
        "en": "Select the primary ECS instance type (the scaling configuration will also configure alternate types for inventory fallback)."
      },
      "AssociationProperty": "ALIYUN::ECS::Instance::InstanceType",
      "AssociationPropertyMetadata": {
        "InstanceChargeType": "PostPaid",
        "ZoneId": "${ZoneId}"
      }
    },
    "ImageId": {
      "Type": "String",
      "Label": {
        "zh-cn": "\u955c\u50cfID",
        "en": "Image ID"
      },
      "Description": {
        "zh-cn": "\u9009\u62e9\u7528\u4e8e\u521b\u5efa\u5b9e\u4f8b\u7684\u955c\u50cf。",
        "en": "Select an image for creating instances."
      },
      "AssociationProperty": "ALIYUN::ECS::Image::ImageId",
      "AssociationPropertyMetadata": {
        "SupportedImageOwnerAlias": [
          "system",
          "self",
          "others"
        ]
      }
    },
    "SystemDiskCategory": {
      "Type": "String",
      "Label": {
        "zh-cn": "\u7cfb\u7edf\u76d8\u7c7b\u578b",
        "en": "System Disk Category"
      },
      "Description": {
        "zh-cn": "\u9009\u62e9\u7cfb\u7edf\u76d8\u7c7b\u578b。",
        "en": "Select a system disk category."
      },
      "AssociationProperty": "ALIYUN::ECS::Disk::SystemDiskCategory",
      "AssociationPropertyMetadata": {
        "InstanceType": "${InstanceType}"
      },
      "Default": "cloud_essd"
    },
    "InstancePassword": {
      "Type": "String",
      "Label": {
        "zh-cn": "\u5b9e\u4f8b\u5bc6\u7801",
        "en": "Instance Password"
      },
      "Description": {
        "zh-cn": "\u670d\u52a1\u5668\u767b\u5f55\u5bc6\u7801,\u957f\u5ea68-30,\u5fc5\u987b\u5305\u542b\u4e09\u9879(\u5927\u5199\u5b57\u6bcd、\u5c0f\u5199\u5b57\u6bcd、\u6570\u5b57、\u7279\u6b8a\u7b26\u53f7)。",
        "en": "Server login password, 8-30 characters, must contain three types (uppercase, lowercase, numbers, special symbols)."
      },
      "NoEcho": true,
      "AssociationProperty": "ALIYUN::ECS::Instance::Password",
      "ConstraintDescription": {
        "zh-cn": "\u957f\u5ea68-30,\u5fc5\u987b\u5305\u542b\u4e09\u9879(\u5927\u5199\u5b57\u6bcd、\u5c0f\u5199\u5b57\u6bcd、\u6570\u5b57、\u7279\u6b8a\u7b26\u53f7)。",
        "en": "Length 8-30, must contain three types (uppercase, lowercase, numbers, special symbols)."
      }
    },
    "MaxSize": {
      "Type": "Number",
      "Label": {
        "zh-cn": "\u6700\u5927\u5b9e\u4f8b\u6570",
        "en": "Max Size"
      },
      "Description": {
        "zh-cn": "\u4f38\u7f29\u7ec4\u5185ECS\u5b9e\u4f8b\u4e2a\u6570\u7684\u6700\u5927\u503c。",
        "en": "The maximum number of ECS instances in the scaling group."
      },
      "Default": 10,
      "MinValue": 0,
      "MaxValue": 1000
    },
    "MinSize": {
      "Type": "Number",
      "Label": {
        "zh-cn": "\u6700\u5c0f\u5b9e\u4f8b\u6570",
        "en": "Min Size"
      },
      "Description": {
        "zh-cn": "\u4f38\u7f29\u7ec4\u5185ECS\u5b9e\u4f8b\u4e2a\u6570\u7684\u6700\u5c0f\u503c。",
        "en": "The minimum number of ECS instances in the scaling group."
      },
      "Default": 2,
      "MinValue": 0,
      "MaxValue": 1000
    },
    "DesiredCapacity": {
      "Type": "Number",
      "Label": {
        "zh-cn": "\u671f\u671b\u5b9e\u4f8b\u6570",
        "en": "Desired Capacity"
      },
      "Description": {
        "zh-cn": "\u4f38\u7f29\u7ec4\u5185ECS\u5b9e\u4f8b\u7684\u671f\u671b\u6570\u91cf。",
        "en": "The desired number of ECS instances in the scaling group."
      },
      "Default": 2,
      "MinValue": 0,
      "MaxValue": 1000
    },
    "DataDiskSize": {
      "Type": "Number",
      "Label": {
        "zh-cn": "\u6570\u636e\u76d8\u5927\u5c0f(GB)",
        "en": "Data Disk Size (GB)"
      },
      "Description": {
        "zh-cn": "\u6570\u636e\u76d8\u5927\u5c0f,\u5355\u4f4dGB。",
        "en": "Data disk size in GB."
      },
      "Default": 100,
      "MinValue": 20,
      "MaxValue": 32768
    }
  },
  "Resources": {
    "Vpc": {
      "Type": "ALIYUN::ECS::VPC",
      "Properties": {
        "VpcName": {
          "Fn::Sub": "${ALIYUN::StackName}-vpc"
        },
        "CidrBlock": "192.168.0.0/16"
      }
    },
    "VSwitch": {
      "Type": "ALIYUN::ECS::VSwitch",
      "Properties": {
        "VSwitchName": {
          "Fn::Sub": "${ALIYUN::StackName}-vsw"
        },
        "VpcId": {
          "Ref": "Vpc"
        },
        "CidrBlock": "192.168.0.0/24",
        "ZoneId": {
          "Ref": "ZoneId"
        }
      }
    },
    "SecurityGroup": {
      "Type": "ALIYUN::ECS::SecurityGroup",
      "Properties": {
        "SecurityGroupName": {
          "Fn::Sub": "${ALIYUN::StackName}-sg"
        },
        "VpcId": {
          "Ref": "Vpc"
        },
        "SecurityGroupIngress": [
          {
            "PortRange": "22/22",
            "Priority": 1,
            "SourceCidrIp": "0.0.0.0/0",
            "IpProtocol": "tcp"
          },
          {
            "PortRange": "80/80",
            "Priority": 1,
            "SourceCidrIp": "0.0.0.0/0",
            "IpProtocol": "tcp"
          },
          {
            "PortRange": "443/443",
            "Priority": 1,
            "SourceCidrIp": "0.0.0.0/0",
            "IpProtocol": "tcp"
          }
        ],
        "SecurityGroupEgress": [
          {
            "PortRange": "-1/-1",
            "Priority": 1,
            "IpProtocol": "all",
            "DestCidrIp": "0.0.0.0/0",
            "NicType": "intranet"
          }
        ]
      }
    },
    "LoadBalancer": {
      "Type": "ALIYUN::SLB::LoadBalancer",
      "Properties": {
        "LoadBalancerName": {
          "Fn::Sub": "${ALIYUN::StackName}-slb"
        },
        "AddressType": "internet",
        "VpcId": {
          "Ref": "Vpc"
        },
        "VSwitchId": {
          "Ref": "VSwitch"
        },
        "LoadBalancerSpec": "slb.s2.medium",
        "Bandwidth": 5
      }
    },
    "LoadBalancerListener": {
      "Type": "ALIYUN::SLB::Listener",
      "Properties": {
        "LoadBalancerId": {
          "Ref": "LoadBalancer"
        },
        "ListenerPort": 80,
        "BackendServerPort": 80,
        "Bandwidth": 5,
        "HealthCheck": {
          "HealthCheckType": "http",
          "Interval": 5,
          "Timeout": 3,
          "URI": "/",
          "HttpCode": "http_2xx,http_3xx,http_4xx,http_5xx",
          "HealthyThreshold": 2,
          "UnhealthyThreshold": 3,
          "Port": 80
        },
        "Scheduler": "wrr",
        "Protocol": "http"
      }
    },
    "ScalingGroup": {
      "Type": "ALIYUN::ESS::ScalingGroup",
      "DependsOn": "SecurityGroup",
      "Properties": {
        "MinSize": {
          "Ref": "MinSize"
        },
        "MaxSize": {
          "Ref": "MaxSize"
        },
        "DesiredCapacity": {
          "Ref": "DesiredCapacity"
        },
        "DefaultCooldown": 300,
        "ScalingGroupName": "web-autoscaling-group",
        "VpcId": {
          "Ref": "Vpc"
        },
        "VSwitchId": {
          "Ref": "VSwitch"
        },
        "HealthCheckType": "ECS",
        "MultiAZPolicy": "PRIORITY",
        "RemovalPolicys": [
          "OldestScalingConfiguration",
          "OldestInstance"
        ],
        "GroupDeletionProtection": false,
        "ScalingPolicy": "release",
        "LoadBalancerIds": [
          {
            "Ref": "LoadBalancer"
          }
        ]
      }
    },
    "ScalingConfiguration": {
      "Type": "ALIYUN::ESS::ScalingConfiguration",
      "DependsOn": "ScalingGroup",
      "Properties": {
        "ScalingGroupId": {
          "Ref": "ScalingGroup"
        },
        "SecurityGroupId": {
          "Ref": "SecurityGroup"
        },
        "ImageId": {
          "Ref": "ImageId"
        },
        "InstanceType": {
          "Ref": "InstanceType"
        },
        "SystemDiskCategory": {
          "Ref": "SystemDiskCategory"
        },
        "SystemDiskSize": 40,
        "SystemDiskPerformanceLevel": "PL1",
        "ScalingConfigurationName": "web-scaling-config",
        "Password": {
          "Ref": "InstancePassword"
        },
        "InternetMaxBandwidthOut": 5,
        "InternetChargeType": "PayByTraffic",
        "IoOptimized": "optimized",
        "SpotStrategy": "SpotWithPriceLimit",
        "SpotPriceLimit": 0.5,
        "SpotDuration": 1,
        "LoadBalancerWeight": 50,
        "DiskMappings": [
          {
            "Category": {
              "Ref": "SystemDiskCategory"
            },
            "Size": {
              "Ref": "DataDiskSize"
            },
            "DiskName": "data-disk",
            "DeleteWithInstance": true,
            "PerformanceLevel": "PL1"
          }
        ],
        "TagList": [
          {
            "Key": "CreatedBy",
            "Value": "ROS"
          },
          {
            "Key": "Environment",
            "Value": "Production"
          }
        ]
      }
    },
    "ScalingGroupEnable": {
      "Type": "ALIYUN::ESS::ScalingGroupEnable",
      "Properties": {
        "ScalingGroupId": {
          "Ref": "ScalingGroup"
        },
        "ScalingConfigurationId": {
          "Ref": "ScalingConfiguration"
        },
        "ScalingRuleArisExecuteVersion": 0
      }
    },
    "LifecycleHookForScaleOut": {
      "Type": "ALIYUN::ESS::LifecycleHook",
      "DependsOn": "ScalingGroupEnable",
      "Properties": {
        "ScalingGroupId": {
          "Ref": "ScalingGroup"
        },
        "LifecycleHookName": "scale-out-hook",
        "LifecycleTransition": "SCALE_OUT",
        "DefaultResult": "CONTINUE",
        "HeartbeatTimeout": 600,
        "NotificationArn": {
          "Fn::Join": [
            "",
            [
              "acs:ess:",
              {
                "Ref": "ALIYUN::Region"
              },
              ":",
              {
                "Ref": "ALIYUN::TenantId"
              },
              ":",
              "oos/ACS-ESS-LifeCycleRunCommand"
            ]
          ]
        },
        "NotificationMetadata": {
          "Fn::Sub": "{\n  \"commandContent\": \"#!/bin/bash\\nyum install -y nginx\\nsystemctl enable nginx\\nsystemctl start nginx\",\n  \"commandType\": \"RunShellScript\"\n}"
        }
      }
    },
    "LifecycleHookForScaleIn": {
      "Type": "ALIYUN::ESS::LifecycleHook",
      "DependsOn": "ScalingGroupEnable",
      "Properties": {
        "ScalingGroupId": {
          "Ref": "ScalingGroup"
        },
        "LifecycleHookName": "scale-in-hook",
        "LifecycleTransition": "SCALE_IN",
        "DefaultResult": "CONTINUE",
        "HeartbeatTimeout": 300
      }
    }
  },
  "Outputs": {
    "ScalingGroupId": {
      "Description": {
        "zh-cn": "\u4f38\u7f29\u7ec4ID。",
        "en": "Scaling group ID."
      },
      "Label": {
        "zh-cn": "\u4f38\u7f29\u7ec4ID",
        "en": "Scaling Group ID"
      },
      "Value": {
        "Fn::GetAtt": [
          "ScalingGroup",
          "ScalingGroupId"
        ]
      }
    },
    "ScalingConfigurationId": {
      "Description": {
        "zh-cn": "\u4f38\u7f29\u914d\u7f6eID。",
        "en": "Scaling configuration ID."
      },
      "Label": {
        "zh-cn": "\u4f38\u7f29\u914d\u7f6eID",
        "en": "Scaling Configuration ID"
      },
      "Value": {
        "Fn::GetAtt": [
          "ScalingConfiguration",
          "ScalingConfigurationId"
        ]
      }
    },
    "LoadBalancerId": {
      "Description": {
        "zh-cn": "\u8d1f\u8f7d\u5747\u8861\u5b9e\u4f8bID。",
        "en": "Load balancer ID."
      },
      "Label": {
        "zh-cn": "\u8d1f\u8f7d\u5747\u8861ID",
        "en": "Load Balancer ID"
      },
      "Value": {
        "Ref": "LoadBalancer"
      }
    },
    "LoadBalancerPublicIp": {
      "Description": {
        "zh-cn": "\u8d1f\u8f7d\u5747\u8861\u516c\u7f51IP。",
        "en": "Load balancer public IP."
      },
      "Label": {
        "zh-cn": "\u8d1f\u8f7d\u5747\u8861\u516c\u7f51IP",
        "en": "Load Balancer Public IP"
      },
      "Value": {
        "Fn::GetAtt": [
          "LoadBalancer",
          "IpAddress"
        ]
      }
    },
    "Console.LoadBalancerUrl": {
      "Description": {
        "zh-cn": "\u8d1f\u8f7d\u5747\u8861\u8bbf\u95ee\u5730\u5740。",
        "en": "Load balancer access URL."
      },
      "Label": {
        "zh-cn": "\u8d1f\u8f7d\u5747\u8861\u5730\u5740",
        "en": "Load Balancer URL"
      },
      "Value": {
        "Fn::Sub": [
          "http://${Ip}",
          {
            "Ip": {
              "Fn::GetAtt": [
                "LoadBalancer",
                "IpAddress"
              ]
            }
          }
        ]
      }
    },
    "SecurityGroupId": {
      "Description": {
        "zh-cn": "\u5b89\u5168\u7ec4ID。",
        "en": "Security group ID."
      },
      "Label": {
        "zh-cn": "\u5b89\u5168\u7ec4ID",
        "en": "Security Group ID"
      },
      "Value": {
        "Ref": "SecurityGroup"
      }
    }
  },
  "Metadata": {
    "ALIYUN::ROS::Interface": {
      "ParameterGroups": [
        {
          "Parameters": [
            "ZoneId",
            "InstanceType",
            "ImageId",
            "SystemDiskCategory",
            "InstancePassword"
          ]
        },
        {
          "Parameters": [
            "MaxSize",
            "MinSize",
            "DesiredCapacity",
            "DataDiskSize"
          ]
        }
      ]
    }
  }
}