Todos los productos
Search
Centro de documentos

Resource Orchestration Service:ALIYUN::ESS::ScalingConfiguration

Última actualización: Oct 10, 2026

El tipo de recurso ALIYUN::ESS::ScalingConfiguration crea una configuración de escalado para un grupo de escalado.

Sintaxis

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

Propiedades

Propiedad

Tipo

Obligatorio

Editable

Descripción

Restricciones

ScalingGroupId

String

Sí

No

ID del grupo de escalado al que pertenece la configuración de escalado.

Ninguna.

Affinity

String

No

Sí

Indica si la instancia de host dedicado está asociada a un host dedicado.

Valores válidos:

  • default: la instancia no está asociada a un host dedicado. Si se reinicia una instancia con el modo de apagado económico habilitado y el host dedicado original carece de recursos disponibles, la instancia se ubica en otro host dedicado dentro del pool de recursos de despliegue automático.

  • host: la instancia está asociada a un host dedicado. Si se reinicia una instancia con el modo de apagado económico habilitado, esta permanece en el host dedicado original. El reinicio falla si dicho host carece de recursos disponibles.

Cpu

Integer

No

Sí

Número de vCPU.

Especifique Cpu y Memory de forma conjunta para definir un rango de tipos de instancia. Por ejemplo, Cpu=2 y Memory=16 definen todos los tipos de instancia con 2 vCPU y 16 GiB de memoria. Auto Scaling determina los tipos de instancia disponibles según la optimización de E/S, las zonas y otros factores, y crea la instancia de menor precio.

CpuOptions

Map

No

Sí

Opciones de CPU.

Para obtener más información, consulte CpuOptions properties.

CreditSpecification

String

No

Sí

Modo de operación de las instancias ampliables.

Valores válidos:

  • Unlimited (predeterminado): modo ilimitado.

  • Standard: modo estándar.

Para obtener más información sobre el rendimiento de las instancias, consulte Burstable instances.

DedicatedHostId

String

No

Sí

Indica si las instancias de ECS se crean en un host dedicado.

Los hosts dedicados no admiten preemptible instances. Si especifica DedicatedHostId, se ignoran SpotStrategy y SpotPriceLimit. Llame a DescribeDedicatedHosts para consultar los ID de los hosts dedicados.

DeploymentSetId

String

No

No

ID del conjunto de despliegue.

Ninguna.

DiskMappings

List

No

Sí

Discos que se van a adjuntar.

Se admite un máximo de 16 discos. Para obtener más información, consulte DiskMappings properties.

HostName

String

No

Sí

Nombre de host del servidor en la nube.

Un punto (.) o un guion (-) no puede ser el primer ni el último carácter, y no pueden aparecer de forma consecutiva. Los requisitos de nomenclatura varían según el tipo de instancia:

  • Instancias Windows: el nombre de host debe contener entre 2 y 15 caracteres. Puede incluir letras mayúsculas, letras minúsculas, dígitos y guiones (-). No puede contener puntos (.) ni estar compuesto únicamente por dígitos.

  • Otros tipos de instancia, como Linux: el nombre de host debe contener entre 2 y 64 caracteres y puede incluir varios puntos (.). Cada segmento entre dos puntos (.) puede contener letras mayúsculas, letras minúsculas, dígitos y guiones (-).

HpcClusterId

String

No

No

ID del clúster de E-HPC al que pertenece la instancia.

Ninguna.

ImageFamily

String

No

Sí

Nombre de la familia de imágenes.

Establezca esta propiedad para obtener la imagen disponible más reciente de la familia de imágenes y crear la instancia. No es posible establecerla si ya se configuró ImageId.

ImageId

String

No

Sí

ID de la imagen de la instancia. Incluye imágenes públicas, personalizadas y de Alibaba Cloud Marketplace.

Para obtener más información, consulte Public images.

ImageName

String

No

Sí

Nombre del archivo de imagen.

