Wie initiiere ich fortlaufende Updates, wenn es keine Änderungen an der Startkonfiguration in CloudFormation gibt?

Lesedauer: 2 Minute
0

Ich möchte bei jedem AWS CloudFormation-Stack-Update fortlaufende Updates in meiner Auto Scaling-Gruppe einleiten, ohne die Startkonfiguration zu ändern.

Kurzbeschreibung

Sie können fortlaufende Updates für eine Auto Scaling-Gruppe nur initiieren, wenn Sie bestimmte Bedingungen des updatePolicy-Attributs erfüllen.

Um fortlaufende Updates zu initiieren, können Sie in der Startkonfiguration Ihrer CloudFormation-Vorlage einen Umschaltparameter erstellen. Wenn Sie jedoch den Wert des Toggle-Parameters während einer Stack-Aktualisierung ändern, wird die UserData -Eigenschaft geändert. Jede Änderung an UserData muss ersetzt werden . CloudFormation erkennt die Änderung an UserData und ersetzt dann die LaunchConfiguration-Ressource. Dieser Ersatz initiiert das fortlaufende Auto Scaling-Update, wie durch das UpdatePolicy attribute definiert.

Behebung

Bei den folgenden Schritten wird davon ausgegangen, dass Ihre AutoScalingRollingUpdate-Richtlinie für Ihre Auto Scaling-Gruppe konfiguriert ist und dass Ihre Auto Scaling-Gruppe so konfiguriert ist, dass sie auf LaunchConfiguration verweist.

Wichtig: Stellen Sie sicher, dass Sie andere Elemente in der UserData-Eigenschaft nicht stören, wenn Sie Ihrer Vorlage den Toggle-Parameter hinzufügen. Fügen Sie den Toggle-Parameter auch nicht vor dem cfn-signal hinzu.

1.    Definieren Sie in Ihrer CloudFormation-Vorlage **Toggle **als Parameter.

JSON:

"Parameters": {
        "Toggle": {
            "Type": "String",
            "AllowedValues": ["true","false"],
            "Default": "true"
        }
    }

YAML:

Parameters:
  Toggle:
    Type: String
    AllowedValues:
      - 'true'
      - 'false'
    Default: 'true'

2.    Verweisen Sie in der Startkonfiguration Ihrer Vorlage auf den Toggle-Parameter in der Eigenschaft UserData und starten Sie dann Ihren Stack. Sehen Sie sich die folgenden JSON- und YAML-Beispiele an.

JSON:

"LaunchConfig" : {
  "Type" : "AWS::AutoScaling::LaunchConfiguration",
  "Properties" : {
     "ImageId" : { "Ref" : "ImageID" },
     "UserData" : { "Fn::Base64" : { "Ref" : "Toggle" }
         ...
         ...
     },        
  "InstanceType" : { "Ref" : "Type" }
  }
}

YAML:

LaunchConfig:
  Type: 'AWS::AutoScaling::LaunchConfiguration'
  Properties:
    ImageId: !Ref ImageID
    UserData:
      'Fn::Base64': !Ref Toggle
      ...
      ...
    InstanceType: !Ref Type

Wichtig: Um fortlaufende Aktualisierungen zu initiieren, wenn Sie Ihren Stack aktualisieren, ändern Sie den Wert des Parameters von true auf false oder von false auf true, je nach der ursprünglichen Einstellung.

Hinweis: Sie können die Toggle-Parameter-Lösung für Eigenschaften verwenden, bei denen ein Update ersetzt werden muss, wie z. B. LaunchConfigurationName, und für Ressourcen wie AWS::EC2::LaunchTemplate.


AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren