UpdatePolicy Attribut - AWS CloudFormation

UpdatePolicy Attribut

Mit dem UpdatePolicy-Attribut können Sie angeben, wie AWS CloudFormation Aktualisierungen für die folgenden Ressourcen verarbeitet:

Ressourcen-Aktualisierungsrichtlinien

  • Für AWS::AppStream::Fleet-Ressourcen kann CloudFormation Ihren Image Builder mit neuerer AppStream-2.0-Agent-Software aktualisieren. Weitere Informationen finden Sie unter AppStream 2.0-Versionen verwalten.

  • Für AWS::AutoScaling::AutoScalingGroup-Ressourcen ruft CloudFormation eine von drei Aktualisierungsrichtlinien auf, je nachdem, welche Art von Änderung Sie vornehmen oder ob ein geplanter Vorgang mit der Auto Scaling-Gruppe verknüpft ist.

    • Die Richtlinien AutoScalingReplacingUpdate und AutoScalingRollingUpdate gelten nur, wenn Sie einen oder mehrere der folgenden Schritte abschließen:

      • Ändern der AWS::AutoScaling::LaunchConfiguration der Auto Scaling-Gruppe.

      • Ändern der VPCZoneIdentifier-Eigenschaft der Auto-Scaling-Gruppe.

      • Ändern der LaunchTemplate-Eigenschaft der Auto-Scaling-Gruppe.

      • Aktualisieren einer Auto Scaling-Gruppe mit Instances, die nicht der aktuellen LaunchConfiguration entsprechen.

      Wenn sowohl die Richtlinie AutoScalingReplacingUpdate als auch die Richtlinie AutoScalingRollingUpdate angegeben wird, erhält durch Festlegen der WillReplace-Eigenschaft auf true AutoScalingReplacingUpdate den Vorrang.

    • Die AutoScalingScheduledAction-Richtlinie gilt, wenn Sie einen Stack aktualisieren, der eine Auto Scaling-Gruppe mit einer zugeordneten geplanten Aktion enthält.

  • Für AWS::ElastiCache::ReplicationGroup-Ressourcen kann CloudFormation Shards einer Replikationsgruppe ändern, indem Shards hinzugefügt oder entfernt werden, anstatt die gesamte Ressource zu ersetzen. Weitere Informationen finden Sie unter UseOnlineResharding-Richtlinie.

  • Für AWS::OpenSearchService::Domain- und Legacy–AWS::Elasticsearch::Domain-Ressourcen kann CloudFormation eine OpenSearch-Service-Domäne auf eine neue Version von OpenSearch oder Elasticsearch aktualisieren, ohne die gesamte Ressource zu ersetzen. Weitere Informationen finden Sie unter EnableVersionUpgrade-Richtlinie.

  • Für AWS::Lambda::Alias-Ressourcen führt CloudFormation eine CodeDeploy-Bereitstellung durch, wenn sich die Version auf dem Alias ändert. Weitere Informationen finden Sie unter Aktualisierungsrichtlinie für CodeDeployLambdaAlias.

Aktualisierungsrichtlinie für AppStream 2.0

Konfiguration von AppStream 2.0 für eine Aktualisierungsrichtlinie.

Syntax

JSON

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

YAML

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

Stoppt die angegebene Flotte vor der Aktualisierung.

Required: No

StartAfterUpdate

Startet die angegebene Flotte nach der Aktualisierung.

Required: No

AutoScalingReplacing-Aktualisierungsrichtlinie

Verwenden Sie die AutoScalingReplacingUpdate-Richtlinie, um anzugeben, wie AWS CloudFormation Ersatz-Aktualisierungen für eine Auto-Scaling-Gruppe verarbeitet. Mit dieser Richtlinie können Sie angeben, ob AWS CloudFormation eine Auto-Scaling-Gruppe durch eine neue ersetzt oder nur die Instances in der Auto-Scaling-Gruppe ersetzt.

Wichtig