Ninguna.

ImageOptionsLoginAsNonRoot

Boolean

No

No

Indica si la instancia de ECS utiliza la cuenta ecs-user para iniciar sesión.

Valores válidos:

  • true: sí.

  • false: no.

InstanceDescription

String

No

Sí

Descripción de la instancia de ECS.

La descripción debe contener entre 2 y 256 caracteres en inglés o chino. No puede comenzar con http:// ni con https://.

InstanceId

String

No

No

ID de la instancia de la configuración de escalado.

Ninguna.

InstanceName

String

No

Sí

Nombre de las instancias creadas con base en la configuración de escalado actual.

Ninguna.

InstancePatternInfos

List

No

Sí

Conjunto de información para la configuración inteligente.

Para obtener más información, consulte InstancePatternInfos properties.

InstanceType

String

No

Sí

Tipo de instancia.

Para obtener más información, consulte Instance family overview.

InstanceTypeOverrides

List

No

Sí

Información sobre los tipos de instancia especificados.

Para obtener más información, consulte InstanceTypeOverrides properties.

InstanceTypes

List

No

Sí

Parámetro para varios tipos de instancia.

Si se especifica InstanceTypes, InstanceType no surte efecto. Es posible configurar hasta 10 tipos de instancia en una sola configuración de escalado. Su prioridad disminuye según el orden de los elementos de la lista. Cuando no se logra crear una instancia con un tipo de mayor prioridad, Auto Scaling selecciona automáticamente el siguiente tipo de menor prioridad.

InternetChargeType

String

No

Sí

Método de facturación del ancho de banda de acceso a la red pública.

Valores válidos:

  • PayByBandwidth: facturado por ancho de banda fijo.

  • PayByTraffic (predeterminado): facturado por tráfico.

InternetMaxBandwidthIn

Integer

No

No

Ancho de banda público entrante máximo.

Unidad: Mbps.

Valores válidos: de 1 a 200.

Si no especifica esta propiedad, el ancho de banda entrante se establece automáticamente en 200 Mbps. El tráfico de datos entrante es gratuito y esta propiedad nunca genera cargos.

InternetMaxBandwidthOut

Integer

No

Sí

Ancho de banda público saliente máximo.

Valores válidos:

  • Facturación por ancho de banda fijo: de 0 a 100. Valor predeterminado: 0.

  • Facturación por tráfico: de 0 a 100. Esta propiedad es obligatoria.

Unidad: Mbps.

IoOptimized

String

No

Sí

Indica si se crea una instancia optimizada para E/S.

Valores válidos:

  • none (predeterminado): no optimizada para E/S.

  • optimized: optimizada para E/S.

Ipv6AddressCount

Integer

No

Sí

Número de direcciones IPv6 generadas aleatoriamente que se asignan a la interfaz de red elástica.

Ninguna.

KeyPairName

String

No

Sí

Nombre de la key pair vinculada a la instancia.

  • Si el tipo de instancia es Windows, esta propiedad se ignora y su valor predeterminado queda vacío.

  • Si el tipo de instancia es Linux, el inicio de sesión con contraseña se inicializa como deshabilitado.

LoadBalancerWeight

Integer

No

Sí

Peso de la instancia de ECS cuando actúa como servidor de backend del balanceador de carga.

Valores válidos: de 1 a 100. Valor predeterminado: 50.

Memory

Integer

No

Sí

Tamaño de la memoria.

Unidad: GiB. Especifique Cpu y Memory de forma conjunta para definir un rango de tipos de instancia. Por ejemplo, Cpu=2 y Memory=16 definen todos los tipos de instancia con 2 vCPU y 16 GiB de memoria. Auto Scaling determina los tipos de instancia disponibles según la optimización de E/S, las zonas y otros factores, y crea la instancia de menor precio.

Password

String

No

Sí

Contraseña de la instancia de ECS.

