Tous les produits
Search
Centre de documentation

Resource Orchestration Service:ALIYUN::ESS::ScalingConfiguration

Dernière mise à jour :Oct 10, 2026

Le type de ressource ALIYUN::ESS::ScalingConfiguration crée une configuration de mise à l'échelle pour un groupe de mise à l'échelle.

Syntaxe

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

Propriétés

Propriété

Type

Obligatoire

Modifiable

Description

Contraintes

ScalingGroupId

String

Oui

Non

ID du groupe de mise à l'échelle auquel appartient la configuration de mise à l'échelle.

Aucune.

Affinity

String

Non

Oui

Indique si l'instance d'hôte dédié est associée à un hôte dédié.

Valeurs valides :

  • default : L'instance n'est pas associée à un hôte dédié. Si une instance dont le mode d'arrêt économique est activé est redémarrée et que l'hôte dédié d'origine manque de ressources disponibles, l'instance est placée sur un autre hôte dédié dans le pool de ressources de déploiement automatique.

  • host : L'instance est associée à un hôte dédié. Si une instance dont le mode d'arrêt économique est activé est redémarrée, elle reste sur l'hôte dédié d'origine. Le redémarrage échoue si l'hôte dédié d'origine manque de ressources disponibles.

Cpu

Integer

Non

Oui

Nombre de vCPU.

Vous pouvez spécifier conjointement Cpu et Memory pour définir une plage de types d'instance. Par exemple, Cpu=2 et Memory=16 définissent tous les types d'instance disposant de 2 vCPU et de 16 GiB de mémoire. Auto Scaling détermine les types d'instance disponibles en fonction de l'optimisation des E/S, des zones et d'autres facteurs, puis crée l'instance au prix le plus bas.

CpuOptions

Map

Non

Oui

Options CPU.

Pour plus d'informations, consultez Propriétés CpuOptions.

CreditSpecification

String

Non

Oui

Mode de fonctionnement des instances à performances variables (burstable).

Valeurs valides :

  • Unlimited (par défaut) : Mode illimité.

  • Standard : Mode standard.

Pour plus d'informations sur les performances des instances, consultez Instances à performances variables.

DedicatedHostId

String

Non

Oui

Indique s'il faut créer des instances ECS sur un hôte dédié.

Les hôtes dédiés ne prennent pas en charge les instances préemptibles. Si vous spécifiez DedicatedHostId, SpotStrategy et SpotPriceLimit sont ignorés. Appelez DescribeDedicatedHosts pour interroger les ID des hôtes dédiés.

DeploymentSetId

String

Non

Non

ID du jeu de déploiement.

Aucune.

DiskMappings

List

Non

Oui

Disques à attacher.

Un maximum de 16 disques est pris en charge. Pour plus d'informations, consultez Propriétés DiskMappings.

HostName

String

Non

Oui

Nom d'hôte du serveur cloud.

Un point (.) ou un trait d'union (-) ne peut pas être le premier ou le dernier caractère, et les points ou traits d'union ne peuvent pas être consécutifs. Les exigences de nommage pour les différents types d'instance sont les suivantes :

  • Instances Windows : Le nom d'hôte doit contenir entre 2 et 15 caractères et peut inclure des lettres majuscules, des lettres minuscules, des chiffres et des traits d'union (-). Il ne peut pas contenir de points (.) ni être composé uniquement de chiffres.

  • Autres types d'instance, tels que Linux : Le nom d'hôte doit contenir entre 2 et 64 caractères et peut inclure plusieurs points (.). Chaque segment entre deux points (.) peut contenir des lettres majuscules, des lettres minuscules, des chiffres et des traits d'union (-).

HpcClusterId

String

Non

Non

ID du cluster E-HPC auquel appartient l'instance.

Aucune.

ImageFamily

String

Non

Oui

Nom de la famille d'images.

Définissez cette propriété pour obtenir la dernière image disponible dans la famille d'images afin de créer l'instance. Vous ne pouvez pas définir cette propriété si ImageId est défini.

ImageId

String

Non

Oui

ID de l'image de l'instance, y compris les images publiques, les images personnalisées et les images Alibaba Cloud Marketplace.

Pour plus d'informations, consultez Images publiques.

ImageName

String

Non

Oui

Nom du fichier image.

Aucune.

ImageOptionsLoginAsNonRoot

Boolean

Non

Non

Indique si une instance ECS utilise le compte ecs-user pour se connecter.

Valeurs valides :

  • true : Oui.

  • false : Non.

InstanceDescription

String

Non

Oui

Description de l'instance ECS.

La description doit contenir entre 2 et 256 caractères anglais ou chinois et ne peut pas commencer par http:// ou https://.

InstanceId

String

Non

Non

ID de l'instance de la configuration de mise à l'échelle.

Aucune.

InstanceName

String

Non

Oui

Nom des instances créées sur la base de la configuration de mise à l'échelle actuelle.

Aucune.

InstancePatternInfos

List

Non

Oui

Ensemble d'informations pour la configuration intelligente.

Pour plus d'informations, consultez Propriétés InstancePatternInfos.

InstanceType

String

Non

Oui

Type d'instance.

Pour plus d'informations, consultez Présentation des familles d'instances.

InstanceTypeOverrides

List

Non

Oui

Informations sur les types d'instance spécifiés.

Pour plus d'informations, consultez Propriétés InstanceTypeOverrides.

InstanceTypes

List

Non

Oui

Paramètre de type d'instance multiple.

Si InstanceTypes est spécifié, InstanceType n'a aucun effet. Vous pouvez configurer jusqu'à 10 types d'instance dans une seule configuration de mise à l'échelle. Leurs priorités diminuent selon l'ordre des éléments de la liste. Si une instance ne peut pas être créée avec un type d'instance de priorité supérieure, Auto Scaling sélectionne automatiquement le type d'instance de priorité inférieure suivant.

InternetChargeType

String

Non

Oui

Méthode de facturation pour la bande passante d'accès au réseau public.

Valeurs valides :

  • PayByBandwidth : Facturation par bande passante fixe.

  • PayByTraffic (par défaut) : Facturation par trafic.

InternetMaxBandwidthIn

Integer

Non

Non

Bande passante entrante maximale sur le réseau public.

Unité : Mbps.

Valeurs valides : 1 à 200.

Si vous ne spécifiez pas cette propriété, la bande passante entrante est automatiquement définie sur 200 Mbps. Le trafic de données entrant est gratuit et cette propriété n'engendre jamais de frais.

InternetMaxBandwidthOut

Integer

Non

Oui

Bande passante sortante maximale sur le réseau public.

Valeurs valides :

  • Facturation par bande passante fixe : 0 à 100. Valeur par défaut : 0.

  • Facturation par trafic : 0 à 100. Cette propriété est obligatoire.

Unité : Mbps.

IoOptimized

String

Non

Oui

Indique s'il faut créer une instance optimisée pour les E/S.

Valeurs valides :

  • none (par défaut) : Non optimisé pour les E/S.

  • optimized : Optimisé pour les E/S.

Ipv6AddressCount

Integer

Non

Oui

Nombre d'adresses IPv6 générées aléatoirement à attribuer à l'interface réseau élastique.

Aucune.

KeyPairName

String

Non

Oui

Nom de la paire de clés liée à l'instance.

  • Si le type d'instance est Windows, cette propriété est ignorée et sa valeur par défaut est vide.

  • Si le type d'instance est Linux, la connexion par mot de passe est initialement désactivée.

LoadBalancerWeight

Integer

Non

Oui

Pondération de l'instance ECS lorsqu'elle est un serveur backend d'équilibrage de charge.

Valeurs valides : 1 à 100. Valeur par défaut : 50.

Memory

Integer

Non

Oui

Taille de la mémoire.

Unité : GiB. Vous pouvez spécifier conjointement Cpu et Memory pour définir une plage de types d'instance. Par exemple, Cpu=2 et Memory=16 définissent tous les types d'instance disposant de 2 vCPU et de 16 GiB de mémoire. Auto Scaling détermine les types d'instance disponibles en fonction de l'optimisation des E/S, des zones et d'autres facteurs, puis crée l'instance au prix le plus bas.

Password

String

Non

Oui

Mot de passe de l'instance ECS.

Le mot de passe doit contenir entre 8 et 30 caractères et inclure trois catégories de caractères parmi les suivantes : lettres majuscules, lettres minuscules, chiffres et caractères spéciaux. Les caractères spéciaux suivants sont pris en charge :

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

Un mot de passe pour une instance Windows ne peut pas commencer par une barre oblique (/).

Remarque

Si vous spécifiez Password, utilisez HTTPS pour envoyer des requêtes afin d'éviter la divulgation du mot de passe.

PasswordInherit

Boolean

Non

Oui

Indique s'il faut utiliser le mot de passe prédéfini dans l'image.

Si le mot de passe prédéfini de l'image est utilisé, assurez-vous que l'image dispose d'un mot de passe prédéfini.

PrivatePoolOptions

Map

Non

Oui

Configuration du pool privé pour le démarrage des instances.

Pour plus d'informations, consultez Propriétés PrivatePoolOptions.

RamRoleName

String

Non

Oui

Nom du rôle RAM de l'instance.

Utilisez l'API RAM ListRoles pour interroger le nom du rôle RAM. Pour plus d'informations, consultez CreateRole et ListRoles.

ResourceGroupId

String

Non

Oui

ID du groupe de ressources auquel appartient l'instance.

Aucune.

ScalingConfigurationName

String

Non

Oui

Nom de la configuration de mise à l'échelle.

Le nom doit contenir entre 2 et 64 caractères, commencer par un chiffre, une lettre anglaise ou un caractère chinois, et peut contenir des chiffres, des lettres anglaises, des caractères chinois, des traits de soulignement (_), des traits d'union (-) et des points (.).

Le nom doit être unique au sein d'un groupe de mise à l'échelle dans la même région.

Si vous ne spécifiez pas cette propriété, l'ID de la configuration de mise à l'échelle est utilisé par défaut.

SecurityEnhancementStrategy

String

Non

Non

Indique s'il faut activer le durcissement de sécurité.

Valeurs valides :

  • Active : Active le durcissement de sécurité et s'applique uniquement aux images publiques.

  • Deactive : N'active pas le durcissement de sécurité et s'applique à tous les types d'images.

SecurityGroupId

String

Non

Oui

Groupe de sécurité auquel appartient l'instance.

Aucune.

SecurityGroupIds

List

Non

Oui

Ajoute l'instance ECS à plusieurs groupes de sécurité.

Remarque

SecurityGroupId et SecurityGroupIds ne peuvent pas être spécifiés simultanément.

SpotDuration

Integer

Non

Oui

Période de conservation d'une instance préemptible.

Unité : heures. Valeurs valides :

  • 1 : Alibaba Cloud garantit que l'instance n'est pas libérée automatiquement pendant une heure après sa création. Au bout d'une heure, le système compare l'offre au prix du marché et vérifie l'inventaire des ressources pour déterminer s'il faut conserver ou récupérer l'instance.

  • 0 : Alibaba Cloud ne garantit pas que l'instance fonctionne pendant une heure après sa création. Le système compare l'offre au prix du marché et vérifie l'inventaire des ressources pour déterminer s'il faut conserver ou récupérer l'instance.

SpotInterruptionBehavior

String

Non

Oui

Comportement d'interruption d'une instance préemptible.

Aucune.

SpotPriceLimit

Number

Non

Oui

Prix horaire maximal de l'instance.

Jusqu'à trois décimales sont prises en charge.

Cette propriété prend effet lorsque SpotStrategy est défini sur SpotWithPriceLimit. Sa valeur est remplacée par SpotPriceLimitForInstanceType.

SpotPriceLimitForInstanceType

Map

Non

Oui

Types d'instance et offres correspondantes pour les instances préemptibles.

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

Cette propriété prend effet lorsque SpotStrategy est défini sur SpotWithPriceLimit.

Vous pouvez configurer jusqu'à 10 paires instance-prix.

SpotStrategy

String

Non

Oui

Stratégie préemptible d'une instance à la demande.

Valeurs valides :

  • NoSpot (par défaut) : Une instance à la demande normale.

  • SpotWithPriceLimit : Une instance préemptible avec une limite de prix.

  • SpotAsPriceGo : Le système fait automatiquement une offre selon le prix actuel du marché.

SystemDiskAutoSnapshotPolicyId

String

Non

Oui

ID de la politique de snapshot automatique utilisée par le disque système.

Aucune.

SystemDiskBurstingEnabled

Boolean

Non

Non

Indique s'il faut activer les performances en rafale (burst) pour le disque système.

Valeurs valides :

  • true : Activé.

  • false : Désactivé.

SystemDiskCategories

List

Non

Oui

Catégories de disque multiples pour le disque système.

Si une catégorie de disque de priorité supérieure n'est pas disponible, Auto Scaling tente automatiquement de créer le disque système avec la catégorie de priorité inférieure suivante. Valeurs valides :

  • cloud : Disque de base.

  • cloud_efficiency : Disque ultra.

  • cloud_ssd : SSD standard.

  • cloud_essd : ESSD.

SystemDiskCategory

String

Non

Oui

Catégorie du disque système.

Valeurs valides :

  • cloud : Disque de base.

  • cloud_efficiency : Disque ultra.

  • cloud_ssd : SSD standard.

  • ephemeral_ssd : SSD local.

  • cloud_essd : ESSD.

Lorsque InstanceType est un type d'instance de série I et que l'instance n'est pas optimisée pour les E/S, la valeur par défaut est cloud. Sinon, la valeur par défaut est cloud_efficiency.

SystemDiskDescription

String

Non

Oui

Description du disque système.

Aucune.

SystemDiskDiskName

String

Non

Oui

Nom du disque système.

Aucune.

SystemDiskEncryptAlgorithm

String

Non

Oui

Algorithme de chiffrement utilisé par le disque système.

Valeurs valides :

  • AES-256.

  • SM4-128.

SystemDiskEncrypted

Boolean

Non

Oui

Indique si le disque système est chiffré.

Valeurs valides :

  • true : Chiffré.

  • false : Non chiffré.

SystemDiskKMSKeyId

String

Non

Oui

ID de la clé KMS utilisée par le disque système.

Aucune.

SystemDiskPerformanceLevel

String

Non

Oui

Niveau de performance d'un ESSD utilisé comme disque système.

Valeurs valides :

  • PL1 (par défaut) : Un maximum de 50 000 IOPS en lecture/écriture aléatoire par disque.

  • PL2 : Un maximum de 100 000 IOPS en lecture/écriture aléatoire par disque.

  • PL3 : Un maximum de 1 000 000 IOPS en lecture/écriture aléatoire par disque.

Pour plus d'informations sur la sélection d'un niveau de performance ESSD, consultez Disques ESSD.

SystemDiskProvisionedIops

Integer

Non

Oui