Stellen Sie vor einer Aktualisierung sicher, dass genügend Amazon EC2-Kapazität für die alte und die neue Auto Scaling-Gruppe vorhanden ist.

Syntax

JSON

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

YAML

UpdatePolicy: AutoScalingReplacingUpdate: WillReplace: Boolean

Eigenschaften

WillReplace

Gibt an, ob eine Auto Scaling-Gruppe und die darin enthaltenen Instances während einer Aktualisierung ersetzt werden. Während der Ersetzung behält CloudFormation die alte Gruppe bei, bis die neue fertig erstellt wurde. Wenn die Aktualisierung fehlschlägt, kann CloudFormation die alte Auto Scaling-Gruppe wiederherstellen und die neue Auto Scaling-Gruppe löschen.

Während CloudFormation die neue Gruppe erstellt, werden keine Instances getrennt oder angefügt. Nach der erfolgreichen Erstellung der neuen Auto Scaling-Gruppe löscht CloudFormation die alte Auto Scaling-Gruppe während des Bereinigungsvorgangs.

Wenn Sie den WillReplace-Parameter angeben, müssen Sie auch eine entsprechende CreationPolicy angeben. Wenn die minimale Anzahl von Instances (angegeben durch die MinSuccessfulInstancesPercent-Eigenschaft) nicht innerhalb des (in der CreationPolicy-Richtlinie angegebenen) Timeout-Zeitraums Erfolg signalisiert, schlägt die Ersatz-Aktualisierung fehl und AWS CloudFormation führt ein Rollback auf die alte Auto-Scaling-Gruppe aus.

Typ: Boolesch

Required: No

AutoScalingRollingUpdate-Richtlinie

Verwenden Sie die AutoScalingRollingUpdate-Richtlinie, um anzugeben, wie CloudFormation fortlaufende Updates für eine Auto Scaling-Gruppe behandelt. Durch fortlaufende Aktualisierungen können Sie angeben, ob AWS CloudFormation Instances, die einer Auto-Scaling-Gruppe angehören, in Stapeln oder gleichzeitig aktualisiert.

Wichtig

Während eines fortlaufenden Updates nehmen einige Auto Scaling-Prozesse möglicherweise Änderungen an der Auto Scaling-Gruppe vor, bevor CloudFormation das fortlaufende Update abgeschlossen hat. Diese Änderungen können dazu führen, dass das fortlaufende Update fehlschlägt. Verwenden Sie die SuspendProcesses-Eigenschaft, um die Ausführung von Auto Scaling-Prozessen während eines fortlaufenden Updates zu verhindern. Weitere Informationen finden Sie unter Wie lauten einige empfohlene bewährte Methoden für die Durchführung von fortlaufenden Updates für Auto Scaling-Gruppen?

Beachten Sie, dass CloudFormation während Rollback-Operationen für Stack-Aktualisierungen die UpdatePolicy-Konfiguration, die in der Vorlage angegeben ist, vor der aktuellen Stack-Aktualisierung verwendet. Nehmen Sie beispielsweise an, Sie haben MaxBatchSize in der UpdatePolicy Ihrer Stack-Vorlage von 1 bis 10 aktualisiert. Sie führen dann eine Stack-Aktualisierung durch und die Aktualisierung schlägt fehl und CloudFormation löst eine Aktualisierungs-Rollback-Operation aus. In diesem Fall verwendet CloudFormation 1 als die maximale Stapelgröße, anstatt 10. Aus diesem Grund empfehlen wir Ihnen, Änderungen an der UpdatePolicy-Konfiguration in einer Stack-Aktualisierung unabhängig von und vor der Aktualisierung der AWS::AutoScaling::AutoScalingGroup-Ressource vorzunehmen, die wahrscheinlich fortlaufende Aktualisierungen initiieren.

Syntax

JSON

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

YAML

UpdatePolicy: AutoScalingRollingUpdate: MaxBatchSize: Integer MinInstancesInService: Integer MinSuccessfulInstancesPercent: Integer PauseTime: String SuspendProcesses: - List of processes WaitOnResourceSignals: Boolean