La contraseña debe contener entre 8 y 30 caracteres e incluir tres de las siguientes categorías: letras mayúsculas, letras minúsculas, dígitos y caracteres especiales. Se admiten los siguientes caracteres especiales:

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

La contraseña de una instancia Windows no puede comenzar con una barra diagonal (/).

Nota

Si especifica Password, utilice HTTPS para enviar las solicitudes y evitar que la contraseña quede expuesta.

PasswordInherit

Boolean

No

Sí

Indica si se utiliza la contraseña preconfigurada en la imagen.

Si utiliza la contraseña preconfigurada de la imagen, asegúrese de que dicha imagen cuente con una contraseña establecida.

PrivatePoolOptions

Map

No

Sí

Configuración del pool privado para iniciar instancias.

Para obtener más información, consulte PrivatePoolOptions properties.

RamRoleName

String

No

Sí

Nombre del rol de RAM de la instancia.

Utilice la API ListRoles de RAM para consultar el nombre del rol. Para obtener más información, consulte CreateRole y ListRoles.

ResourceGroupId

String

No

Sí

ID del resource group al que pertenece la instancia.

Ninguna.

ScalingConfigurationName

String

No

Sí

Nombre de la configuración de escalado.

El nombre debe contener entre 2 y 64 caracteres. Debe comenzar con un dígito, una letra inglesa o un carácter chino, y puede incluir dígitos, letras inglesas, caracteres chinos, guiones bajos (_), guiones (-) y puntos (.).

El nombre debe ser único dentro de un grupo de escalado en la misma región.

Si no especifica esta propiedad, se utiliza de forma predeterminada el ID de la configuración de escalado.

SecurityEnhancementStrategy

String

No

No

Indica si se habilita el refuerzo de seguridad.

Valores válidos:

  • Active: habilita el refuerzo de seguridad y aplica únicamente a imágenes públicas.

  • Deactive: no habilita el refuerzo de seguridad y aplica a todos los tipos de imagen.

SecurityGroupId

String

No

Sí

security group al que pertenece la instancia.

Ninguna.

SecurityGroupIds

List

No

Sí

Agrega la instancia de ECS a varios security groups.

Nota

No es posible especificar SecurityGroupId y SecurityGroupIds al mismo tiempo.

SpotDuration

Integer

No

Sí

Periodo de retención de una preemptible instance.

Unidad: horas. Valores válidos:

  • 1: Alibaba Cloud garantiza que la instancia no se libere automáticamente durante la primera hora tras su creación. Después de esa hora, el sistema compara la oferta con el precio de mercado y revisa el inventario de recursos para determinar si conserva o recupera la instancia.

  • 0: Alibaba Cloud no garantiza que la instancia funcione durante una hora después de su creación. El sistema compara la oferta con el precio de mercado y revisa el inventario de recursos para determinar si conserva o recupera la instancia.

SpotInterruptionBehavior

String

No

Sí

Comportamiento ante interrupciones de una preemptible instance.

Ninguna.

SpotPriceLimit

Number

No

Sí

Precio máximo por hora de la instancia.

Se admiten hasta tres decimales.

Esta propiedad surte efecto cuando SpotStrategy se establece en SpotWithPriceLimit. Su valor se sobrescribe mediante SpotPriceLimitForInstanceType.

SpotPriceLimitForInstanceType

Map

No

Sí

Tipos de instancia y sus ofertas correspondientes para preemptible instances.

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

Esta propiedad surte efecto cuando SpotStrategy se establece en SpotWithPriceLimit.

Es posible configurar hasta 10 pares de instancia y precio.

SpotStrategy

String

No

Sí

Estrategia de preemptible instance para una instancia pay-as-you-go.

Valores válidos:

  • NoSpot (predeterminado): instancia pay-as-you-go normal.

  • SpotWithPriceLimit: preemptible instance con límite de precio.

  • SpotAsPriceGo: el sistema ofrece automáticamente según el precio de mercado actual.