Métrique de performance des IOPS provisionnées (opérations d'entrée/sortie par seconde) du disque système.

Aucune.

SystemDiskSize

Integer

Non

Oui

Taille du disque système.

Valeurs valides : 20 à 500.

Valeur par défaut : 40.

Unité : GiB.

Si une image personnalisée est utilisée pour créer le disque système, la taille du disque système doit être supérieure ou égale à la taille de l'image personnalisée.

TagList

List

Non

Oui

Tags de l'instance.

Les tags sont transmis sous forme de paires clé-valeur. Vous pouvez utiliser jusqu'à cinq tags au format suivant : {"key1": "value1", "key2": "value2", ... "key5": "value5"}.

Pour plus d'informations, consultez Propriétés TagList.

Tenancy

String

Non

Oui

Indique s'il faut créer une instance sur un hôte dédié.

Valeurs valides :

  • default : Crée une instance non dédiée à un hôte.

  • host : Crée une instance dédiée à un hôte. Si DedicatedHostId n'est pas spécifié, Alibaba Cloud sélectionne automatiquement un hôte dédié pour l'instance.

UserData

String

Non

Oui

Données utilisateur transmises lors de la création d'une instance.

Le contenu ne doit pas dépasser 16 Ko. L'encodage Base64 n'est pas requis. Échappez les caractères spéciaux avec une barre oblique inverse (\).

ZoneId

String

Non

Oui

ID de la zone à laquelle appartient l'instance.

Aucune.

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

Propriétés de DiskMappings

Property

Type

Required

Editable

Description

Constraints

AutoSnapshotPolicyId

String

No

No

ID de la politique de snapshot automatique utilisée par le disque de données.

Aucune.

BurstingEnabled

Boolean

No

No

Indique si les performances en rafale (burst) sont activées pour le disque de données.

Valeurs valides :

  • true : Activé.

  • false : Désactivé.

Categories

List

No

No

Les différentes catégories de disque pour le disque de données.

La première catégorie de disque possède la priorité la plus élevée, tandis que les autres ont une priorité décroissante. Si une catégorie de disque à haute priorité n'est pas disponible, Auto Scaling tente automatiquement de créer le disque de données avec la catégorie suivante de priorité inférieure. Valeurs valides :

  • cloud : Disque basique. La propriété DeleteWithInstance d'un disque basique créé avec une instance est définie sur true.

  • cloud_efficiency : Disque ultra.

  • cloud_ssd : SSD standard.

  • cloud_essd : ESSD.

Category

String

No

No

Catégorie du disque de données.

Valeurs valides :

  • cloud : Disque basique.

  • cloud_efficiency (par défaut) : Disque ultra.

  • cloud_ssd : SSD standard.

  • ephemeral_ssd : SSD local.

  • cloud_essd : ESSD. Pour les instances optimisées pour les E/S, la valeur par défaut est cloud_efficiency. Pour les instances non optimisées pour les E/S, la valeur par défaut est cloud.

DeleteWithInstance

Boolean

No

No

Indique si le disque de données est libéré en même temps que l'instance.

Valeurs valides :

  • true : Le disque est libéré lorsque l'instance est libérée.

  • false : Le disque est conservé lorsque l'instance est libérée.

Description

String

No

No

Description du disque de données.

La longueur doit être comprise entre 2 et 256 caractères. Elle ne peut pas commencer par http:// ou https://.

Device

String

No

No

Point de montage du disque de données.

Si cette propriété n'est pas spécifiée, le système l'attribue lors de la création automatique des instances ECS. Les valeurs commencent à /dev/xvdb et se terminent à /dev/xvdz.

DiskName

String

No

No

Nom du disque de données.

La longueur doit être comprise entre 2 et 128 caractères. Elle doit commencer par une lettre anglaise ou un caractère chinois et ne peut pas commencer par http:// ou https://. Elle peut contenir des chiffres, des lettres anglaises, des caractères chinois, des deux-points (:), des traits de soulignement (_) et des traits d'union (-).

Encrypted

String

No

No

Indique si le disque de données est chiffré.

Valeurs valides :

  • true : Chiffré.

  • false (par défaut) : Non chiffré.

KMSKeyId

String

No

No

ID de la clé KMS pour le disque de données.

Aucune.

PerformanceLevel

String

No

No

Niveau de performance d'un ESSD utilisé comme disque de données.

Valeurs valides :

  • PL1 (par défaut) : Maximum de 50 000 IOPS en lecture/écriture aléatoire par disque.

  • PL2 : Maximum de 100 000 IOPS en lecture/écriture aléatoire par disque.

  • PL3 : Maximum de 1 000 000 IOPS en lecture/écriture aléatoire par disque.

Pour plus d'informations sur la sélection d'un niveau de performance ESSD, consultez ESSDs.

ProvisionedIops

Integer

No

No

Métrique de performance des IOPS provisionnées (opérations d'entrée/sortie par seconde) du disque de données.

Remarque

Les IOPS représentent le nombre d'opérations d'E/S pouvant être traitées par seconde et indiquent la capacité de lecture/écriture du stockage par blocs. Unité : opérations.

Size

String

No

No

Taille du disque de données.

Valeurs valides :

  • cloud : 5 à 2 000.

  • cloud_efficiency : 20 à 32 768.

  • cloud_ssd : 20 à 32 768.

  • cloud_essd : 20 à 32 768.

  • ephemeral_ssd : 5 à 800.

Unité : Go.

Une fois cette propriété spécifiée, la taille du disque doit être supérieure ou égale à la taille du snapshot spécifiée par SnapshotId.

SnapshotId

String

No

No

Snapshot utilisé pour créer le disque de données.

Une fois cette propriété spécifiée, Size est ignorée et la taille réelle du disque correspond à celle du snapshot spécifié. Si le snapshot a été créé le 15 juillet 2013 ou avant, l'appel est rejeté et InvalidSnapshot.TooOld s'affiche dans les paramètres de réponse.

Syntaxe de PrivatePoolOptions

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

Propriétés de PrivatePoolOptions

Property

Type

Required

Editable

Description

Constraints

Id

String

No

Yes

ID du pool privé.

ID d'un service de garantie d'élasticité ou de réservation de capacité.

MatchCriteria

String

No

Yes

Option de capacité du pool privé pour le démarrage des instances.

Un service de garantie d'élasticité ou de réservation de capacité génère une capacité de pool privé après son activation pour le démarrage des instances. Valeurs valides :

  • Open : Mode ouvert. Met automatiquement en correspondance la capacité du pool privé ouvert. Si aucune capacité de pool privé correspondante n'existe, les ressources du pool public sont utilisées pour démarrer l'instance. PrivatePoolOptions.Id n'est pas requis dans ce mode.

  • Target : Mode cible. Démarre l'instance en utilisant la capacité du pool privé spécifiée. Si la capacité du pool privé n'est pas disponible, le démarrage de l'instance échoue. PrivatePoolOptions.Id est requis dans ce mode.

  • None : Mode sans utilisation. La capacité du pool privé n'est pas utilisée pour démarrer l'instance.

Syntaxe de InstanceTypeOverrides

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

Propriétés de InstanceTypeOverrides

Property

Type

Required

Editable

Description

Constraints

InstanceType

String

No

Yes

Type d'instance spécifié.

Pour mettre à l'échelle le groupe de mise à l'échelle par capacité de type d'instance, spécifiez cette propriété et WeightedCapacity ensemble.

WeightedCapacity

Integer

No

Yes

Pondération du type d'instance spécifié.

Le nombre de vCPU, la taille de la mémoire et d'autres métriques de performance peuvent varier selon le type d'instance. Vous pouvez configurer différentes pondérations pour différents types d'instance selon vos besoins. Par exemple :

  • Capacité actuelle : 0.

  • Capacité souhaitée : 6.

  • Capacité de ecs.c5.xlarge : 4.

Pour atteindre la capacité souhaitée, le groupe de mise à l'échelle ajoute deux instances ecs.c5.xlarge.

Syntaxe de InstancePatternInfos

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

Propriétés InstancePatternInfos

Property

Type

Required

Editable

Description

Constraints

Architectures

List

No

Yes

Type d'architecture du type d'instance.

Valeurs valides :

  • X86 : calcul X86.

  • Heterogeneous : calcul hétérogène, tel que GPU ou FPGA.

  • BareMental : instance Bare Metal Elastic Compute Service.

  • Arm : calcul Arm.

Par défaut : tous les types d'architecture.

BurstablePerformance

String

No

No

Indique si le type d'instance est à performances éclatables (burstable).

Valeurs valides :

  • Exclude : exclut les types d'instances à performances éclatables.

  • Include : inclut les types d'instances à performances éclatables.

  • Required : inclut uniquement les types d'instances à performances éclatables.

Valeur par défaut : Include.

Cores

Integer

No

Yes

Nombre de cœurs vCPU du type d'instance en mode de configuration intelligente.

Permet de filtrer les plages de types d'instances répondant aux exigences. Pour plus d'informations, consultez la page Présentation des familles d'instances. Tenez compte des points suivants :

  • InstancePatternInfos s'applique uniquement lorsque le type de réseau du groupe de mise à l'échelle est VPC.

  • Configurez conjointement InstancePatternInfos.Cores et InstancePatternInfos.Memory.

  • Si InstanceType ou InstanceTypes spécifie un type d'instance, Auto Scaling utilise prioritairement ce type pour la mise à l'échelle horizontale. Si ce type n'est pas disponible, le service sélectionne en priorité le type d'instance au prix le plus bas qui respecte les valeurs des paramètres InstancePatternInfos.

ExcludedInstanceTypes

List

No

Yes

Types d'instances à exclure.

Les caractères génériques () permettent d'exclure un type d'instance individuel ou une famille d'instances entière. Par exemple :

  • ecs.c6.large : exclut le type d'instance ecs.c6.large.

  • ecs.c6. : exclut toute la famille d'instances c6.

InstanceFamilyLevel

String

No

Yes

Niveau de la famille d'instances.

Permet de filtrer les plages de types d'instances répondant aux exigences et prend effet lorsque CostOptimization est activé. Valeurs valides :

  • EntryLevel : niveau entrée de gamme, c'est-à-dire types d'instances partagés. Cette option est moins coûteuse mais ne garantit pas des performances de calcul stables. Elle convient aux scénarios professionnels présentant une faible utilisation du CPU. Pour plus d'informations, consultez la page Familles d'instances partagées.

  • EnterpriseLevel : niveau entreprise. Cette option offre des performances stables et des ressources dédiées, et convient aux scénarios professionnels exigeant une haute stabilité. Pour plus d'informations, consultez la page Présentation des familles d'instances.

  • CreditEntryLevel : niveau d'entrée avec crédits, c'est-à-dire types d'instances à performances éclatables. Les crédits CPU garantissent les performances de calcul et conviennent aux scénarios professionnels caractérisés par une utilisation habituelle faible du CPU et des pics occasionnels. Pour plus d'informations, consultez la page Instances à performances éclatables.

MaxPrice

Number

No

Yes

Prix horaire maximal acceptable pour les instances à la demande ou préemptibles en mode de configuration intelligente.

Aucun.

Memory

Number

No

Yes

Taille de la mémoire du type d'instance en mode de configuration intelligente.

Unité : GiB.

Permet de filtrer les plages de types d'instances répondant aux exigences.

Syntaxe CpuOptions

"CpuOptions": 
  {
    "NestedVirtualization": String
  }

Propriétés CpuOptions

Property

Type

Required

Editable

Description

Constraints

NestedVirtualization

String

No

Yes

Indique s'il faut activer la virtualisation imbriquée.

Valeurs valides :

  • enabled : active la virtualisation imbriquée.

  • disabled : désactive la virtualisation imbriquée.

Syntaxe TagList

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

Propriétés TagList

Property

Type

Required

Editable

Description

Constraints

Key

String

Yes

No

Clé du tag.

La longueur doit être comprise entre 1 et 64 caractères. Elle ne peut pas commencer par aliyun ou acs: et ne peut pas contenir http:// ni https://.

Value

String

No

No

Valeur du tag.

La longueur doit être comprise entre 0 et 128 caractères. Elle ne peut pas commencer par aliyun ou acs: et ne peut pas contenir http:// ni https://.

Valeurs de retour

Fn::GetAtt

  • ScalingConfigurationId : ID de la configuration de mise à l'échelle. Généré par le système et unique à l'échelle mondiale.

  • ScalingGroupId : ID du groupe de mise à l'échelle auquel appartient la configuration de mise à l'échelle.

Exemples

Scénario 1 : Créez une configuration de mise à l'échelle pour un groupe de mise à l'échelle existant.

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

Scénario 2 : Créez un réseau VPC et déployez l'infrastructure complète du groupe de mise à l'échelle.

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

Scénario 3 : Créez une solution de mise à l'échelle automatique complète intégrant un équilibreur de charge CLB et des hooks de cycle de vie.

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