Wie initiiere ich fortlaufende Updates für meine Auto Scaling-Gruppe, wenn keine Änderungen an der Startvorlage in CloudFormation vorgenommen werden?

Lesedauer: 2 Minute
0

Ich möchte fortlaufende Updates in meiner Auto-Scaling-Gruppe in der Amazon Elastic Compute Cloud (Amazon EC2) bei jeder Aktualisierung des AWS CloudFormation-Stacks. Ich möchte die Startvorlage nicht jedes Mal ändern.

Lösung

Verwenden Sie das Attribut UpdatePolicy, um fortlaufende Updates für eine Auto-Scaling-Gruppe zu initiieren.

Es hat sich bewährt, in der Startkonfiguration der CloudFormation-Vorlage das Parameter Umschalten in der Eigenschaft UserData Ihres Ressourcentyps AWS::EC2::LaunchTemplate zu referenzieren. Wenn Sie den Wert Umschalten während einer Stack-Aktualisierung ändern, beispielsweise von wahr in falsch, ändern Sie die Eigenschaft UserData. Diese Aktion veranlasst CloudFormation, eine neue Version der Startvorlage zu erstellen.

Bei der folgenden Lösung wird davon ausgegangen, dass Sie die AutoScalingRollingUpdate-Richtlinie für die Auto-Scaling-Gruppe konfiguriert haben und dass Sie die Auto-Scaling-Gruppe so konfiguriert haben, dass sie AWS::EC2::LaunchTemplate referenziert.

Wichtig: Stellen Sie sicher, dass Sie andere Elemente in der Eigenschaft UserData nicht stören, wenn Sie der Vorlage den Parameter Umschalten hinzufügen.

Gehen Sie wie folgt vor, um fortlaufende Updates einzurichten:

  1. Definieren Sie in der CloudFormation-Vorlage Umschalten als einen Parameter.
    Geben Sie für eine JSON-Datei den folgenden Code ein:

        "Parameters": {
            "Toggle": {
                "Type": "String",
                "AllowedValues": [
                    "true",
                    "false"
                ],
                "Default": "true",
                "Description": "Toggle parameter to force ASG update"
            }
        }

    Geben Sie für eine YAML-Datei den folgenden Code ein:

    Parameters:
      Toggle:
        Type: String
        AllowedValues:
          - 'true'
          - 'false'
        Default: 'true'
        Description: 'Toggle parameter to force ASG update'
  2. Referenzieren Sie in der Startkonfiguration der Vorlage den Parameter Umschalten in der Eigenschaft UserData.
    Beispiel JSON:

            "LaunchTemplate": {
                "Type": "AWS::EC2::LaunchTemplate",
                "Properties": {
                    "LaunchTemplateData": {
                        "ImageId": { "Ref": "ImageId" },
                        "UserData": {
                            "Fn::Base64": {
                                "Fn::Join": [
                                    "",
                                    [
                                        "#!/bin/bash\n",
                                        "echo \"Toggle parameter is set to ",
                                        {
                                            "Ref": "Toggle"
                                        },
                                        "\"\n"
                                        ...
                                        ...
                                    ]
                                ]
                            }
                        },
                        "InstanceType": { "Ref": "InstanceType" }
                    }
                }

    Beispiel YAML:

      LaunchTemplate:
        Type: AWS::EC2::LaunchTemplate
        Properties:
          LaunchTemplateData:
            ImageId: !Ref ImageId
            UserData:
              Fn::Base64:
                !Sub |
                  #!/bin/bash
                  echo "Toggle parameter is set to ${Toggle}"
                  ...
                  ...
            InstanceType: !Ref InstanceType
  3. Erstellen Sie Ihren Stack.

  4. Um fortlaufende Updates zu starten, ändern Sie den Wert des Parameters Umschalten je nach aktueller Einstellung von wahr in falsch oder von falsch in wahr.

Hinweis: Sie können die vorstehende Lösung auch für Eigenschaften verwenden, für die ein Update einen Ersatz erfordert, wie z. B. LaunchTemplateName.

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 3 Monaten