View a markdown version of this page

Attribut UpdatePolicy - AWS CloudFormation

Il s’agit du nouveau Guide de référence des modèles CloudFormation . Veuillez mettre à jour vos favoris et vos liens. Pour obtenir de l'aide pour démarrer CloudFormation, consultez le guide de AWS CloudFormation l'utilisateur.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Attribut UpdatePolicy

Utilisez l'UpdatePolicyattribut pour spécifier le mode de gestion des mises CloudFormation à jour de certaines ressources lors des opérations de mise à jour de la pile.

Présentation de

En utilisant l’attribut UpdatePolicy, vous pouvez contrôler la mise à jour des ressources suivantes, comme décrit ci-dessous :

  • AWS::AppStream: :Fleet — CloudFormation peut arrêter et démarrer une flotte, ce qui entraîne le remplacement des instances de la flotte. Ainsi, toutes les instances reçoivent immédiatement les dernières modifications après une mise à jour de pile.

  • AWS::AutoScaling::AutoScalingGroup— Avec les groupes Auto Scaling, vous pouvez utiliser une ou plusieurs politiques de mise à jour pour contrôler la manière dont certaines CloudFormation mises à jour sont gérées. Ces stratégies comprennent :

    • AutoScalingReplacingUpdateet AutoScalingRollingUpdate politiques : CloudFormation vous pouvez soit remplacer le groupe Auto Scaling et ses instances par une AutoScalingReplacingUpdate politique, soit remplacer uniquement les instances par une AutoScalingRollingUpdate politique. Ces opérations de remplacement se produisent lorsque vous effectuez l’une des modifications suivantes :

      • Modification de la ressource AWS::AutoScaling::LaunchConfiguration du groupe Auto Scaling.

      • Modification de la propriété VPCZoneIdentifier du groupe Auto Scaling.

      • Modification de la propriété LaunchTemplate du groupe Auto Scaling.

      • Modification de la propriété PlacementGroup du groupe Auto Scaling.

      • Mise à jour d'un groupe Auto Scaling qui contient des instances ne correspondant pas à la ressource LaunchConfiguration actuelle.

      Si les politiques AutoScalingReplacingUpdate et AutoScalingRollingUpdate sont toutes les deux spécifiées, la définition de la propriété WillReplace sur true donne la priorité à AutoScalingReplacingUpdate.

    • AutoScalingInstanceRefreshpolicy : CloudFormation exécute une actualisation de l'instance Auto Scaling lorsque vous modifiez certaines propriétés du groupe Auto Scaling. En comparaisonAutoScalingRollingUpdate, cette politique prend en charge les politiques de maintenance des instances (y compris le lancement avant la fin), les politiques de résiliation, la protection évolutive, le remplacement du volume racine et les fonctionnalités supplémentaires d'Amazon EC2 Auto Scaling. Vous ne pouvez pas spécifier les deux AutoScalingInstanceRefresh et faire AutoScalingRollingUpdate partie du même groupe Auto Scaling. Pour de plus amples informations, veuillez consulter AutoScalingInstanceRefresh politique.

    • AutoScalingScheduledActionpolitique — Cette politique s'applique lorsque vous mettez à jour une pile qui inclut un groupe Auto Scaling avec des actions planifiées qui redimensionnent le groupe à des moments précis. CloudFormation ne peut pas modifier la taille minimale, la taille maximale ou la capacité souhaitée du groupe à moins qu'elles n'aient été explicitement modifiées dans le modèle de pile. Cette stratégie permet d’éviter des mises à jour inattendues susceptibles d’interférer avec les activités de mise à l’échelle planifiées.

  • AWS::ElastiCache::ReplicationGroup: CloudFormation peut modifier les partitions d'un groupe de réplication en ajoutant ou en supprimant des partitions, plutôt que de remplacer la ressource dans son intégralité.

  • AWS::OpenSearchService::Domainet AWS::Elasticsearch::Domain(ancien) : CloudFormation permet de mettre à niveau un domaine de OpenSearch service vers une nouvelle version d' OpenSearch Elasticsearch sans remplacer l'intégralité de la ressource.

  • AWS::Lambda::Alias— CloudFormation peut effectuer un CodeDeploy déploiement lorsque la version de l'alias change.

Les sections suivantes décrivent la syntaxe et les propriétés de l’attribut UpdatePolicy pris en charge pour chaque type de ressource.

WorkSpaces Politique de mise à jour des applications

Pour arrêter un parc d' WorkSpaces applications avant une mise à jour et le redémarrer après une mise à jour, utilisez la politique de mise à jour WorkSpaces des applications.

Syntaxe

JSON

{ "UpdatePolicy": { "StopBeforeUpdate": { "Type": "Boolean" }, "StartAfterUpdate": { "Type": "Boolean" } } }

YAML

UpdatePolicy: StopBeforeUpdate: Type: Boolean StartAfterUpdate: Type: Boolean
StopBeforeUpdate

Arrête la flotte spécifiée avant la mise à jour.

Obligatoire : non

StartAfterUpdate

Démarre la flotte spécifiée après la mise à jour.

Obligatoire : non

AutoScalingReplacingUpdate politique

Pour remplacer le groupe Auto Scaling ainsi que toutes les instances qu’il contient, utilisez la stratégie AutoScalingReplacingUpdate.

Avant de tenter une mise à jour, assurez-vous de disposer d'une capacité Amazon EC2 suffisante, à la fois pour les groupes Auto Scaling anciens et nouveaux.

Syntaxe

JSON

"UpdatePolicy" : { "AutoScalingReplacingUpdate" : { "WillReplace" : Boolean } }

YAML

UpdatePolicy: AutoScalingReplacingUpdate: WillReplace: Boolean

Propriétés

WillReplace

Spécifie si un groupe Auto Scaling et les instances qu'il contient seront remplacés pendant une mise à jour. Pendant le remplacement, CloudFormation conserve l'ancien groupe jusqu'à ce qu'il ait fini de créer le nouveau. Si la mise à jour échoue, CloudFormation vous pouvez revenir à l'ancien groupe Auto Scaling et supprimer le nouveau groupe Auto Scaling.

Lors CloudFormation de la création du nouveau groupe, il ne détache ni n'attache aucune instance. Après avoir créé avec succès le nouveau groupe Auto Scaling, l' CloudFormation ancien groupe Auto Scaling est supprimé pendant le processus de nettoyage.