SystemDiskAutoSnapshotPolicyId

String

No

Sí

ID de la directiva de instantáneas automáticas que utiliza el disco del sistema.

Ninguna.

SystemDiskBurstingEnabled

Boolean

No

No

Indica si se habilita el rendimiento ampliable para el disco del sistema.

Valores válidos:

  • true: habilitado.

  • false: deshabilitado.

SystemDiskCategories

List

No

Sí

Varias categorías de disco para el disco del sistema.

Si una categoría de disco de mayor prioridad no está disponible, Auto Scaling intenta crear automáticamente el disco del sistema con la siguiente categoría de menor prioridad. Valores válidos:

  • cloud: disco básico.

  • cloud_efficiency: disco ultra.

  • cloud_ssd: SSD estándar.

  • cloud_essd: ESSD.

SystemDiskCategory

String

No

Sí

Categoría del disco del sistema.

Valores válidos:

  • cloud: disco básico.

  • cloud_efficiency: disco ultra.

  • cloud_ssd: SSD estándar.

  • ephemeral_ssd: SSD local.

  • cloud_essd: ESSD.

Cuando InstanceType corresponde a la serie I y la instancia no está optimizada para E/S, el valor predeterminado es cloud. En caso contrario, el valor predeterminado es cloud_efficiency.

SystemDiskDescription

String

No

Sí

Descripción del disco del sistema.

Ninguna.

SystemDiskDiskName

String

No

Sí

Nombre del disco del sistema.

Ninguna.

SystemDiskEncryptAlgorithm

String

No

Sí

Algoritmo de cifrado que utiliza el disco del sistema.

Valores válidos:

  • AES-256.

  • SM4-128.

SystemDiskEncrypted

Boolean

No

Sí

Indica si el disco del sistema está cifrado.

Valores válidos:

  • true: cifrado.

  • false: no cifrado.

SystemDiskKMSKeyId

String

No

Sí

ID de la clave de KMS que utiliza el disco del sistema.

Ninguna.

SystemDiskPerformanceLevel

String

No

Sí

Nivel de rendimiento de un ESSD utilizado como disco del sistema.

Valores válidos:

  • PL1 (predeterminado): un máximo de 50,000 IOPS de lectura y escritura aleatorias por disco.

  • PL2: un máximo de 100,000 IOPS de lectura y escritura aleatorias por disco.

  • PL3: un máximo de 1,000,000 IOPS de lectura y escritura aleatorias por disco.

Para obtener información sobre cómo seleccionar un nivel de rendimiento de ESSD, consulte ESSDs.

SystemDiskProvisionedIops

Integer

No

Sí

Métrica de rendimiento de IOPS (operaciones de entrada y salida por segundo) aprovisionadas del disco del sistema.

Ninguna.

SystemDiskSize

Integer

No

Sí

Tamaño del disco del sistema.

Valores válidos: de 20 a 500.

Valor predeterminado: 40.

Unidad: GiB.

Si se utiliza una imagen personalizada para crear el disco del sistema, su tamaño debe ser mayor o igual al de dicha imagen.

TagList

List

No

Sí

Etiquetas de la instancia.

Las etiquetas se transmiten como pares clave-valor. Utilice hasta cinco etiquetas con el siguiente formato: {"key1": "value1", "key2": "value2", ... "key5": "value5"}.

Para obtener más información, consulte TagList properties.

Tenancy

String

No

Sí

Indica si la instancia se crea en un host dedicado.

Valores válidos:

  • default: crea una instancia que no reside en un host dedicado.

  • host: crea una instancia en un host dedicado. Si no se especifica DedicatedHostId, Alibaba Cloud selecciona automáticamente un host dedicado para la instancia.

UserData

String

No

Sí

Datos de usuario que se transmiten al crear una instancia.

El contenido no debe superar los 16 KB. No se requiere codificación Base64. Escape los caracteres especiales con una barra diagonal inversa (\).