Eigenschaften

MaxBatchSize

Gibt die maximale Anzahl von Instances an, die CloudFormation aktualisiert.

Standard: 1

Maximum: 100

Typ: Ganzzahl

Required: No

MinInstancesInService

Gibt die minimale Anzahl von Instances an, die innerhalb der Auto Scaling-Gruppe in Betrieb sein müssen, während CloudFormation alte Instances aktualisiert. Dieser Wert muss kleiner als die MaxSize der Auto Scaling-Gruppe sein.

Standard: 0

Typ: Ganzzahl

Required: No

MinSuccessfulInstancesPercent

Gibt den Prozentsatz der Instances in einem fortlaufenden Auto Scaling-Update an, die Erfolg signalisieren müssen, damit ein Update erfolgreich ist. Sie können einen Wert von 0 bis 100 angeben. CloudFormation rundet auf das nächste Zehntelprozent auf oder ab. Wenn Sie beispielsweise fünf Instances mit einem minimalen erfolgreichen Prozentsatz von 50 aktualisieren, müssen drei Instances Erfolg signalisieren.

Wenn eine Instance innerhalb der in der PauseTime-Eigenschaft angegebenen Zeit kein Signal sendet, geht CloudFormation davon aus, dass die Instance nicht aktualisiert wurde.

Wenn Sie diese Eigenschaft angeben, müssen Sie auch die Eigenschaften WaitOnResourceSignals und PauseTime aktivieren.

Der MinSuccessfulInstancesPercent-Parameter gilt nur für Instances und nur für Signalisierungszwecke. Um die Anzahl der Instances in Ihrer Auto-Scaling-Gruppe anzugeben, beachten Sie die MinSize-, MaxSize- und DesiredCapacity-Eigenschaften der Ressource AWS::AutoScaling::AutoScalingGroup.

Standard: 100

Typ: Ganzzahl

Required: No

Wichtig

Wenn die MinSuccessfulInstancesPercent-Eigenschaft auf 0 gesetzt ist, wartet CloudFormation darauf, dass sich 0 % der Kapazitäts-Instances in einem InService-Zustand befinden. MinSuccessfulInstancesPercent kehrt sofort zurück, bevor es den Status der Auto-Scaling-Gruppe als Update Complete betrachtet, um zu den nachfolgenden, in der Stack-Vorlage definierten Ressourcen überzugehen.

Wenn andere Auto-Scaling-Gruppen in Ihrer CloudFormation-Vorlage definiert sind, werden sie gleichzeitig aktualisiert. Wenn alle Auto-Scaling-Gruppen gleichzeitig mit 0 % der Kapazitäts-Instances in einem InService-Zustand bereitgestellt werden, kommt es zu Verfügbarkeitsproblemen, da 0 Instances den Kunden-Datenverkehr bedienen.

CloudFormation empfiehlt, dass MinSuccessfulInstancesPercent auf einen Wert größer als 0 gesetzt wird, so dass eine angemessene Mindestanzahl von Instances verifiziert werden kann, bevor eine Aktualisierung von Auto-Scaling-Gruppen als abgeschlossen betrachtet wird.

PauseTime

Der Zeitraum, für den CloudFormation nach einer Änderung an einem Stapel von Instances anhält, um diesen Instances Zeit zum Starten von Software-Anwendungen zu lassen. Beispielsweise müssen Sie möglicherweise PauseTime angeben, wenn Sie die Anzahl der Instances in einer Auto Scaling-Gruppe nach oben skalieren.