Lorsque vous définissez le paramètre WillReplace, n'oubliez pas de spécifier une stratégie Attribut CreationPolicy correspondante. Si le nombre minimum d'instances (spécifié par la MinSuccessfulInstancesPercent propriété) n'indique pas un succès dans le Timeout délai (spécifié dans l'CreationPolicyattribut), la mise à jour de remplacement échoue et CloudFormation revient à l'ancien groupe Auto Scaling.

Type : valeur booléenne

Obligatoire : non

AutoScalingRollingUpdate politique

Pour effectuer une mise à jour progressive des instances d’un groupe Auto Scaling, plutôt que d’attendre que les actions de mise à l’échelle remplacent progressivement les anciennes instances par des instances plus neuves, utilisez la stratégie AutoScalingRollingUpdate. Cette politique vous donne la flexibilité de spécifier si elle CloudFormation remplace les instances d'un groupe Auto Scaling par lots ou en une seule fois sans remplacer la ressource dans son intégralité.

Éléments à prendre en compte lors de l’utilisation d’une stratégie AutoScalingRollingUpdate :

Avertissement

Les mises à jour continues ne respectent pas la politique de maintenance des instances configurée dans votre groupe Auto Scaling. Lors d'une mise à jour continue, la capacité normale peut être inférieure à celle MinHealthyPercentage définie pour le groupe et CloudFormation ne lance pas de nouvelles instances avant de MaxHealthyPercentage mettre fin aux instances existantes, peu importe. Pour préserver votre politique de maintenance des instances lors des mises à jour de la pile, utilisez AutoScalingInstanceRefresh politique plutôt le

  • Lorsque vous CloudFormation annulez une mise à jour, elle utilise la UpdatePolicy configuration spécifiée dans le modèle avant la mise à jour de la pile en cours. Par exemple, vous passez MaxBatchSize de 1 à 10 dans leUpdatePolicy, vous effectuez une mise à jour de la pile, et cette mise à jour échoue. CloudFormation utilisera 1 comme taille de lot maximale lors de l'annulation, et non 10. Pour éviter ce scénario, apportez les modifications à UpdatePolicy dans une mise à jour séparée, avant toute mise à jour du groupe Auto Scaling susceptible de déclencher une mise à jour progressive.

  • CloudFormation recommande de spécifier la SuspendProcesses propriété permettant de suspendre temporairement les processus Amazon EC2 Auto Scaling susceptibles d'interférer avec la mise à jour continue et de provoquer son échec. Pour plus d'informations, consultez How can I update my Auto Scaling group when I update my CloudFormation stack ?

    La AutoScalingInstanceRefresh politique prend également en charge tous les processus de groupe Auto Scaling lors des mises à jour de la pile, de sorte que vous n'avez pas besoin de les suspendre. Si vous avez besoin de processus tels que les bilans de santé et le rééquilibrage de l'AZ pour rester actifs, utilisez-les AutoScalingInstanceRefresh plutôt. Pour de plus amples informations, veuillez consulter AutoScalingInstanceRefresh politique.

  • CloudFormation prend en charge l'utilisation des hooks de cycle de vie Amazon EC2 Auto Scaling lors du lancement ou de la résiliation d'instances. Cela vous laisse le temps d’exécuter des actions personnalisées sur une instance avant qu’elle ne passe à l’état suivant. Pour vous assurer que les nouvelles instances atteignent l’état InService, complétez le hook de cycle de vie avec un résultat CONTINUE lorsque l’action personnalisée est terminée. Par défaut, si aucune réponse n’est reçue et que le hook de cycle de vie expire, le lancement de l’instance est considéré comme un échec et abandonné. Si aucune instance n’atteint l’état InService, la mise à jour progressive finit par échouer.

  • Les autres fonctionnalités d'Amazon EC2 Auto Scaling, telles que les politiques de résiliation et la protection évolutive, ne sont pas disponibles pour les mises à jour continues. CloudFormation Si vous avez besoin de l'une de ces fonctionnalités, AutoScalingInstanceRefresh utilisez-la plutôt. Pour de plus amples informations, veuillez consulter AutoScalingInstanceRefresh politique.

  • Si vous utilisez une AutoScalingRollingUpdate politique et supprimez le paramètre du groupe de placement, le groupe de placement sera supprimé du groupe Auto Scaling et du CloudFormation modèle. Cela déclenche également une mise à jour progressive, de sorte que les nouvelles instances ne seront plus lancées dans un groupe de placement.

Syntaxe

JSON

"UpdatePolicy" : { "AutoScalingRollingUpdate" : { "MaxBatchSize" : Integer, "MinActiveInstancesPercent" : Integer, "MinInstancesInService" : Integer, "MinSuccessfulInstancesPercent" : Integer, "PauseTime" : String, "SuspendProcesses" : [ List of processes ], "WaitOnResourceSignals" : Boolean } }

Propriétés

MaxBatchSize

Spécifie le nombre maximal d’instances qui peuvent être remplacées simultanément.

Par défaut : 1

Maximum : 100

Type : entier

Obligatoire : non

MinActiveInstancesPercent

Spécifie le pourcentage d’instances dans un groupe Auto Scaling qui doivent être dans l’état InService par rapport à la capacité souhaitée du groupe pendant une mise à jour progressive pour que la mise à jour soit considérée comme réussie. Vous pouvez spécifier une valeur comprise entre 0 et 100. CloudFormation arrondit au dixième de pour cent le plus proche. Par exemple, si vous mettez à jour cinq instances avec un pourcentage InService de minimum 50 %, au moins trois instances doivent être dans l’état InService. Si une instance ne passe pas à l'InServiceétat dans un délai fixe d'une heure, cela CloudFormation suppose qu'elle n'a pas été mise à jour.

La définition de MinActiveInstancesPercent dans votre UpdatePolicy affecte également les instances lancées lorsque la propriété DesiredCapacity de la ressource AWS::AutoScaling::AutoScalingGroup est définie à une valeur supérieure à la capacité souhaitée actuelle du groupe Auto Scaling.

Par défaut : 100

Type : entier

Obligatoire : non

MinInstancesInService

Spécifie le nombre minimum d'instances qui doivent être en service au sein du groupe Auto Scaling lors de la mise CloudFormation à jour des anciennes instances. Cette valeur doit être inférieure à la valeur MaxSize du groupe Auto Scaling.