ZoneId

String

No

Sí

ID de la zona a la que pertenece la instancia.

Ninguna.

Sintaxis de 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
  }
]

Propiedades de DiskMappings

Propiedad

Tipo

Obligatorio

Editable

Descripción

Restricciones

AutoSnapshotPolicyId

String

No

No

ID de la directiva de instantáneas automáticas que utiliza el disco de datos.

Ninguna.

BurstingEnabled

Boolean

No

No

Indica si se habilita el rendimiento ampliable para el disco de datos.

Valores válidos:

  • true: habilitado.

  • false: deshabilitado.

Categories

List

No

No

Varias categorías de disco para el disco de datos.

La primera categoría de disco tiene la prioridad más alta, y las demás cuentan con prioridades decrecientes. Si una categoría de mayor prioridad no está disponible, Auto Scaling intenta crear automáticamente el disco de datos con la siguiente categoría de menor prioridad. Valores válidos:

  • cloud: disco básico. La propiedad DeleteWithInstance de un disco básico creado junto con una instancia es true.

  • cloud_efficiency: disco ultra.

  • cloud_ssd: SSD estándar.

  • cloud_essd: ESSD.

Category

String

No

No

Categoría del disco de datos.

Valores válidos:

  • cloud: disco básico.

  • cloud_efficiency (predeterminado): disco ultra.

  • cloud_ssd: SSD estándar.

  • ephemeral_ssd: SSD local.

  • cloud_essd: ESSD. Para instancias optimizadas para E/S, el valor predeterminado es cloud_efficiency. Para instancias no optimizadas para E/S, el valor predeterminado es cloud.

DeleteWithInstance

Boolean

No

No

Indica si el disco de datos se libera junto con la instancia.

Valores válidos:

  • true: el disco se libera cuando se libera la instancia.

  • false: el disco se conserva cuando se libera la instancia.

Description

String

No

No

Descripción del disco de datos.

La longitud debe ser de 2 a 256 caracteres. No puede comenzar con http:// ni con https://.

Device

String

No

No

Punto de montaje del disco de datos.

Si no se especifica esta propiedad, el sistema la asigna cuando se crean automáticamente las instancias de ECS. Los valores comienzan en /dev/xvdb y terminan en /dev/xvdz.

DiskName

String

No

No

Nombre del disco de datos.

La longitud debe ser de 2 a 128 caracteres. Debe comenzar con una letra inglesa o un carácter chino, y no puede empezar con http:// ni con https://. Puede contener dígitos, letras inglesas, caracteres chinos, dos puntos (:), guiones bajos (_) y guiones (-).

Encrypted

String

No

No

Indica si el disco de datos está cifrado.

Valores válidos:

  • true: cifrado.

  • false (predeterminado): no cifrado.

KMSKeyId

String

No

No

ID de la clave de KMS para el disco de datos.

Ninguna.

PerformanceLevel

String

No

No

Nivel de rendimiento de un ESSD utilizado como disco de datos.

Valores válidos:

  • PL1 (predeterminado): un máximo de 50,000 IOPS de lectura y escritura aleatorias por disco.

  • PL2: un máximo de 100,000 IOPS de lectura y escritura aleatorias por disco.

  • PL3: un máximo de 1,000,000 IOPS de lectura y escritura aleatorias por disco.

Para obtener información sobre cómo seleccionar un nivel de rendimiento de ESSD, consulte ESSDs.

ProvisionedIops

Integer

No

No

Métrica de rendimiento de IOPS (operaciones de entrada y salida por segundo) aprovisionadas del disco de datos.

Nota

IOPS es la cantidad de operaciones de E/S que se pueden procesar por segundo e indica la capacidad de lectura y escritura del block storage. Unidad: operaciones.

Size

String

No

No

Tamaño del disco de datos.