Wenn Sie die WaitOnResourceSignals-Eigenschaft aktivieren, ist PauseTime die Zeit, die CloudFormation warten sollte, bis die Auto Scaling-Gruppe die erforderliche Anzahl gültiger Signale von hinzugefügten oder ersetzten Instances erhalten hat. Wenn die PauseTime überschritten wird, bevor die Auto Scaling-Gruppe die erforderliche Anzahl von Signalen erhält, schlägt die Aktualisierung fehl. Um die besten Ergebnisse zu erzielen, geben Sie einen Zeitraum an, der genügend Zeit für das Starten Ihrer Anwendungen lässt. Wenn die Aktualisierung rückgängig gemacht werden muss, kann eine kurze PauseTime das Rollback fehlschlagen lassen.

Geben Sie PauseTime im ISO8601-Format für Dauern an (im Format PT#H#M#S, wobei die #-Zeichen die Anzahl von Stunden, Minuten bzw. Sekunden darstellen). Die maximale PauseTime ist eine Stunde (PT1H).

Standardwert: PT0S (0 Sekunden). Wenn die WaitOnResourceSignals-Eigenschaft auf true gesetzt wurde, ist der Standard PT5M.

Typ: Zeichenfolge

Required: No

SuspendProcesses

Gibt die Auto Scaling-Prozesse an, die während der Stack-Aktualisierung auszusetzen sind. Das Aussetzen von Prozessen verhindert, dass ein Stack-Update durch Auto Scaling gestört wird. Beispielsweise können Sie den Alarm aussetzen, so dass Amazon EC2 Auto Scaling keine mit einem Alarm verbundenen Skalierungsrichtlinien initiiert. Zulässige Werte finden Sie im ScalingProcesses.member.N-Parameter für die SuspendProcesses-Aktion im Amazon EC2 Auto Scaling-API-Referenz.

Standard: Nicht angegeben

Typ: Liste von Auto Scaling-Prozessen

Required: No

WaitOnResourceSignals

Gibt an, ob die Auto Scaling-Gruppe bei einer Aktualisierung auf Signale von neuen Instances wartet. Verwenden Sie diese Eigenschaft, um sicherzustellen, dass die Instances die Installation und Konfiguration von Anwendungen abgeschlossen haben, bevor die Aktualisierung der Auto-Scaling-Gruppe fortgesetzt wird. AWS CloudFormation setzt die Aktualisierung einer Auto-Scaling-Gruppe aus, nachdem neue EC2-Instances in die Gruppe aufgenommen wurden. AWS CloudFormation muss ein Signal von jeder neuen Instance innerhalb der angegebenen PauseTime empfangen, bevor die Aktualisierung fortgesetzt wird. Um der Auto Scaling-Gruppe Signale zu senden, verwenden Sie das Hilfsprogramm-Skript cfn-signal oder die SignalResource-API.

Damit Instances auf eine Elastic Load Balancing-Zustandsprüfung warten, bevor sie Erfolg signalisieren, fügen Sie mit dem Hilfsprogramm-Skript cfn-init eine Verifizierung der Zustandsprüfung hinzu. Ein Beispiel finden Sie unter dem Befehl verify_instance_health in der Beispielvorlage Fortlaufende Auto Scaling-Updates.

Standard: false

Typ: Boolesch

Erforderlich: Bedingt. Wenn Sie die MinSuccessfulInstancesPercent-Eigenschaft angeben, müssen Sie auch die Eigenschaften WaitOnResourceSignals und PauseTime aktivieren.

AutoScalingScheduledAction-Richtlinie

Um anzugeben, wie AWS CloudFormation Aktualisierungen für die Eigenschaften MinSize, MaxSize und DesiredCapacity behandelt, wenn die AWS::AutoScaling::AutoScalingGroup-Ressource eine zugeordnete geplante Aktion aufweist, verwenden Sie die AutoScalingScheduledAction-Richtlinie.

Bei geplanten Aktionen können die Gruppengrößeneigenschaften einer Auto Scaling-Gruppe jederzeit geändert werden. Wenn Sie einen Stack mit einer Auto Scaling-Gruppe und einer geplanten Aktion aktualisieren, setzt CloudFormation die Gruppengrößen-Eigenschaftswerte der Auto Scaling-Gruppe immer auf die Werte, die in der AWS::AutoScaling::AutoScalingGroup-Ressource Ihrer Vorlage definiert sind. Dies gilt auch, wenn eine geplante Aktion aktiv ist.

Wenn Sie nicht möchten, dass CloudFormation die Werte für Gruppengrößeneigenschaften ändert, wenn eine geplante Aktion wirksam ist, verwenden Sie die AutoScalingScheduledAction-Aktualisierungsrichtlinie und legen IgnoreUnmodifiedGroupSizeProperties auf true fest. Auf diese Weise verhindern Sie, dass CloudFormation die Eigenschaften MinSize, MaxSize oder DesiredCapacity ändert; es sei denn, Sie haben diese Werte in der Vorlage geändert.

Syntax

JSON

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

Eigenschaften

IgnoreUnmodifiedGroupSizeProperties

Falls true, ignoriert AWS CloudFormation während einer Stack-Aktualisierung Unterschiede zwischen den Größen-Eigenschaften Ihrer aktuellen Auto-Scaling-Gruppe und der Auto-Scaling-Gruppe, die in der Ressource AWS::AutoScaling::AutoScalingGroup Ihrer Vorlage beschrieben ist. Wenn Sie Größen-Eigenschaftswerte der Gruppe in Ihrer Vorlage ändern, verwendet AWS CloudFormation die geänderten Werte und aktualisiert Ihre Auto-Scaling-Gruppe.

Standard: false

Typ: Boolesch

Required: No

UseOnlineResharding-Richtlinie

Verwenden Sie die Aktualisierungsrichtlinie UseOnlineResharding, um Shards einer Replikationsgruppe zu ändern, indem Shards hinzugefügt oder entfernt werden, anstatt die gesamte AWS::ElastiCache::ReplicationGroup-Ressource zu ersetzen.

Wenn UseOnlineResharding auf true festgelegt ist, können Sie die Eigenschaften NumNodeGroups und NodeGroupConfiguration der AWS::ElastiCache::ReplicationGroup-Ressource aktualisieren, und CloudFormation aktualisiert diese Eigenschaften ohne Unterbrechung. Wenn UseOnlineResharding auf false festgelegt oder nicht angegeben ist, ersetzt CloudFormation durch die Aktualisierung der NumNodeGroups- und NodeGroupConfiguration-Eigenschaften die gesamte AWS::ElastiCache::ReplicationGroup-Ressource.

Die UseOnlineResharding-Aktualisierungsrichtlinie hat keine Eigenschaften.

Folgende Aspekte sollten Sie beim Festlegen der UseOnlineResharding-Aktualisierungsrichtlinie auf true berücksichtigen:

  • Es wird dringend empfohlen, dass Sie Aktualisierungen an den NumNodeGroups- und NodeGroupConfiguration-Eigenschaften als die einzigen Aktualisierungen in einem bestimmten Stack-Aktualisierungsvorgang vornehmen.

    Das Aktualisieren der Konfiguration der Knotengruppe einer Replikationsgruppe ist ein ressourcenintensiver Vorgang. Wenn eine Stack-Aktualisierung fehlschlägt, kann CloudFormation Änderungen an der Konfiguration der Knotengruppe einer Replikationsgruppe nicht rückgängig machen. Allerdings macht CloudFormation alle anderen Eigenschaften rückgängig, die im Rahmen des fehlgeschlagenen Aktualisierungsvorgangs geändert wurden.

  • Alle Aktualisierungen der Knotengruppe erfordern die Identifizierung aller Knotengruppen.

    Wenn Sie die NodeGroupConfiguration-Eigenschaft angeben, müssen Sie auch die NodeGroupId für jede Konfiguration der Knotengruppe angeben, damit CloudFormation die Anzahl der Knoten ohne Unterbrechung aktualisieren kann.

    Wenn Sie beim Erstellen einer Replikationsgruppe keine ID für jede Knotengruppe angeben, erstellt ElastiCache automatisch eine ID für jede Knotengruppe. Um die Replikationsgruppe ohne Unterbrechung zu aktualisieren, verwenden Sie die ElastiCache-Konsole (https://console.aws.amazon.com/elasticache/) oder DescribeReplicationGroups, um die IDs für alle Knotengruppen in der Replikationsgruppe abzurufen. Geben Sie anschließend die ID für jede Knotengruppe in Ihrer Stack-Vorlage an, bevor Sie versuchen, Shards hinzuzufügen oder zu entfernen.

    Anmerkung

    Fügen Sie als bewährte Methode beim Erstellen einer Replikationsgruppe in einer Stack-Vorlage eine ID für jede Knotengruppe ein, die Sie angeben.

    Darüber hinaus erfordert das Aktualisieren der Anzahl der Knoten ohne Unterbrechung, dass Sie die Eigenschaften PrimaryAvailabilityZone, ReplicaAvailabilityZones und ReplicaCount auch für jede NodeGroupConfiguration genau angegeben haben. Auch hier können Sie die ElastiCache-Konsole (https://console.aws.amazon.com/elasticache/) oder DescribeReplicationGroups verwenden, um die tatsächlichen Werte für jede Knotengruppe abzurufen und sie mit den Werten in Ihrer Stack-Vorlage zu vergleichen. Sie können die Eigenschaftswerte der Knotengruppen als separate Stack-Aktualisierung oder als Teil der gleichen Stack-Aktualisierung aktualisieren, bei der die Anzahl der Knotengruppen geändert wird.

    Wenn Sie eine UseOnlineResharding-Aktualisierungsrichtlinie zum Aktualisieren der Anzahl der Knotengruppen ohne Unterbrechung verwenden, verteilt ElastiCache gleichmäßig die Keyspaces zwischen der angegebenen Anzahl von Slots. Diese kann später nicht mehr aktualisiert werden. Nachdem die Anzahl der Knotengruppen auf diese Weise aktualisiert wurde, sollten Sie daher den Wert für die Slots-Eigenschaft jeder NodeGroupConfiguration aus der Stack-Vorlage entfernen, da er nicht mehr die tatsächlichen Werte in jeder Knotengruppe widerspiegelt.

  • Die tatsächlichen Ergebnisse der Entfernung der Knotengruppe können unterschiedlich sein.

    Wenn Sie einen NumNodeGroups-Wert angeben, der kleiner ist als die aktuelle Anzahl der Knotengruppen, weist CloudFormation ElastiCache an, so viele Knotengruppen wie notwendig zu entfernen, um die angegebene Anzahl von Knoten zu erreichen. Allerdings kann ElastiCache nicht immer die gewünschte Anzahl von Knotengruppen entfernen. Für den Fall, dass ElastiCache die gewünschte Anzahl von Knotengruppen nicht entfernen kann, generiert CloudFormation ein Stack-Ereignis, das Sie darauf hinweist. In Fällen, in denen ElastiCache keine Knotengruppen entfernen kann, schlägt die Aktualisierung der CloudFormation-Ressource fehl.

Weitere Informationen zum Ändern von Replikationsgruppen finden Sie unter ModifyReplicationGroupShardConfiguration im Amazon ElastiCache API Reference.

Syntax

JSON

"UpdatePolicy" : { "UseOnlineResharding" : Boolean }

YAML

UpdatePolicy: UseOnlineResharding: Boolean

EnableVersionUpgrade-Richtlinie

Um eine OpenSearch-Service-Domäne auf eine neue Version von OpenSearch oder Elasticsearch zu aktualisieren, anstatt die gesamte AWS::OpenSearchService::Domain- oder AWS::Elasticsearch::Domain-Ressource zu ersetzen, verwenden Sie die EnableVersionUpgrade-Aktualisierungsrichtlinie.

Wenn EnableVersionUpgrade auf true festgelegt ist, können Sie die EngineVersion-Eigenschaft der AWS::OpenSearchService::Domain-Ressource aktualisieren (oder die ElasticsearchVersion-Eigenschaft der Legacy-AWS::Elasticsearch::Domain-Ressource) und CloudFormation aktualisiert diese Eigenschaft ohne Unterbrechung. Wenn EnableVersionUpgrade auf false festgelegt oder nicht angegeben ist, führt das Aktualisieren der EngineVersion- oder ElasticsearchVersion-Eigenschaft dazu, dass CloudFormation die gesamte AWS::OpenSearchService::Domain/AWS::Elasticsearch::Domain-Ressource ersetzt.

Die EnableVersionUpgrade-Aktualisierungsrichtlinie hat keine Eigenschaften.

Weitere Informationen zum Aktualisieren von OpenSearch-Service-Domänen erhalten Sie unter UpgradeDomain im Entwicklerhandbuch für Amazon OpenSearch Service.

Syntax

JSON

"UpdatePolicy" : { "EnableVersionUpgrade" : Boolean }

YAML

UpdatePolicy: EnableVersionUpgrade: Boolean

Aktualisierungsrichtlinie für CodeDeployLambdaAlias

Um eine CodeDeploy-Bereitstellung durchzuführen, wenn sich die Version auf einer AWS::Lambda::Alias-Ressource ändert, verwenden Sie die Aktualisierungsrichtlinie CodeDeployLambdaAliasUpdate.

Syntax

JSON

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

Eigenschaften

AfterAllowTrafficHook

Der Name der Lambda-Funktion, die nach Abschluss des Datenroutings ausgeführt werden soll.

Required: No

Typ: Zeichenfolge

ApplicationName

Der Name der CodeDeploy-Anwendung.

Required: Yes

Typ: Zeichenfolge

BeforeAllowTrafficHook

Der Name der Lambda-Funktion, die vor Beginn des Datenroutings ausgeführt werden soll.

Required: No

Typ: Zeichenfolge

DeploymentGroupName

Der Name der CodeDeploy-Bereitstellungsgruppe. Hier wird die Richtlinie der Datenverkehrsverlagerung festgelegt.

Required: Yes

Typ: Zeichenfolge

Ein Beispiel für die Angabe des Attributs UpdatePolicy für eine AWS::Lambda::Alias-Ressource finden Sie unter Lambda-Alias-Aktualisierungsrichtlinie.

Beispiele

Die folgenden Beispiele zeigen, wie Sie eine Aktualisierungsrichtlinie zu einer Auto Scaling-Gruppe hinzufügen und wie Sie die Verfügbarkeit bei der Aktualisierung von Metadaten aufrechterhalten.

Hinzufügen einer UpdatePolicy zu einer Auto-Scaling-Gruppe

Das folgende Beispiel zeigt, wie Sie eine Aktualisierungsrichtlinie hinzufügen. Während eines Updates aktualisiert die Auto Scaling-Gruppe Instances in Stapeln von zwei und hält mindestens eine Instance in Betrieb. Da das WaitOnResourceSignals-Flag gesetzt ist, wartet die Auto Scaling-Gruppe auf neue Instances, die zur Gruppe hinzugefügt werden. Die neuen Instances müssen der Auto Scaling-Gruppe Signale senden, bevor sie den nächsten Stapel von Instances aktualisiert.

JSON

"ASG" : { "Type" : "AWS::AutoScaling::AutoScalingGroup", "Properties" : { "AvailabilityZones" : [ "us-east-1a", "us-east-1b" ], "DesiredCapacity" : "1", "LaunchConfigurationName" : { "Ref" : "LaunchConfig" }, "MaxSize" : "4", "MinSize" : "1" }, "UpdatePolicy" : { "AutoScalingScheduledAction" : { "IgnoreUnmodifiedGroupSizeProperties" : "true" }, "AutoScalingRollingUpdate" : { "MinInstancesInService" : "1", "MaxBatchSize" : "2", "WaitOnResourceSignals" : "true", "PauseTime" : "PT10M" } } }, "ScheduledAction" : { "Type" : "AWS::AutoScaling::ScheduledAction", "Properties" : { "AutoScalingGroupName" : { "Ref" : "ASG" }, "DesiredCapacity" : "2", "StartTime" : "2017-06-02T20 : 00 : 00Z" } }

YAML

ASG: Type: 'AWS::AutoScaling::AutoScalingGroup' Properties: AvailabilityZones: - us-east-1a - us-east-1b DesiredCapacity: '1' LaunchConfigurationName: Ref: LaunchConfig MaxSize: '4' MinSize: '1' UpdatePolicy: AutoScalingScheduledAction: IgnoreUnmodifiedGroupSizeProperties: 'true' AutoScalingRollingUpdate: MinInstancesInService: '1' MaxBatchSize: '2' WaitOnResourceSignals: 'true' PauseTime: PT10M ScheduledAction: Type: 'AWS::AutoScaling::ScheduledAction' Properties: AutoScalingGroupName: Ref: ASG DesiredCapacity: '2' StartTime: '2017-06-02T20 : 00 : 00Z'

AutoScalingReplacingUpdate-Richtlinie

Das folgende Beispiel deklariert eine Richtlinie, die die Ersetzung einer zugeordneten Auto Scaling-Gruppe während einer Aktualisierung erzwingt. Damit die Aktualisierung erfolgreich ist, muss ein Prozentsatz von Instances (angegebenen durch den MinSuccessfulPercentParameter-Parameter) im Timeout-Zeitraum Erfolg signalisieren.

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'

Aufrechterhalten der Verfügbarkeit beim Aktualisieren der Metadaten für das cfn-init-Hilfsskript

Bei der Installation von Software-Anwendungen auf Ihren Instances möchten Sie vielleicht den AWS::CloudFormation::Init-Metadatenschlüssel und das cfn-init-Helfer-Skript für den Bootstrap der Instances in Ihrer Auto-Scaling-Gruppe verwenden. CloudFormation installiert die Pakete, führt die Befehle aus und führt andere Bootstrapping-Aktionen aus, die in den Metadaten beschrieben sind.

Wenn Sie nur die Metadaten aktualisieren (z. B. bei der Aktualisierung eines Pakets auf eine andere Version), können Sie den Hilfsprogramm-Daemon cfn-hup verwenden, um die Aktualisierungen zu erkennen und anzuwenden. Der Daemon cfn-hup wird jedoch unabhängig auf jeder Instance ausgeführt. Wenn der Daemon zufällig gleichzeitig auf allen Instances ausgeführt wird, ist Ihre Anwendung oder Ihr Service möglicherweise während der Aktualisierung nicht verfügbar. Zur Gewährleistung der Verfügbarkeit können Sie ein fortlaufendes Update erzwingen, sodass CloudFormation-Updates nur jeweils einen Stapel Ihrer Instances aktualisiert.

Wichtig

Bei Erzwingen eines fortlaufenden Updates muss CloudFormation eine neue Instance erstellen und dann die alte löschen. Alle auf der alten Instance gespeicherten Informationen gehen verloren.

Um eine fortlaufende Aktualisierung zu erzwingen, ändern Sie die logische ID der Launchkonfigurations-Ressource und aktualisieren dann den Stack und alle Referenzen, die auf die ursprüngliche logische ID (z. B. die zugehörige Auto-Scaling-Gruppe) verweisen. CloudFormation löst eine fortlaufende Aktualisierung auf der Auto-Scaling-Gruppe aus und ersetzt alle Instances.

Originalvorlage

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

Aktualisierte logische ID

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

Lambda-Alias-Aktualisierungsrichtlinie

Das folgende Beispiel gibt das Attribut UpdatePolicy für eine AWS::Lambda::Alias-Ressource an. Alle Einzelheiten der Bereitstellung werden von der Anwendung und der Bereitstellungsgruppe definiert, die an die Richtlinie übergeben werden.

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