Avertissement

Il est recommandé de définir la valeur de la propriété MinInstancesInService au moins égale à la valeur MinSize du groupe Auto Scaling. Cela permet d’éviter les problèmes de disponibilité pendant une mise à jour progressive, notamment lorsque 0 instance sert le trafic client.

Par défaut : 0

Type : entier

Obligatoire : non

MinSuccessfulInstancesPercent

Spécifie le pourcentage d'instances d'une mise à jour propagée Auto Scaling qui doivent signaler une réussite pour qu'une mise à jour aboutisse. Vous pouvez spécifier une valeur comprise entre 0 et 100. CloudFormationarrondit au dixième de pour cent le plus proche. Par exemple, si vous mettez à jour cinq instances avec un pourcentage de réussite minimum de 50, trois instances doivent envoyer un signal de réussite. Si une instance n'envoie pas de signal dans le délai spécifié dans la PauseTime propriété, cela CloudFormation suppose que l'instance n'a pas été mise à jour.

Il est également recommandé d’attribuer une valeur supérieure à 0 à la propriété MinSuccessfulInstancesPercent. Lorsque la MinSuccessfulInstancesPercent propriété est définie sur 0, CloudFormation attend que 0 % de la capacité des instances soient dans un InService état. MinSuccessfulInstancesPercentrevient immédiatement et avant de prendre en compte le statut du groupe Auto Scaling UPDATE_COMPLETE pour passer aux ressources suivantes définies dans le modèle de pile. Si d'autres groupes Auto Scaling sont définis dans votre CloudFormation modèle, ils seront mis à jour simultanément. Lorsque tous les groupes Auto Scaling sont déployés en même temps avec 0 % des instances de capacité dans un état InService, vous rencontrerez des problèmes de disponibilité, en raison de l'absence d'instances desservant le trafic client.

Par défaut : 100

Type : entier

Obligatoire : non

PauseTime

Durée de CloudFormation pause après avoir apporté une modification à un lot d'instances pour donner à ces instances le temps de démarrer des applications logicielles.