Valores válidos:

  • cloud: de 5 a 2,000.

  • cloud_efficiency: de 20 a 32,768.

  • cloud_ssd: de 20 a 32,768.

  • cloud_essd: de 20 a 32,768.

  • ephemeral_ssd: de 5 a 800.

Unidad: GB.

Una vez especificada esta propiedad, el tamaño del disco debe ser mayor o igual al tamaño de la instantánea indicada en SnapshotId.

SnapshotId

String

No

No

Instantánea utilizada para crear el disco de datos.

Una vez especificada esta propiedad, se ignora Size y el tamaño real del disco corresponde al de la instantánea indicada. Si la instantánea se creó el 15 de julio de 2013 o antes, la llamada se rechaza y se muestra InvalidSnapshot.TooOld en los parámetros de respuesta.

Sintaxis de PrivatePoolOptions

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

Propiedades de PrivatePoolOptions

Propiedad

Tipo

Obligatorio

Editable

Descripción

Restricciones

Id

String

No

Sí

ID del pool privado.

ID de un servicio de garantía de elasticidad o de reserva de capacidad.

MatchCriteria

String

No

Sí

Opción de capacidad del pool privado para iniciar instancias.

Un servicio de garantía de elasticidad o de reserva de capacidad genera capacidad de pool privado una vez que entra en vigor para el inicio de instancias. Valores válidos:

  • Open: modo abierto. Coincide automáticamente con la capacidad de pool privado abierta. Si no existe capacidad de pool privado coincidente, se utilizan los recursos del pool público para iniciar la instancia. PrivatePoolOptions.Id no es obligatorio en este modo.

  • Target: modo de destino. Inicia la instancia utilizando la capacidad de pool privado especificada. Si dicha capacidad no está disponible, el inicio de la instancia falla. PrivatePoolOptions.Id es obligatorio en este modo.

  • None: modo sin uso. No se emplea la capacidad del pool privado para iniciar la instancia.

Sintaxis de InstanceTypeOverrides

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

Propiedades de InstanceTypeOverrides

Propiedad

Tipo

Obligatorio

Editable

Descripción

Restricciones

InstanceType

String

No

Sí

Tipo de instancia especificado.

Para escalar el grupo de escalado según la capacidad del tipo de instancia, especifique esta propiedad junto con WeightedCapacity.

WeightedCapacity

Integer

No

Sí

Peso del tipo de instancia especificado.

La cantidad de vCPU, el tamaño de la memoria y otras métricas de rendimiento pueden variar según el tipo de instancia. Configure distintos pesos para cada tipo de instancia según sus necesidades. Por ejemplo:

  • Capacidad actual: 0.

  • Capacidad deseada: 6.

  • Capacidad de ecs.c5.xlarge: 4.

Para alcanzar la capacidad deseada, el grupo de escalado agrega dos instancias ecs.c5.xlarge.

Sintaxis de InstancePatternInfos

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

Propiedades de InstancePatternInfos

Propiedad

Tipo

Obligatorio

Editable

Descripción

Restricciones

Architectures

List

No

Sí

Tipo de arquitectura del tipo de instancia.

Valores válidos:

  • X86: cómputo x86.

  • Heterogeneous: cómputo heterogéneo, como GPU o FPGA.

  • BareMental: Elastic Compute Service Bare Metal Instance.

  • Arm: cómputo Arm.

Predeterminado: todos los tipos de arquitectura.

BurstablePerformance

String

No

No

Indica si el tipo de instancia es ampliable.

Valores válidos:

  • Exclude: excluye los tipos de instancia ampliables.

  • Include: incluye los tipos de instancia ampliables.

  • Required: incluye únicamente los tipos de instancia ampliables.

Valor predeterminado: Include.

Cores

Integer

No

Sí

Cantidad de núcleos de vCPU del tipo de instancia en el modo de configuración inteligente.

