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 avec CloudFormation, consultez le Guide de l’utilisateur AWS CloudFormation.
Attribut UpdatePolicy
Utilisez l’attribut UpdatePolicy pour spécifier la manière dont CloudFormation gère les mises à jour de certaines ressources lors d’opérations de mise à jour de pile.
Rubriques
Présentation
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 redémarrer une flotte, ce qui provoque 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 stratégies de mise à jour pour contrôler la manière dont CloudFormation gère certaines mises à jour. Ces stratégies comprennent :
-
Stratégies
AutoScalingReplacingUpdateetAutoScalingRollingUpdate: CloudFormation peut remplacer à la fois le groupe Auto Scaling et ses instances à l’aide de la stratégieAutoScalingReplacingUpdate, ou remplacer uniquement les instances à l’aide de la stratégieAutoScalingRollingUpdate. 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é
VPCZoneIdentifierdu groupe Auto Scaling. -
Modification de la propriété
LaunchTemplatedu groupe Auto Scaling. -
Modification de la propriété
PlacementGroupdu groupe Auto Scaling. -
Mise à jour d'un groupe Auto Scaling qui contient des instances ne correspondant pas à la ressource actuelle
LaunchConfiguration.
Si les politiques
AutoScalingReplacingUpdateetAutoScalingRollingUpdatesont toutes les deux spécifiées, la définition de la propriétéWillReplacesurtruedonne la priorité àAutoScalingReplacingUpdate. -
-
Stratégie
AutoScalingScheduledAction: cette stratégie s’applique lorsque vous mettez à jour une pile contenant un groupe Auto Scaling qui utilise des actions planifiées pour mettre à l’échelle sa capacité à des moments précis. CloudFormation ne peut pas modifier la capacité minimale, la capacité maximale ou la capacité souhaitée, sauf si elles sont explicitement modifiées dans le modèle. 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, au lieu de remplacer la ressource entière.
-
AWS::OpenSearchService::Domain et AWS::Elasticsearch::Domain (stratégies héritées) : CloudFormation peut mettre à niveau un domaine OpenSearch Service vers une nouvelle version d’OpenSearch ou d’Elasticsearch sans remplacer la ressource entière.
-
AWS::Lambda::Alias : CloudFormation peut effectuer un déploiement CodeDeploy lorsqu’un changement de version intervient sur l’alias concerné.
Les sections suivantes décrivent la syntaxe et les propriétés de l’attribut UpdatePolicy pris en charge pour chaque type de ressource.
Politique de mise à jour AppStream 2.0
Pour arrêter une flotte AppStream 2.0 avant une mise à jour puis la redémarrer après, utilisez la stratégie de mise à jour AppStream 2.0.
Syntaxe
JSON
{ "UpdatePolicy": { "StopBeforeUpdate": { "Type": "Boolean" }, "StartAfterUpdate": { "Type": "Boolean" } } }
YAML
UpdatePolicy: StopBeforeUpdate: Type:BooleanStartAfterUpdate: 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
Politique AutoScalingReplacingUpdate
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. Au cours d'un remplacement, CloudFormation conserve l'ancien groupe tant que le nouveau groupe n'est pas créé. En cas d'échec de la mise à jour, CloudFormation peut restaurer l'ancien groupe Auto Scaling et supprimer le nouveau groupe Auto Scaling.
Lorsque CloudFormation crée le nouveau groupe, il ne détache ou n'attache pas d'instances. Une fois le nouveau groupe Auto Scaling créé, CloudFormation supprime l'ancien groupe Auto Scaling 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 minimal d’instances (spécifié par la propriétéMinSuccessfulInstancesPercent) ne signale pas la réussite dans la périodeTimeout(spécifié dans l’attributCreationPolicy), la mise à jour de remplacement échoue et CloudFormation rétablit l’ancien groupe Auto Scaling.Type : valeur booléenne
Obligatoire : non
Politique AutoScalingRollingUpdate
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 stratégie vous permet de spécifier si CloudFormation remplace les instances du groupe Auto Scaling par lots ou en une seule fois, sans remplacer la ressource entière.
Éléments à prendre en compte lors de l’utilisation d’une stratégie AutoScalingRollingUpdate :
-
Lorsque CloudFormation effectue une restauration après une mise à jour, il utilise la configuration
UpdatePolicydéfinie dans le modèle avant la mise à jour actuelle de la pile. Par exemple, vous modifiez la valeurMaxBatchSizede 1 à 10 dansUpdatePolicyet lancez une mise à jour de pile qui échoue. CloudFormation utilisera 1 comme taille maximale de lot lors de la restauration, et non 10. Pour éviter ce scénario, apportez les modifications àUpdatePolicydans 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 propriété
SuspendProcessespour suspendre temporairement les processus Amazon EC2 Auto Scaling susceptibles d’interférer avec la mise à jour progressive et d’entraîner son échec. Pour plus d’informations, consultez Comment puis-je mettre à jour mon groupe Auto Scaling lorsque je mets à jour ma pile CloudFormation ? -
CloudFormation prend en charge les 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ésultatCONTINUElorsque 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’étatInService, la mise à jour progressive finit par échouer. -
Les fonctionnalités Amazon EC2 Auto Scaling telles que les stratégies d’entretien des instances, les stratégies de résiliation et la protection contre la réduction de capacité ne sont pas disponibles avec les mises à jour progressives CloudFormation. Planifiez vos mises à jour progressives en conséquence.
-
Si vous utilisez une stratégie
AutoScalingRollingUpdateet que vous supprimez le paramètre de groupe de placement, le groupe de placement sera supprimé du groupe Auto Scaling et du modèle CloudFormation. 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} }
YAML
UpdatePolicy: AutoScalingRollingUpdate: MaxBatchSize:IntegerMinActiveInstancesPercent:IntegerMinInstancesInService:IntegerMinSuccessfulInstancesPercent:IntegerPauseTime:StringSuspendProcesses: -List of processesWaitOnResourceSignals:Boolean
Propriétés
MaxBatchSize-
Spécifie le nombre maximal d’instances qui peuvent être remplacées simultanément.
Par défaut:
1Maximum:
100Type : entier
Obligatoire : non
MinActiveInstancesPercent-
Spécifie le pourcentage d’instances dans un groupe Auto Scaling qui doivent être dans l’état
InServicepar 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 de 0 à 100. CloudFormation arrondit au dixième de pour cent le plus proche. Par exemple, si vous mettez à jour cinq instances avec un pourcentageInServicede minimum 50 %, au moins trois instances doivent être dans l’étatInService. Si une instance ne passe pas à l’étatInServicedans un délai fixe d’une heure, CloudFormation suppose que l’instance n’a pas été mise à jour.La définition de
MinActiveInstancesPercentdans votreUpdatePolicyaffecte également les instances lancées lorsque la propriétéDesiredCapacityde la ressourceAWS::AutoScaling::AutoScalingGroupest définie à une valeur supérieure à la capacité souhaitée actuelle du groupe Auto Scaling.Par défaut:
100Type : entier
Obligatoire : non
MinInstancesInService-
Spécifie le nombre minimum d'instances qui doivent être en service au sein du groupe Auto Scaling, pendant que CloudFormation met à jour les 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é
MinInstancesInServiceau 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:
0Type : 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 de 0 à 100. CloudFormation arrondit 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 aucun signal dans le délai spécifié dans la propriétéPauseTime, CloudFormation présume 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 propriétéMinSuccessfulInstancesPercentest définie à 0, CloudFormation attend que 0 % des instances soient en étatInService.MinSuccessfulInstancesPercentretourne immédiatement avant même de prendre en compte que l’état du groupe Auto Scaling estUPDATE_COMPLETE, ce qui permet de passer aux ressources suivantes définies dans le modèle de la pile. Si d'autres groupes Auto Scaling sont définis dans votre modèle CloudFormation, 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 étatInService, vous rencontrerez des problèmes de disponibilité, en raison de l'absence d'instances desservant le trafic client.Par défaut:
100Type : entier
Obligatoire : non
PauseTime-
Durée pendant laquelle CloudFormation s'interrompt après avoir modifié un lot d'instances afin de laisser à ces dernières le temps de démarrer les applications logicielles.
Spécifiez
PauseTimedans le format de durée ISO8601(au format PT, où chaque#H#M#S#correspond au nombre d'heures, de minutes et de secondes, respectivement). La valeurPauseTimemaximale est d'une heure (PT1H).Avertissement
Lorsque
WaitOnResourceSignalsest défini surtrue,PauseTimeagit comme une valeur d’expiration. Elle détermine la durée maximale pendant laquelle CloudFormation attend de recevoir le nombre requis de signaux valides provenant des instances remplacées lors d’une mise à jour progressive et des nouvelles instances ajoutées en augmentant la propriété DesiredCapacity de la ressourceAWS::AutoScaling::AutoScalingGroup. Si la valeur dePauseTimeest dépassée avant que CloudFormation ait reçu 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 valeurPauseTimefaible peut l'échec de la restauration.Par défaut :
PT5M(5 minutes) lorsque la propriétéWaitOnResourceSignalsest définie surtrue. 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 si CloudFormation attend les signaux de réussite provenant des nouvelles instances avant de poursuivre la mise à jour. CloudFormation attend pendant la durée
PauseTimepour recevoir 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. Pour un exemple, consultez la commande
verify_instance_healthdans les exemples de modèles de mises à jour progressives d’Amazon EC2 Auto Scaling, disponibles dans notre référentiel GitHub. Par défaut:
falseType : valeur booléenne
Obligatoire : selon les conditions. Si vous spécifiez la propriété
MinSuccessfulInstancesPercent, la propriétéWaitOnResourceSignalsdoit être définie surtrue.
Politique AutoScalingScheduledAction
Pour spécifier comment CloudFormation gère les mises à jour des propriétés MinSize, MaxSize et DesiredCapacity lorsque la ressource AWS::AutoScaling::AutoScalingGroup possède une action planifiée, utilisez la stratégie AutoScalingScheduledAction.
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, CloudFormation spécifie toujours les valeurs qui sont définies dans la ressource Auto Scaling de votre modèle pour les valeurs des propriétés de taille de votre groupe AWS::AutoScaling::AutoScalingGroup, même si une action planifiée est en vigueur.
Si vous ne voulez pas que CloudFormation modifie les valeurs des propriétés de taille du groupe lorsqu'une action est planifiée, utilisez la politique de mise à jour AutoScalingScheduledAction et affectez à IgnoreUnmodifiedGroupSizeProperties la valeur true pour empêcher CloudFormation de modifier les propriétés MinSize, MaxSize ou DesiredCapacity, sauf si vous avez modifié ces valeurs dans votre modèle.
Syntaxe
JSON
"UpdatePolicy" : { "AutoScalingScheduledAction" : { "IgnoreUnmodifiedGroupSizeProperties" :Boolean} }
YAML
UpdatePolicy: AutoScalingScheduledAction: IgnoreUnmodifiedGroupSizeProperties:Boolean
Propriétés
IgnoreUnmodifiedGroupSizeProperties-
Si
true, CloudFormation ignore les différences dans les propriétés de taille du groupe entre votre groupe Auto Scaling actuel et celui décrit dans la ressourceAWS::AutoScaling::AutoScalingGroupdu modèle lors d’une mise à jour de pile. Si vous modifiez l’une des propriétés liées à la taille du 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:
falseType : valeur booléenne
Obligatoire : non
Politique UseOnlineResharding
Tour modifier les partitions d'un groupe de réplication en ajoutant ou en supprimant des partitions plutôt qu'en remplaçant la ressource AWS::ElastiCache::ReplicationGroup dans son intégralité, utilisez la politique de mise à jour UseOnlineResharding.
Si UseOnlineResharding est défini sur true, vous pouvez mettre à jour les propriétés NumNodeGroups et NodeGroupConfiguration de la ressource AWS::ElastiCache::ReplicationGroup pour que CloudFormation mette à jour ces propriétés sans interruption. Lorsque UseOnlineResharding est défini sur false, ou n'est pas spécifié, la mise à jour des propriétés NumNodeGroups et NodeGroupConfiguration conduit CloudFormation à remplacer l'ensemble de la ressource AWS::ElastiCache::ReplicationGroup.
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
NumNodeGroupsetNodeGroupConfigurationsoient 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 la mise à jour de la pile échoue, CloudFormation n'annule pas les modifications apportées à la configuration de groupe de nœuds d'un groupe de réplication. Toutefois, CloudFormation restaure toutes les autres propriétés qui ont été modifiées dans le cadre de l'opération de mise à jour ayant échoué.
-
Toutes les mises à jour de groupe de nœuds exigent d'identifier tous les groupes de nœuds.
Si vous spécifiez la propriété
NodeGroupConfiguration, vous devez également spécifier NodeGroupId pour chaque configuration de groupe de nœuds, pour que CloudFormation puisse mettre à 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 console ElastiCache (https://console.aws.amazon.com/elasticache/
) ou DescribeReplicationGroups pour récupérer les ID de tous les groupes de nœuds dans le 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,ReplicaAvailabilityZonesetReplicaCountpour chaqueNodeGroupConfiguration. Là encore, vous pouvez utiliser la console ElastiCache (https://console.aws.amazon.com/elasticache/) ou DescribeReplicationGroups pour récupérer les valeurs réelles pour 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 mise à jour
UseOnlineReshardingpour mettre à jour le nombre de groupes de nœuds sans interruption, ElastiCache répartit uniformément les espaces de 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éSlotsde chaqueNodeGroupConfigurationà 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 valeur
NumNodeGroupsqui est inférieure au nombre actuel de groupes de nœuds, CloudFormation indique à ElastiCache de supprimer autant de groupes de nœuds que nécessaire pour atteindre le nombre de nœuds spécifié. Cependant, ElastiCache peut ne pas toujours être en mesure de supprimer le nombre de groupes de nœuds souhaité. Dans le cas où ElastiCache ne peut pas supprimer le nombre de groupes de nœuds souhaité, CloudFormation génère un événement de pile vous avertissant de la situation. Dans les cas où ElastiCache ne peut supprimer aucun groupe de nœuds, la mise à jour des ressources CloudFormation échoue.
Pour de plus amples informations sur la modification des groupes de réplication, veuillez consulter ModifyReplicationGroupShardConfiguration.html dans la Amazon ElastiCache API Reference.
Syntaxe
JSON
"UpdatePolicy" : { "UseOnlineResharding" :Boolean}
YAML
UpdatePolicy: UseOnlineResharding:Boolean
Politique EnableVersionUpgrade
Pour mettre à niveau un domaine OpenSearch Service vers une nouvelle version d'OpenSearch ou d'Elasticsearch plutôt que de remplacer l'intégralité de la ressource AWS::OpenSearchService::Domain ou AWS::Elasticsearch::Domain, utilisez la politique de mise à jour EnableVersionUpgrade.
Si EnableVersionUpgrade est défini sur true, vous pouvez mettre à jour la propriété EngineVersion de la ressource AWS::OpenSearchService::Domain (ou la propriété ElasticsearchVersion de la ressource héritée AWS::Elasticsearch::Domain) et CloudFormation la mettra à jour sans interruption. Lorsque EnableVersionUpgrade est défini sur false ou qu'aucune valeur n'est spécifiée, la mise à jour de la propriété EngineVersion ou ElasticsearchVersion entraîne le remplacement de l'ensemble de la ressource AWS::OpenSearchService::Domain/AWS::Elasticsearch::Domain par CloudFormation.
La politique de mise à jour EnableVersionUpgrade n'a pas de propriétés.
Pour plus d’informations, consultez Mise à niveau des domaines OpenSearch Service dans le Guide du développeur Amazon OpenSearch Service.
Syntaxe
JSON
"UpdatePolicy" : { "EnableVersionUpgrade" :Boolean}
YAML
UpdatePolicy: EnableVersionUpgrade:Boolean
Stratégie CodeDeployLambdaAliasUpdate
Pour effectuer un déploiement CodeDeploy lorsque la version d'une ressource AWS::Lambda::Alias change, utilisez la politique de mise à jour CodeDeployLambdaAliasUpdate.
Syntaxe
JSON
"UpdatePolicy" : { "CodeDeployLambdaAliasUpdate" : { "AfterAllowTrafficHook" :String, "ApplicationName" :String, "BeforeAllowTrafficHook" :String, "DeploymentGroupName" :String} }
YAML
UpdatePolicy: CodeDeployLambdaAliasUpdate: AfterAllowTrafficHook:StringApplicationName:StringBeforeAllowTrafficHook:StringDeploymentGroupName: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'application CodeDeploy.
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-
Le nom du groupe de déploiement CodeDeploy. C'est là que la politique d'acheminement du trafic est définie.
Obligatoire : oui
Type : chaîne
Pour un exemple qui spécifie l'attribut UpdatePolicy d'une ressource AWS::Lambda::Alias, consultez la section 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-subnetIdAz3LaunchTemplate: LaunchTemplateId: !ReflogicalNameVersion: !GetAttlogicalName.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
Politique AutoScalingReplacingUpdate
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'
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 métadonnées AWS::CloudFormation::Init et le script d’assistance cfn-init pour initialiser les instances de votre groupe Auto Scaling. CloudFormation installe les packages, exécute les commandes et effectue les autres opérations 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. Afin de garantir la disponibilité, vous pouvez imposer une mise à jour propagée de sorte que CloudFormation mette à jour les instances lot après lot.
Important
Lorsque vous imposez une mise à jour propagée, CloudFormation doit créer une nouvelle instance et supprimer l'ancienne. Les informations stockées dans l'ancienne instance seront perdues.
Pour imposer une mise à jour propagée, modifiez l'ID logique de la ressource de configuration de lancement, puis mettez à jour la pile et les références qui renvoient vers l'ID logique d'origine (telles que le groupe Auto Scaling associé). CloudFormation déclenche une mise à jour propagée sur le groupe Auto Scaling, 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