Spécifiez PauseTime au format de durée ISO8601 (dans le formatPT#H#M#S, où chacune # correspond au nombre d'heures, de minutes et de secondes, respectivement). La valeur PauseTime maximale est d'une heure (PT1H).

Avertissement

Lorsque WaitOnResourceSignals est défini sur true, PauseTime agit comme une valeur d’expiration. Il détermine le temps d' CloudFormation attente maximal pour recevoir le nombre requis de signaux valides provenant des instances remplacées lors d'une mise à jour continue et des nouvelles instances ajoutées en augmentant la DesiredCapacitypropriété de la AWS::AutoScaling::AutoScalingGroup ressource. Si le PauseTime est dépassé avant de CloudFormation recevoir les signaux attendus, la mise à jour échoue. Pour de meilleurs résultats, spécifiez une durée permettant à vos applications de démarrer correctement. Si la mise à jour doit être restaurée, une valeur PauseTime faible peut l'échec de la restauration.

Par défaut : PT5M (5 minutes) lorsque la propriété WaitOnResourceSignals est définie sur true. Sinon, aucune valeur par défaut n’est définie.

Type : chaîne

Obligatoire : non

SuspendProcesses

Spécifie les processus Auto Scaling à suspendre pendant une mise à jour de la pile. La suspension des procédures empêche Auto Scaling d’interférer avec une mise à jour de la pile. Par exemple, vous pouvez suspendre les alarmes afin qu'Amazon EC2 Auto Scaling ne lance pas les politiques de mise à l'échelle associées à une alarme. Pour les valeurs valides, consultez Types de processus dans le Guide de l’utilisateur Amazon EC2 Auto Scaling.

Valeur par défaut : non précisée

Type : liste de processus Auto Scaling

Obligatoire : non

WaitOnResourceSignals

Spécifie s'il CloudFormation attend les signaux de réussite des nouvelles instances avant de poursuivre la mise à jour. CloudFormation attend la PauseTime durée spécifiée pour les signaux de réussite.

Pour envoyer un signal au groupe Auto Scaling, utilisez le script d’assistance cfn-signal. Pour les groupes Auto Scaling associés à l’équilibrage de charge Elastic Load Balancing, envisagez d’ajouter une surveillance de l’état pour garantir que les instances fonctionnent correctement avant de signaler la réussite en utilisant le script d’assistance cfn-init. Par exemple, consultez la verify_instance_health commande figurant dans les exemples de modèles pour les mises à jour continues d'Amazon EC2 Auto Scaling dans GitHub notre référentiel.

Par défaut : false

Type : valeur booléenne

Obligatoire : selon les conditions. Si vous spécifiez la propriété MinSuccessfulInstancesPercent, la propriété WaitOnResourceSignals doit être définie sur true.

AutoScalingInstanceRefresh politique

Pour mettre à jour les instances d'un groupe Auto Scaling en actualisant une instance Auto Scaling, utilisez la AutoScalingInstanceRefresh politique. Pour obtenir la liste complète des fonctionnalités d'actualisation des instances, consultez Utiliser une actualisation d'instance pour mettre à jour les instances d'un groupe Auto Scaling dans le manuel Amazon EC2 Auto Scaling User Guide.

CloudFormation effectue une actualisation d'instance uniquement lorsque vous mettez à jour l'une des propriétés suivantes d'une AWS::AutoScaling::AutoScalingGroup ressource :

  • LaunchTemplate

  • MixedInstancesPolicy

  • VPCZoneIdentifier

  • AvailabilityZones

  • AvailabilityZoneIds

  • PlacementGroup

Lorsque vous utilisez cette AutoScalingInstanceRefresh politique, tenez compte des points suivants :

  • Vous ne pouvez pas spécifier à la fois les AutoScalingRollingUpdate politiques AutoScalingInstanceRefresh et les politiques dans le même groupe Auto Scaling. Si vous le faites, la mise à jour de la pile échoue.

  • CloudFormation stack rollback est le mécanisme de restauration pour. AutoScalingInstanceRefresh Si l'actualisation d'une instance échoue, CloudFormation annule la pile et lance une nouvelle actualisation d'instance pour rétablir la configuration précédente du groupe. Vous ne pouvez pas utiliser l'opération d'RollbackInstanceRefreshAPI Auto Scaling sur une actualisation d'instance qui CloudFormation a déjà commencé. Pour annuler une actualisation, utilisez l'CancelInstanceRefreshAPI ou annulez la mise à jour de la pile.

  • Un groupe Auto Scaling ne peut exécuter qu'une seule actualisation d'instance à la fois. Si une actualisation d'instance initiée par l'utilisateur est en cours lorsque vous lancez une mise à jour de pile avec la AutoScalingInstanceRefresh politique, la mise à jour de la pile peut échouer.

  • Lorsque vous définissez l'actualisation de l'instance Strategy surReplaceRootVolume, seules les modifications apportées ImageId au modèle de lancement ou à la politique des instances mixtes sont autorisées. D'autres modifications de propriétés peuvent entraîner l'échec de la mise à jour de la pile. Pour plus d'informations, consultez la section Remplacer les volumes racines lors de l'actualisation de l'instance dans le guide de l'utilisateur Amazon EC2 Auto Scaling.

  • Chaque sens de la mise à jour de la pile (avant et arrière) est limité par le délai d'expiration des CloudFormation ressources de 36 heures.

  • Long-running les actualisations d'instances peuvent dépasser la durée de vie des informations d'identification temporaires CloudFormation utilisées pour appeler Auto Scaling. Pour éviter cela, configurez un rôle de service sur la pile. Pour plus d’informations, consultez Rôle de service CloudFormation .

Note

L'actualisation de l'instance ne prend pas en charge le script cfn-signal d'assistance. Pour plus d'informations sur la façon de vérifier l'état de préparation d'une instance lors d'une actualisation de l'instance, consultezVérifier l'état de préparation de l'instance lors de l'actualisation d'une instance.

Syntaxe

JSON

"UpdatePolicy" : { "AutoScalingInstanceRefresh" : { "Strategy" : String, "Preferences" : { "AlarmSpecification" : { "Alarms" : [ List of alarm names ] }, "BakeTime" : Integer, "CheckpointDelay" : Integer, "CheckpointPercentages" : [ List of integers ], "InstanceWarmup" : Integer, "MaxHealthyPercentage" : Integer, "MinHealthyPercentage" : Integer, "ScaleInProtectedInstances" : String, "SkipMatching" : Boolean, "StandbyInstances" : String } } }

YAML

UpdatePolicy: AutoScalingInstanceRefresh: Strategy: String Preferences: AlarmSpecification: Alarms: - List of alarm names BakeTime: Integer CheckpointDelay: Integer CheckpointPercentages: - List of integers InstanceWarmup: Integer MaxHealthyPercentage: Integer MinHealthyPercentage: Integer ScaleInProtectedInstances: String SkipMatching: Boolean StandbyInstances: String

Propriétés

Strategy

Stratégie à utiliser pour l'actualisation de l'instance. Les valeurs valides sont Rolling et ReplaceRootVolume. Pour plus d'informations sur ReplaceRootVolume cette stratégie, consultez la section Remplacer les volumes racines lors de l'actualisation de l'instance dans le manuel Amazon EC2 Auto Scaling User Guide.

Type : chaîne

Obligatoire : oui

Preferences

Définit les préférences pour l'actualisation de l'instance. Inclut le temps de préchauffage de l'instance, les pourcentages de santé minimum et maximum, ainsi que les comportements utilisés par Amazon EC2 Auto Scaling si les instances sont en Standby état ou protégées contre le dimensionnement. Vous pouvez également activer des fonctionnalités supplémentaires :

  • Points de contrôle

  • CloudWatch alarmes

  • Ignorer la correspondance

  • Durée de l’intégration

Type : Préférences

Obligatoire : non

Préférences

AlarmSpecification

La spécification de l' CloudWatch alarme. Vous pouvez utiliser des CloudWatch alarmes pour identifier tout problème lors de l'actualisation de l'instance et annuler la pile si un seuil d'alarme est atteint. Pour plus d'informations, consultez Démarrer l'actualisation d'une instance avec restauration automatique dans le guide de l'utilisateur Amazon EC2 Auto Scaling.

Type : AlarmSpecification

Obligatoire : non

BakeTime

Durée, en secondes, à attendre à la fin de l'actualisation d'une instance avant que celle-ci ne soit considérée comme terminée.

Par défaut : 0

Minimum : 0

Maximum : 172800

Type : entier

Obligatoire : non

CheckpointDelay

Délai d'attente, en secondes, après avoir atteint un point de contrôle avant de poursuivre. Si vous spécifiez une valeur pour CheckpointPercentages mais pas pourCheckpointDelay, la valeur CheckpointDelay par défaut est 3600 (1 heure).

Minimum : 0

Maximum : 172800

Type : entier

Obligatoire : non

CheckpointPercentages

Valeurs de seuil pour chaque point de contrôle par ordre croissant. Chaque numéro doit être unique. Pour remplacer toutes les instances du groupe Auto Scaling, le dernier chiffre du tableau doit être100. Pour des exemples d'utilisation, consultez la section Ajouter des points de contrôle à l'actualisation d'une instance dans le manuel Amazon EC2 Auto Scaling User Guide.

Type : Liste de nombres entiers

Obligatoire : non

InstanceWarmup

Période, en secondes, pendant laquelle une actualisation d'instance attend avant de passer au remplacement de l'instance suivante une fois qu'une nouvelle instance atteint l'état InService.

Si vous ne le spécifiez pasInstanceWarmup, Auto Scaling utilise plutôt la valeur de la DefaultInstanceWarmup propriété. Nous vous recommandons de définir une valeur pour DefaultInstanceWarmup dans tous les cas d'utilisation.

Si vous ne spécifiez aucune valeur pour l'une ou l'autre des propriétés, Auto Scaling utilise la valeur de la HealthCheckGracePeriod propriété.

Type : entier

Obligatoire : non

MaxHealthyPercentage

Spécifie le pourcentage maximal du groupe qui peut être en service et sain, ou en attente, pour prendre en charge votre charge de travail lors du remplacement d'instances. La valeur est exprimée en pourcentage de la capacité souhaitée du groupe Auto Scaling. Si vous spécifiezMaxHealthyPercentage, vous devez également le spécifierMinHealthyPercentage, et la différence entre eux ne peut pas être supérieure à 100. Une plage étendue augmente le nombre d’instances qui peuvent être remplacées en même temps.

Par défaut : valeur définie dans la politique de maintenance des instances du groupe Auto Scaling, si elle est définie. Sinon, Strategy c'est 110 Rolling quand ou 100 quand c'Strategyest le casReplaceRootVolume.

Minimum : 100

Maximum : 200

Type : entier

Obligatoire : non

MinHealthyPercentage

Spécifie le pourcentage minimum du groupe qui doit rester en service, en bonne santé et prêt à être utilisé pour supporter votre charge de travail et permettre à l'opération de se poursuivre. La valeur est exprimée en pourcentage de la capacité souhaitée du groupe Auto Scaling.

Par défaut : valeur définie dans la politique de maintenance des instances du groupe Auto Scaling, si elle est définie. Sinon, Strategy c'est 100 Rolling quand ou 90 quand c'Strategyest le casReplaceRootVolume.

Minimum : 0

Maximum : 100

Type : entier

Obligatoire : non

ScaleInProtectedInstances

Choisissez le comportement que vous souhaitez voir Amazon EC2 Auto Scaling utiliser si des instances protégées contre la réduction horizontale sont détectées. Les valeurs valides sont les suivantes :

  • Actualisation : Amazon EC2 Auto Scaling remplace les instances protégées contre le scalage.

  • Ignorer : Amazon EC2 Auto Scaling ignore les instances protégées contre le scalage et continue de remplacer les instances qui ne le sont pas.

  • Patientez : Amazon EC2 Auto Scaling attend une heure que vous supprimiez la protection scale-in. Dans le cas contraire, l'actualisation de l'instance échoue.

Par défaut : Wait

Type : chaîne

Obligatoire : non

SkipMatching

Indique si la correspondance ignorée est activée. Si cette option est activée (true), Auto Scaling ignore le remplacement des instances qui correspondent déjà à la configuration spécifiée dans votre modèle de stack. Pour plus d'informations, consultez Utiliser une actualisation d'instance avec saut matching dans le guide de l'utilisateur Amazon EC2 Auto Scaling.

Par défaut : true

Type : valeur booléenne

Obligatoire : non

StandbyInstances

Choisissez le comportement que vous souhaitez voir Amazon EC2 Auto Scaling utiliser si des instances avec l’état Standby sont détectées. Les valeurs valides sont les suivantes :

  • Mettre fin : Amazon EC2 Auto Scaling met fin à des instances présentes dans. Standby

  • Ignorer : Amazon EC2 Auto Scaling ignore les instances Standby présentes dans cet état et continue de les remplacer. InService

  • Patience : Amazon EC2 Auto Scaling attend une heure que vous remettiez les instances en service. Dans le cas contraire, l'actualisation de l'instance échoue.

Par défaut : Wait

Type : chaîne

Obligatoire : non

AlarmSpecification

Alarms

Les noms d'une ou de plusieurs CloudWatch alarmes à surveiller pour l'actualisation de l'instance. Vous pouvez définir jusqu'à 10 alarmes.

Type : liste de chaînes

Obligatoire : non

Vérifier l'état de préparation de l'instance lors de l'actualisation d'une instance

Par défaut, l'actualisation des instances passe automatiquement à l'ensemble d'instances suivant lorsque les instances nouvellement lancées passent avec succès les tests de santé configurés sur votre groupe Auto Scaling. Il s'agit notamment des bilans de santé d'Amazon EC2 et, s'ils sont configurés, des bilans de santé d'Elastic Load Balancing. Pour plus d’informations, consultez Surveillance de l’état pour les instances dans le groupe Auto Scaling dans le Guide de l’utilisateur Amazon EC2 Auto Scaling.

Si vos instances nécessitent le démarrage de l'application avant de passer àInService, ajoutez un hook de autoscaling:EC2_INSTANCE_LAUNCHING cycle de vie au groupe Auto Scaling. L'actualisation de l'instance attend que le hook du cycle de vie soit terminé avant de passer à l'ensemble d'instances suivant. Complétez le hook en appelant l'CompleteLifecycleActionAPI. Vous pouvez effectuer cet appel depuis l'instance elle-même à l'aide d'un modèle de script de données utilisateur de lancement ou depuis un service externe. Pour plus d'informations, consultez Amazon EC2 Auto Scaling Lifecycle hooks et Complete a Lifecycle action in an Auto Scaling group dans le manuel Amazon EC2 Auto Scaling User Guide.

AutoScalingScheduledAction politique

Pour spécifier le mode CloudFormation de gestion des mises à jour DesiredCapacity des propriétés MinSizeMaxSize, et lorsque la AWS::AutoScaling::AutoScalingGroup ressource est associée à une action planifiée, utilisez la AutoScalingScheduledAction politique.

Avec des actions planifiées, les propriétés de taille d'un groupe Auto Scaling peuvent changer à tout moment. Lorsque vous mettez à jour une pile avec un groupe Auto Scaling et une action planifiée, définissez CloudFormation toujours les valeurs des propriétés de taille de groupe de votre groupe Auto Scaling sur les valeurs définies dans la AWS::AutoScaling::AutoScalingGroup ressource de votre modèle, même si une action planifiée est en cours d'exécution.

Si vous ne CloudFormation souhaitez modifier aucune des valeurs des propriétés de taille de groupe lorsqu'une action planifiée est en vigueur, utilisez la politique de AutoScalingScheduledAction mise à jour et IgnoreUnmodifiedGroupSizeProperties configurez-la true pour CloudFormation empêcher de modifier les DesiredCapacity propriétés MinSizeMaxSize, ou à moins que vous n'ayez modifié ces valeurs dans votre modèle.

Syntaxe

JSON

"UpdatePolicy" : { "AutoScalingScheduledAction" : { "IgnoreUnmodifiedGroupSizeProperties" : Boolean } }

Propriétés

IgnoreUnmodifiedGroupSizeProperties

Sitrue, CloudFormation ignore les différences de propriétés de taille de groupe entre votre groupe Auto Scaling actuel et le groupe Auto Scaling décrit dans la AWS::AutoScaling::AutoScalingGroup ressource de votre modèle lors d'une mise à jour de la pile. Si vous modifiez l'une des valeurs de propriété de taille de groupe dans votre modèle, CloudFormation utilise les valeurs modifiées et met à jour votre groupe Auto Scaling.

Note

Cette propriété est ignorée lors d’une restauration de pile.

Par défaut : false

Type : valeur booléenne

Obligatoire : non

UseOnlineResharding politique

Pour modifier les partitions d'un groupe de réplication en ajoutant ou en supprimant des partitions, plutôt que de remplacer la totalité de la ReplicationGroup ressource AWS::ElastiCache: :, utilisez la politique de UseOnlineResharding mise à jour.

Si UseOnlineResharding ce paramètre est défini surtrue, vous pouvez mettre à jour les NodeGroupConfiguration propriétés NumNodeGroups et de la AWS::ElastiCache::ReplicationGroup ressource, et vous CloudFormation mettrez à jour ces propriétés sans interruption. Lorsqu'elle UseOnlineResharding est définie sur ou non spécifiéefalse, la mise à jour des NodeGroupConfiguration propriétés NumNodeGroups et entraîne le CloudFormation remplacement de la AWS::ElastiCache::ReplicationGroup ressource dans son intégralité.

La politique de mise à jour UseOnlineResharding n'a pas de propriétés.

Éléments à prendre en compte lors de la définition de la politique de mise à jour UseOnlineResharding sur true :

  • Nous recommandons vivement que les mises à jour des propriétés NumNodeGroups et NodeGroupConfiguration soient les seules mises à jour effectuées dans une opération de mise à jour de pile donnée.

    La mise à jour de la configuration de groupe de nœuds d'un groupe de réplication est une opération gourmande en ressources. Si une mise à jour de la pile échoue, CloudFormation cela n'annule pas les modifications apportées à la configuration du groupe de nœuds d'un groupe de réplication. Cependant, toutes les autres propriétés modifiées à la suite de l'échec de l'opération de mise à jour CloudFormation seront annulées.

  • Toutes les mises à jour de groupe de nœuds exigent d'identifier tous les groupes de nœuds.

    Si vous spécifiez la NodeGroupConfiguration propriété, vous devez également spécifier la configuration NodeGroupId pour chaque groupe de nœuds afin de mettre CloudFormation à jour le nombre de nœuds sans interruption.

    Lorsque vous créez un groupe de réplication, si vous ne spécifiez pas d'ID pour chaque groupe de nœuds, ElastiCache génère automatiquement un ID pour chaque groupe de nœuds. Pour mettre à jour le groupe de réplication sans interruption, utilisez la ElastiCache console (https://console.aws.amazon.com/elasticache/) ou DescribeReplicationGroupspour récupérer les identifiants de tous les groupes de nœuds du groupe de réplication. Spécifiez ensuite l’ID de chaque groupe de nœuds dans votre modèle de pile avant d’essayer d’ajouter ou de supprimer des partitions.

    Note

    Lorsque vous créez un groupe de réplication dans un modèle de pile, la bonne pratique consiste à inclure un ID pour chaque groupe de nœuds que vous spécifiez.

    En outre, la mise à jour du nombre de nœuds sans interruption exige d'avoir spécifié avec précision les propriétés PrimaryAvailabilityZone, ReplicaAvailabilityZones et ReplicaCount pour chaque NodeGroupConfiguration. Encore une fois, vous pouvez utiliser la ElastiCache console (https://console.aws.amazon.com/elasticache/) ou DescribeReplicationGroupspour récupérer les valeurs réelles de chaque groupe de nœuds et les comparer aux valeurs de votre modèle de pile. Vous pouvez mettre à jour les valeurs de propriété des groupes de nœuds dans le cadre d’une mise à jour de pile distincte, ou dans le cadre de la même mise à jour de pile qui modifie le nombre de groupes de nœuds.

    Lorsque vous utilisez une politique de UseOnlineResharding mise à jour pour mettre à jour le nombre de groupes de nœuds sans interruption, ElastiCache répartissez uniformément les espaces clés entre le nombre d'emplacements spécifié. Cet élément ne peut pas être mis à jour ultérieurement. Par conséquent, après avoir mis à jour le nombre de groupes de nœuds de cette façon, vous devez supprimer la valeur spécifiée pour la propriété Slots de chaque NodeGroupConfiguration à partir du modèle de pile, car elle ne reflète plus les valeurs réelles dans chaque groupe de nœuds.

  • Les résultats de la suppression réelle d'un groupe de nœuds peuvent varier.

    Lorsque vous spécifiez une NumNodeGroups valeur inférieure au nombre actuel de groupes de nœuds, des CloudFormation instructions vous demandent de ElastiCache supprimer autant de groupes de nœuds que nécessaire pour atteindre le nombre de nœuds spécifié. Cependant, il ElastiCache se peut que vous ne puissiez pas toujours supprimer le nombre souhaité de groupes de nœuds. Si ElastiCache vous ne parvenez pas à supprimer le nombre souhaité de groupes de nœuds CloudFormation , un événement de pile vous en avertit. Dans les cas où aucun groupe de nœuds ne ElastiCache peut être supprimé, la mise à jour CloudFormation des ressources échoue.

Pour plus d'informations sur la modification des groupes de réplication, consultez ModifyReplicationGroupShardConfigurationle Amazon ElastiCache API Reference.

Syntaxe

JSON

"UpdatePolicy" : { "UseOnlineResharding" : Boolean }

YAML

UpdatePolicy: UseOnlineResharding: Boolean

EnableVersionUpgrade politique

Pour mettre à niveau un domaine de OpenSearch service vers une nouvelle version d' OpenSearch Elasticsearch plutôt que de remplacer l'intégralité de la ressource ::Domain ou AWS::OpenSearchService AWS::Elasticsearch ::Domain, utilisez la politique de mise à jour. EnableVersionUpgrade

Si EnableVersionUpgrade ce paramètre est défini surtrue, vous pouvez mettre à jour la EngineVersion propriété de la AWS::OpenSearchService::Domain ressource (ou la ElasticsearchVersion propriété de l'ancienne AWS::Elasticsearch::Domain ressource), et CloudFormation vous mettrez à jour cette propriété sans interruption. Lorsqu'elle EnableVersionUpgrade est définie sur ou non spécifiéefalse, la mise à jour de la ElasticsearchVersion propriété EngineVersion or entraîne le CloudFormation remplacement de l'intégralité de la AWS::Elasticsearch::Domain ressourceAWS::OpenSearchService::Domain/.

La politique de mise à jour EnableVersionUpgrade n'a pas de propriétés.

Pour plus d'informations, consultez la section Mise à niveau des domaines de OpenSearch service dans le manuel Amazon OpenSearch Service Developer Guide.

Syntaxe

JSON

"UpdatePolicy" : { "EnableVersionUpgrade" : Boolean }

YAML

UpdatePolicy: EnableVersionUpgrade: Boolean

CodeDeployLambdaAliasUpdate politique

Pour effectuer un CodeDeploy déploiement lorsque la version d'une AWS::Lambda::Alias ressource change, utilisez la politique de CodeDeployLambdaAliasUpdate mise à jour.

Syntaxe

JSON

"UpdatePolicy" : { "CodeDeployLambdaAliasUpdate" : { "AfterAllowTrafficHook" : String, "ApplicationName" : String, "BeforeAllowTrafficHook" : String, "DeploymentGroupName" : String } }

Propriétés

AfterAllowTrafficHook

Le nom de la fonction Lambda à exécuter une fois l'acheminement du trafic terminé.

Obligatoire : non

Type : chaîne

ApplicationName

Le nom de l' CodeDeploy application.

Obligatoire : oui

Type : chaîne

BeforeAllowTrafficHook

Le nom de la fonction Lambda à exécuter avant le lancement du routage du trafic.

Obligatoire : non

Type : chaîne

DeploymentGroupName

Nom du groupe de CodeDeploy déploiement. C'est là que la politique d'acheminement du trafic est définie.

Obligatoire : oui

Type : chaîne

Pour obtenir un exemple de spécification de l'attribut UpdatePolicy pour une ressource AWS::Lambda::Alias, consultez Politique de mise à jour d'alias lambda.

Exemples

Les exemples suivants montrent comment ajouter une politique de mise à jour à un groupe Auto Scaling et comment assurer la disponibilité lors de la mise à jour des métadonnées.

Ajout d'une UpdatePolicy à un groupe Auto Scaling

L'exemple suivant montre comment ajouter une politique de mise à jour. Pendant une mise à jour, le groupe Auto Scaling met à jour les instances par lots de deux et maintient au moins une instance en service. Étant donné que l'indicateur WaitOnResourceSignals est défini, le groupe Auto Scaling attend les nouvelles instances qui sont ajoutées au groupe. Les nouvelles instances doivent envoyer un signal au groupe Auto Scaling, avant qu'il ne mette à jour le lot d'instances suivant.

JSON

"ASG" : { "Type":"AWS::AutoScaling::AutoScalingGroup", "Properties":{ "VPCZoneIdentifier":[ "subnetIdAz1", "subnetIdAz2", "subnetIdAz3" ], "LaunchTemplate":{ "LaunchTemplateId":{ "Ref":"logicalName" }, "Version":{ "Fn::GetAtt":[ "logicalName", "LatestVersionNumber" ] } }, "MaxSize":"4", "MinSize":"1" }, "UpdatePolicy":{ "AutoScalingScheduledAction":{ "IgnoreUnmodifiedGroupSizeProperties":"true" }, "AutoScalingRollingUpdate":{ "MinInstancesInService":"1", "MaxBatchSize":"2", "WaitOnResourceSignals":"true", "PauseTime":"PT10M", "SuspendProcesses":[ "HealthCheck", "ReplaceUnhealthy", "AZRebalance", "AlarmNotification", "ScheduledActions", "InstanceRefresh" ] } } }

YAML

ASG: Type: AWS::AutoScaling::AutoScalingGroup Properties: VPCZoneIdentifier: - subnetIdAz1 - subnetIdAz2 - subnetIdAz3 LaunchTemplate: LaunchTemplateId: !Ref logicalName Version: !GetAtt logicalName.LatestVersionNumber MaxSize: '4' MinSize: '1' UpdatePolicy: AutoScalingScheduledAction: IgnoreUnmodifiedGroupSizeProperties: 'true' AutoScalingRollingUpdate: MinInstancesInService: '1' MaxBatchSize: '2' WaitOnResourceSignals: 'true' PauseTime: PT10M SuspendProcesses: - HealthCheck - ReplaceUnhealthy - AZRebalance - AlarmNotification - ScheduledActions - InstanceRefresh

AutoScalingReplacingUpdate politique

L'exemple suivant déclare une politique qui force le remplacement d'un groupe Auto Scaling associé au cours d'une mise à jour. Pour que la mise à jour réussisse, un pourcentage d'instances (spécifié par le paramètre MinSuccessfulPercentParameter) doit indiquer la réussite avant l'expiration du délai (Timeout).

JSON

"UpdatePolicy" : { "AutoScalingReplacingUpdate" : { "WillReplace" : true } }, "CreationPolicy" : { "ResourceSignal" : { "Count" : { "Ref" : "ResourceSignalsOnCreate"}, "Timeout" : "PT10M" }, "AutoScalingCreationPolicy" : { "MinSuccessfulInstancesPercent" : { "Ref" : "MinSuccessfulPercentParameter" } } }

YAML

UpdatePolicy: AutoScalingReplacingUpdate: WillReplace: true CreationPolicy: ResourceSignal: Count: !Ref 'ResourceSignalsOnCreate' Timeout: PT10M AutoScalingCreationPolicy: MinSuccessfulInstancesPercent: !Ref 'MinSuccessfulPercentParameter'

AutoScalingInstanceRefresh politique

Les exemples suivants montrent deux configurations courantes de la AutoScalingInstanceRefresh politique. Le premier exemple utilise launch-before-terminate pour maintenir la capacité pendant l'actualisation. Le deuxième exemple utilise une CloudWatch alarme pour annuler la pile si le déploiement pose des problèmes.

Launch-before-terminate rafraîchir

L'exemple suivant déclare une AutoScalingInstanceRefresh politique qui utilise launch-before-terminate. Le réglage MinHealthyPercentage permet de 100 garantir le lancement de nouvelles instances avant que les instances existantes ne s'MaxHealthyPercentagearrêtent, et 200 permet au groupe de doubler temporairement de taille. La politique ignore également les instances qui correspondent déjà à la configuration.

JSON
"ASG" : { "Type" : "AWS::AutoScaling::AutoScalingGroup", "Properties" : { "VPCZoneIdentifier" : [ "subnetIdAz1", "subnetIdAz2", "subnetIdAz3" ], "LaunchTemplate" : { "LaunchTemplateId" : { "Ref" : "logicalName" }, "Version" : { "Fn::GetAtt" : [ "logicalName", "LatestVersionNumber" ] } }, "MaxSize" : "4", "MinSize" : "1" }, "UpdatePolicy" : { "AutoScalingInstanceRefresh" : { "Strategy" : "Rolling", "Preferences" : { "MinHealthyPercentage" : 100, "MaxHealthyPercentage" : 200, "SkipMatching" : true } } } }
YAML
ASG: Type: AWS::AutoScaling::AutoScalingGroup Properties: VPCZoneIdentifier: - subnetIdAz1 - subnetIdAz2 - subnetIdAz3 LaunchTemplate: LaunchTemplateId: !Ref logicalName Version: !GetAtt logicalName.LatestVersionNumber MaxSize: '4' MinSize: '1' UpdatePolicy: AutoScalingInstanceRefresh: Strategy: Rolling Preferences: MinHealthyPercentage: 100 MaxHealthyPercentage: 200 SkipMatching: true

Rafraîchissez avec une annulation basée sur une alarme

L'exemple suivant déclare une AutoScalingInstanceRefresh politique comportant des points de contrôle, une annulation basée sur des alarmes et un temps de cuisson. Auto Scaling fait une pause de 5 minutes à chaque point de contrôle et attend 10 minutes après avoir terminé avant de déclarer qu'il a réussi.

JSON
"ASG" : { "Type" : "AWS::AutoScaling::AutoScalingGroup", "Properties" : { "VPCZoneIdentifier" : [ "subnetIdAz1", "subnetIdAz2", "subnetIdAz3" ], "LaunchTemplate" : { "LaunchTemplateId" : { "Ref" : "logicalName" }, "Version" : { "Fn::GetAtt" : [ "logicalName", "LatestVersionNumber" ] } }, "MaxSize" : "4", "MinSize" : "1" }, "UpdatePolicy" : { "AutoScalingInstanceRefresh" : { "Strategy" : "Rolling", "Preferences" : { "CheckpointPercentages" : [ 33, 66, 100 ], "CheckpointDelay" : 300, "BakeTime" : 600, "AlarmSpecification" : { "Alarms" : [ "my-cloud-watch-alarm" ] } } } } }
YAML
ASG: Type: AWS::AutoScaling::AutoScalingGroup Properties: VPCZoneIdentifier: - subnetIdAz1 - subnetIdAz2 - subnetIdAz3 LaunchTemplate: LaunchTemplateId: !Ref logicalName Version: !GetAtt logicalName.LatestVersionNumber MaxSize: '4' MinSize: '1' UpdatePolicy: AutoScalingInstanceRefresh: Strategy: Rolling Preferences: CheckpointPercentages: - 33 - 66 - 100 CheckpointDelay: 300 BakeTime: 600 AlarmSpecification: Alarms: - my-cloud-watch-alarm

Disponibilité lors de la mise à jour des métadonnées pour le script d'assistant cfn-init

Lorsque vous installez des applications logicielles sur vos instances, vous pouvez utiliser la clé de AWS::CloudFormation::Init métadonnées et le script d'cfn-initassistance pour démarrer les instances de votre groupe Auto Scaling. CloudFormation installe les packages, exécute les commandes et exécute les autres actions d'amorçage décrites dans les métadonnées.

Lorsque vous mettez à jour uniquement les métadonnées (par exemple, lors du passage d'un package à une autre version), vous pouvez utiliser le programme démon cfn-hup pour détecter et appliquer les mises à jour. Toutefois, le programme démon cfn-hup est exécuté indépendamment dans chaque instance. S'il est exécuté en même temps dans toutes les instances, votre service ou votre application peut être indisponible pendant la mise à jour. Pour garantir la disponibilité, vous pouvez forcer une mise à jour continue afin de mettre CloudFormation à jour vos instances un lot à la fois.

Important

CloudFormation Pour forcer une mise à jour continue, il faut créer une nouvelle instance, puis supprimer l'ancienne. Les informations stockées dans l'ancienne instance seront perdues.

Pour forcer une mise à jour continue, modifiez l'ID logique de la ressource de configuration de lancement, puis mettez à jour la pile et toutes les références pointant vers l'ID logique d'origine (tel que le groupe Auto Scaling associé). CloudFormation déclenche une mise à jour continue sur le groupe Auto Scaling, en remplaçant toutes les instances.

Modèle d'origine

"LaunchConfig": { "Type" : "AWS::AutoScaling::LaunchConfiguration", "Metadata" : { "Comment" : "Install a simple PHP application", "AWS::CloudFormation::Init" : { ... } } }

Mise à jour de l'ID logique

"LaunchConfigUpdateRubygemsPkg": { "Type" : "AWS::AutoScaling::LaunchConfiguration", "Metadata" : { "Comment" : "Install a simple PHP application", "AWS::CloudFormation::Init" : { ... } } }

Politique de mise à jour d'alias lambda

L'exemple suivant précise l'attribut UpdatePolicy pour une ressource AWS::Lambda::Alias. Tous les détails du déploiement sont définis par l'application et le groupe de déploiement qui sont transmis dans la politique.

JSON

"Alias": { "Type": "AWS::Lambda::Alias", "Properties": { "FunctionName": { "Ref": "LambdaFunction" }, "FunctionVersion": { "Fn::GetAtt": [ "FunctionVersionTwo", "Version" ] }, "Name": "MyAlias" }, "UpdatePolicy": { "CodeDeployLambdaAliasUpdate": { "ApplicationName": { "Ref": "CodeDeployApplication" }, "DeploymentGroupName": { "Ref": "CodeDeployDeploymentGroup" }, "BeforeAllowTrafficHook": { "Ref": "PreHookLambdaFunction" }, "AfterAllowTrafficHook": { "Ref": "PreHookLambdaFunction" } } } }

YAML

Alias: Type: AWS::Lambda::Alias Properties: FunctionName: !Ref LambdaFunction FunctionVersion: !GetAtt FunctionVersionTwo.Version Name: MyAlias UpdatePolicy: CodeDeployLambdaAliasUpdate: ApplicationName: !Ref CodeDeployApplication DeploymentGroupName: !Ref CodeDeployDeploymentGroup BeforeAllowTrafficHook: !Ref PreHookLambdaFunction AfterAllowTrafficHook: !Ref PreHookLambdaFunction