Se utiliza para filtrar rangos de tipos de instancia que cumplen con los requisitos. Para obtener más información, consulte Instance family overview. Tenga en cuenta lo siguiente:

  • InstancePatternInfos aplica únicamente cuando el tipo de red del grupo de escalado es VPC.

  • Configure InstancePatternInfos.Cores e InstancePatternInfos.Memory de forma conjunta.

  • Si InstanceType o InstanceTypes especifican un tipo de instancia, Auto Scaling lo utiliza de manera prioritaria para escalar horizontalmente. Si ese tipo de instancia no tiene existencias, se emplea preferentemente el tipo de menor precio que cumpla con los valores de los parámetros de InstancePatternInfos.

ExcludedInstanceTypes

List

No

Sí

Tipos de instancia que se van a excluir.

Los comodines () permiten excluir un tipo de instancia individual o una familia completa. Por ejemplo:

  • ecs.c6.large: excluye el tipo de instancia ecs.c6.large.

  • ecs.c6.: excluye toda la familia de instancias c6.

InstanceFamilyLevel

String

No

Sí

Nivel de la familia de instancias.

Se utiliza para filtrar rangos de tipos de instancia que cumplen con los requisitos y surte efecto cuando CostOptimization está habilitado. Valores válidos:

  • EntryLevel: nivel de entrada, es decir, tipos de instancia compartida. Tiene un costo menor, pero no garantiza un rendimiento de cómputo estable. Resulta adecuado para escenarios de negocio con baja utilización de CPU. Para obtener más información, consulte Shared instance families.

  • EnterpriseLevel: nivel empresarial. Ofrece rendimiento estable y recursos exclusivos, por lo que resulta adecuado para escenarios de negocio que requieren alta estabilidad. Para obtener más información, consulte Instance family overview.

  • CreditEntryLevel: nivel de entrada por créditos, es decir, tipos de instancia ampliables. Los créditos de CPU garantizan el rendimiento de cómputo y resultan adecuados para escenarios de negocio con baja utilización habitual de CPU y picos ocasionales. Para obtener más información, consulte Burstable instances.

MaxPrice

Number

No

Sí

Precio máximo por hora aceptable para instancias pay-as-you-go o preemptible instances en el modo de configuración inteligente.

Ninguna.

Memory

Number

No

Sí

Tamaño de memoria del tipo de instancia en el modo de configuración inteligente.

Unidad: GiB.

Se utiliza para filtrar rangos de tipos de instancia que cumplen con los requisitos.

Sintaxis de CpuOptions

"CpuOptions": 
  {
    "NestedVirtualization": String
  }

Propiedades de CpuOptions

Propiedad

Tipo

Obligatorio

Editable

Descripción

Restricciones

NestedVirtualization

String

No

Sí

Indica si se habilita la virtualización anidada.

Valores válidos:

  • enabled: habilita la virtualización anidada.

  • disabled: deshabilita la virtualización anidada.

Sintaxis de TagList

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

Propiedades de TagList

Propiedad

Tipo

Obligatorio

Editable

Descripción

Restricciones

Key

String

Sí

No

Clave de la etiqueta.

La longitud debe ser de 1 a 64 caracteres. No puede comenzar con aliyun ni con acs:, y no puede contener http:// ni https://.

Value

String

No

No

Valor de la etiqueta.

La longitud debe ser de 0 a 128 caracteres. No puede comenzar con aliyun ni con acs:, y no puede contener http:// ni https://.

Valores de retorno

Fn::GetAtt

  • ScalingConfigurationId: ID de la configuración de escalado. Lo genera el sistema y es único a nivel global.

  • ScalingGroupId: ID del grupo de escalado al que pertenece la configuración de escalado.

Ejemplos

Escenario 1: cree una configuración de escalado para un grupo de escalado existente.

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

Escenario 2: cree una red VPC y construya la infraestructura completa del grupo de escalado.

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

Escenario 3: cree una solución completa de escalado automático que incluya un balanceador de carga CLB y hooks de ciclo de vida.

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