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'UpdatePolicy
attribut pour spécifier le mode de gestion des mises AWS CloudFormation à jour de certaines ressources lors des opérations de mise à jour de la pile.
Rubriques
Présentation
À l'aide de UpdatePolicy
cet attribut, vous pouvez contrôler la manière dont les ressources suivantes sont mises à jour, comme décrit ici :
-
AWS::AppStream::Fleet
— CloudFormation peut arrêter et démarrer une flotte, ce qui entraîne le remplacement des instances de la flotte. Ainsi, les dernières modifications seront appliquées à toutes les instances immédiatement après une mise à jour de la 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 politiques incluent :-
AutoScalingReplacingUpdate
etAutoScalingRollingUpdate
politiques : CloudFormation vous pouvez soit remplacer le groupe Auto Scaling et ses instances par uneAutoScalingReplacingUpdate
politique, soit remplacer uniquement les instances par uneAutoScalingRollingUpdate
politique. Ces opérations de remplacement ont lieu lorsque vous apportez une ou plusieurs 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
etAutoScalingRollingUpdate
sont toutes les deux spécifiées, la définition de la propriétéWillReplace
surtrue
donne la priorité àAutoScalingReplacingUpdate
. -
-
AutoScalingScheduledAction
politique — 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 politique permet d'éviter toute mise à jour inattendue susceptible d'interférer avec les activités de dimensionnement 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::Domain
etAWS::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'UpdatePolicy
attribut pris en charge par chaque type de ressource.
AppStream Politique de mise à jour 2.0
Pour arrêter un parc AppStream 2.0 avant une mise à jour et le redémarrer après une mise à jour, utilisez la politique de mise à jour AppStream 2.0.
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
AutoScalingReplacingUpdatepolitique
Pour remplacer le groupe Auto Scaling et les instances qu'il contient, utilisez la AutoScalingReplacingUpdate
politique.
Avant de tenter une mise à jour, assurez-vous que vous disposez d'une EC2 capacité Amazon suffisante pour vos anciens et nouveaux groupes Auto Scaling.
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égieCreationPolicy
correspondante. Si le nombre minimum d'instances (spécifié par laMinSuccessfulInstancesPercent
propriété) n'indique pas un succès dans leTimeout
délai (spécifié dans laCreationPolicy
politique), la mise à jour de remplacement échoue et CloudFormation revient à l'ancien groupe Auto Scaling.Type : valeur booléenne
Obligatoire : non
AutoScalingRollingUpdatepolitique
Pour effectuer une mise à jour continue des instances d'un groupe Auto Scaling plutôt que d'attendre que les activités de dimensionnement remplacent progressivement les anciennes instances par des instances plus récentes, utilisez cette AutoScalingRollingUpdate
politique. 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é.
Points à prendre en compte lors de l'utilisation d'une AutoScalingRollingUpdate
politique :
-
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 passezMaxBatchSize
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 des modifications auUpdatePolicy
dans une mise à jour séparée avant toute mise à jour du groupe Auto Scaling susceptible de déclencher des mises à jour continues. -
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 ? -
CloudFormation prend en charge l'utilisation des hooks du cycle de vie Amazon EC2 Auto Scaling lors du lancement ou de la résiliation d'instances. Cela vous donne le temps d'effectuer des actions personnalisées sur une instance avant qu'elle ne passe à l'état suivant. Pour vous assurer que les nouvelles instances atteignent
InService
cet état, terminez le cycle de vie avec unCONTINUE
résultat à la fin de l'action personnalisée. Par défaut, si aucune réponse n'est reçue et que le délai d'attente du cycle de vie expire, le lancement de l'instance sera considéré comme un échec et sera abandonné. Si aucune instance n'atteintInService
cet état, la mise à jour continue finira par échouer. -
Les fonctionnalités d'Amazon EC2 Auto Scaling telles que les politiques de maintenance des instances, les politiques de résiliation et la protection évolutive ne sont pas disponibles pour les mises à jour continues CloudFormation . Planifiez vos mises à jour continues en conséquence.
-
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 continue, de sorte que les nouvelles instances ne seront pas 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:
Integer
MinActiveInstancesPercent:Integer
MinInstancesInService:Integer
MinSuccessfulInstancesPercent:Integer
PauseTime:String
SuspendProcesses: -List of processes
WaitOnResourceSignals:Boolean
Propriétés
MaxBatchSize
-
Spécifie le nombre maximum d'instances pouvant être remplacées simultanément.
Par défaut :
1
Maximum :
100
Type : entier
Obligatoire : non
MinActiveInstancesPercent
-
Spécifie le pourcentage d'instances d'un groupe Auto Scaling qui doivent être dans l'
InService
état correspondant à la capacité souhaitée de ce groupe lors d'une mise à jour continue pour qu'une mise à jour réussisse. 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 unInService
pourcentage minimum de 50, au moins trois instances doivent être dansInService
cet état. 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 configuration
MinActiveInstancesPercent
de votreUpdatePolicy
aura également une incidence sur les instances lancées lorsque laDesiredCapacity
propriété de laAWS::AutoScaling::AutoScalingGroup
ressource est définie sur une valeur supérieure à la capacité actuellement souhaitée pour ce 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 à MaxSizedu groupe Auto Scaling.
Avertissement
Nous vous recommandons de définir la valeur de la
MinInstancesInService
propriété sur au moins MinSizedu groupe Auto Scaling. Cela permet d'éviter les problèmes de disponibilité potentiels lors d'une mise à jour continue en raison de l'absence d'instances desservant 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 laPauseTime
propriété, cela CloudFormation suppose que l'instance n'a pas été mise à jour.Nous vous recommandons de définir la valeur de la
MinSuccessfulInstancesPercent
propriété sur une valeur supérieure à 0. Lorsque laMinSuccessfulInstancesPercent
propriété est définie sur 0, CloudFormation attend que 0 % de la capacité des instances soient dans unInService
état.MinSuccessfulInstancesPercent
revient immédiatement et avant de prendre en compte le statut du groupe Auto ScalingUPDATE_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 étatInService
, 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
dans le format ISO86 01(dans le format PT
, où chaque#
H#
M#
S#
est le nombre d'heures, de minutes et de secondes, respectivement). La valeurPauseTime
maximale est d'une heure (PT1H
).Avertissement
When
WaitOnResourceSignals
est défini surtrue
,PauseTime
agit comme une valeur de délai d'attente. 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 le DesiredCapacitypropriété de laAWS::AutoScaling::AutoScalingGroup
ressource. Si lePauseTime
est dépassé avant de CloudFormation recevoir les signaux attendus, la mise à jour échoue. Pour de meilleurs résultats, spécifiez une période suffisante pour que vos applications démarrent. Si la mise à jour doit être restaurée, une valeurPauseTime
faible peut l'échec de la restauration.Par défaut :
PT5M
(5 minutes) lorsque laWaitOnResourceSignals
propriété est définie surtrue
. Dans le cas contraire, 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 n'initie pas les politiques de dimensionnement associées à une alarme. Pour connaître les valeurs valides, consultez la section Types de processus dans le guide de l'utilisateur d'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 signaler le groupe Auto Scaling, utilisez le script d'assistance cfn-signal ou.
SignalResource
API Pour les groupes Auto Scaling associés à Elastic Load Balancing, pensez à ajouter un bilan de santé pour vous assurer que les instances sont saines avant de signaler le succès à l'aide du script d'assistance cfn-init. Par exemple, consultez laverify_instance_health
commande figurant dans les exemples de modèles pour les mises à jour continues d'Amazon EC2 Auto Scaling dans notre GitHub référentiel. Par défaut :
false
Type : valeur booléenne
Obligatoire : selon les conditions. Si vous spécifiez la
MinSuccessfulInstancesPercent
propriété, elle doit être définie surtrue
.WaitOnResourceSignals
AutoScalingScheduledActionpolitique
Pour spécifier le mode CloudFormation de gestion des mises à jour DesiredCapacity
des propriétés MinSize
MaxSize
, 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 MinSize
MaxSize
, ou à moins que vous n'ayez 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 de propriétés de taille de groupe entre votre groupe Auto Scaling actuel et le groupe Auto Scaling décrit dans laAWS::AutoScaling::AutoScalingGroup
ressource de votre modèle lors d'une mise à jour de la pile. Si vous modifiez l'une des valeurs des propriétés de taille de groupe dans votre modèle, utilisez CloudFormation les valeurs modifiées et mettez à jour votre groupe Auto Scaling.Par défaut :
false
Type : valeur booléenne
Obligatoire : non
UseOnlineReshardingpolitique
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
etNodeGroupConfiguration
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'identifiant pour chaque groupe de nœuds, un identifiant est ElastiCache automatiquement généré 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 DescribeReplicationGroupsrécupérez le IDs pour 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
etReplicaCount
pour chaqueNodeGroupConfiguration
. 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 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
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 ModifyReplicationGroupShardConfigurationla ElastiCache APIréférence Amazon.
Syntaxe
JSON
"UpdatePolicy" : { "UseOnlineResharding" :
Boolean
}
YAML
UpdatePolicy: UseOnlineResharding:
Boolean
EnableVersionUpgradepolitique
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 AWS: : OpenSearchService : :Domain ou :Elasticsearch AWS : :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 sur la mise à niveau des domaines de OpenSearch service, consultez UpgradeDomainle 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
} }
YAML
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: !ReflogicalName
Version: !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
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'
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-init
assistance 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