UpdatePolicy-Attribut - AWS CloudFormation

UpdatePolicy-Attribut

Verwenden Sie das UpdatePolicy-Attribut, um anzugeben, wie AWS CloudFormation mit Aktualisierungen an Ressourcen AWS::AppStream::Fleet, AWS::AutoScaling::AutoScalingGroup, AWS::ElastiCache::ReplicationGroup, AWS::OpenSearchService::Domain, AWS::Elasticsearch::Domain oder AWS::Lambda::Alias umgeht.

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

  • Für AWS::AutoScaling::AutoScalingGroup-Ressourcen ruft CloudFormation, abhängig von der Art Ihrer Änderung oder ob der Auto Scaling-Gruppe eine geplante Aktion zugeordnet ist, eine von drei Aktualisierungsrichtlinien auf.

    • Die Richtlinien AutoScalingReplacingUpdate und AutoScalingRollingUpdate gelten nur, wenn Sie einen oder mehrere der folgenden Schritte ausführen:

      • Ä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 AWS::Elasticsearch::Domain-Legacy-Ressourcen kann CloudFormation eine OpenSearch Service-Domäne auf eine neue Version von OpenSearch oder Elasticsearch upgraden, 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 CodeDeployLambdaAliasUpdate-Richtlinie.

AutoScalingReplacingUpdate-Richtlinie

Verwenden Sie die AutoScalingReplacingUpdate-Richtlinie, um anzugeben, wie AWS CloudFormation Ersetzungsaktualisierungen für eine Auto Scaling-Gruppe behandelt. 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

Properties

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 Ersetzungsaktualisierung fehl und AWS CloudFormation führt ein Rollback auf die alte Auto Scaling-Gruppe aus.

Type: Boolean

Required: No

AutoScalingRollingUpdate-Richtlinie

Verwenden Sie die AutoScalingRollingUpdate-Richtlinie, um anzugeben, wie CloudFormation fortlaufende Updates für eine Auto Scaling-Gruppe behandelt. Durch fortlaufende Updates 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

Properties

MaxBatchSize

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

Standard: 1

Maximum: 100

Type: Integer

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

Type: Integer

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 Instanzen in Ihrer Autoskalierungsgruppe anzugeben, siehe MinSize, MaxSize und DesiredCapacity-Eigenschaften der Ressource AWS::AutoScaling::AutoScalingGroup resource.

Standard: 100

Type: Integer

Required: No

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.

Type: String

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. Sie können beispielsweise Alarme aussetzen, sodass Amazon EC2 Auto Scaling keine Skalierungsrichtlinien für einen Alarm ausführt. 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 Instances die Installation und Konfiguration von Anwendungen abgeschlossen haben, bevor die Aktualisierung der Auto Scaling-Gruppe fortgesetzt wird. AWS CloudFormation unterbricht die Aktualisierung einer Auto Scaling-Gruppe, nachdem neue EC2-Instances in der Gruppe gestartet werden. AWS CloudFormation muss von jeder neuen Instance innerhalb der angegebenen PauseTime ein Signal erhalten, 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

Type: Boolean

Required: Conditional 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 } }

Properties

IgnoreUnmodifiedGroupSizeProperties

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

Standard: false

Type: Boolean

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

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

Wenn EnableVersionUpgrade auf true eingestellt ist, können Sie die EngineVersion-Eigenschaft der AWS::OpenSearchService::Domain-Ressource (oder die ElasticsearchVersion-Eigenschaft der AWS::Elasticsearch::Domain-Legacy-Ressource) aktualisieren, und CloudFormation wird diese Eigenschaft ohne Unterbrechung aktualisieren. 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 finden Sie unter UpgradeDomain im Amazon OpenSearch Service Developer Guide.

Syntax

JSON

"UpdatePolicy" : { "EnableVersionUpgrade" : Boolean }

YAML

UpdatePolicy: EnableVersionUpgrade: Boolean

CodeDeployLambdaAliasUpdate-Richtlinie

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

Properties

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.

Erforderlich: Ja

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 Softwareanwendungen auf Ihren Instances können Sie den AWS::CloudFormation::Init-Metadatenschlüssel und das cfn-init-Hilfsprogramm-Skript für den Bootstrap der Instances in Ihrer Auto Scaling-Gruppe verwenden. CloudFormation installiert die Pakete und führt die Befehle und 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 ein fortlaufendes Update zu erzwingen, ändern Sie die logische ID der Startkonfigurations-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