Fügen Sie Lifecycle-Hooks zu Ihrer Auto Scaling Scaling-Gruppe hinzu - Amazon EC2 Auto Scaling

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Fügen Sie Lifecycle-Hooks zu Ihrer Auto Scaling Scaling-Gruppe hinzu

Um Ihre Instances mit automatischer Skalierung in einen Wartezustand zu versetzen und benutzerdefinierte Aktionen für sie durchzuführen, können Sie Ihrer Auto-Scaling-Gruppe Lebenszyklus-Hooks hinzufügen. Benutzerdefinierte Aktionen werden beim Start der Instances oder vor dem Beenden ausgeführt. Die Instances bleiben in einem Wartezustand, bis Sie entweder die Lebenszyklusaktion beenden oder der Timeout-Zeitraum endet.

Nachdem Sie aus der eine Auto Scaling Scaling-Gruppe erstellt haben AWS Management Console, können Sie ihr einen oder mehrere Lifecycle-Hooks hinzufügen, bis zu insgesamt 50 Lifecycle-Hooks. Sie können auch das AWS CLI, oder ein SDK verwenden AWS CloudFormation, um einer Auto Scaling Scaling-Gruppe Lifecycle-Hooks hinzuzufügen, während Sie sie erstellen.

Wenn Sie einen Lifecycle-Hook in der Konsole hinzufügen, sendet Amazon EC2 Auto Scaling standardmäßig Lebenszyklusereignisbenachrichtigungen an Amazon EventBridge. Die Verwendung EventBridge eines Benutzerdatenskripts ist eine empfohlene bewährte Methode. Um einen Lifecycle-Hook zu erstellen, der Benachrichtigungen direkt an Amazon SNS oder Amazon SQS sendet, können Sie den put-lifecycle-hookBefehl verwenden, wie in den Beispielen in diesem Thema gezeigt.

Lebenszyklus-Hooks hinzufügen (Konsole)

Gehen Sie folgendermaßen vor, um Ihrer Auto-Scaling-Gruppe einen Lebenszyklus-Hook hinzuzufügen. Um Lebenszyklus-Hooks zum Aufskalieren (Starten von Instances) und Abskalieren (Beenden von Instances oder bei der Rückkehr zu einem warmen Pool) zu erstellen, müssen Sie zwei separate Hooks erstellen.

Bevor Sie beginnen, vergewissern Sie sich, dass Sie bei Bedarf eine benutzerdefinierte Aktion eingerichtet haben, wie unter Vorbereiten des Hinzufügens eines Lebenszyklus-Hook zu einer Auto-Scaling-Gruppe beschrieben.

So fügen Sie einen Lebenszyklus-Hook für das Aufskalieren hinzu
  1. Öffnen Sie die Amazon-EC2-Konsole unter https://console.aws.amazon.com/ec2/ und wählen Sie im Navigationsbereich Auto Scaling Groups (Auto-Scaling-Gruppen) aus.

  2. Aktivieren Sie das Kontrollkästchen neben Ihrer Auto-Scaling-Gruppe. Im unteren Teil der Seite wird ein geteilter Bereich geöffnet.

  3. Wählen Sie auf der Registerkarte Instance management (Instance-Verwaltung) unter Lebenszyklus-Hooks die Option Create Lebenszyklus hook (Lebenszyklus-Hook erstellen) aus.

  4. Gehen Sie wie folgt vor, um einen Lebenszyklus-Hook zum Aufskalieren (Start von Instances) zu definieren:

    1. Geben Sie bei Lebenszyklus hook name (Name des Lebenszyklus-Hooks) einen Namen für den Lebenszyklus-Hook an.

    2. Wählen Sie bei Lifecycle Transition (Lebenszykluswechsel) die Option Instance launch (Instance-Start) aus.

    3. Geben Sie für Heartbeat-Zeitüberschreitung die Zeitspanne in Sekunden an, für die Instances in einem Wartezustand verbleiben sollen, wenn Sie aufskalieren, bevor die Zeitüberschreitung des Hook erreicht ist. Der Bereich liegt zwischen 30 und 7200 Sekunden. Das Festlegen eines langen Timeout-Zeitraums bietet mehr Zeit für den Abschluss der benutzerdefinierten Aktion. Wenn Sie dann vor Ablauf des Timeout-Zeitraums fertig sind, senden Sie den complete-lifecycle-actionBefehl, damit die Instance zum nächsten Status übergehen kann.

    4. Definieren Sie für ein Default result (Standardergebnis) die Aktion, die ausgeführt werden soll, wenn für den Lebenszyklus-Hook eine Zeitüberschreitung oder ein unerwarteter Fehler auftritt. Sie können entweder FORTSETZEN oder ABBRUCH auswählen.

      • Wenn Sie FORTSETZEN wählen, kann die Auto-Scaling-Gruppe mit allen anderen Lebenszyklus-Hooks fortfahren und die Instance dann in Betrieb nehmen.

      • Wenn Sie ABBRUCH wählen, beendet die Auto-Scaling-Gruppe alle verbleibenden Aktionen und beendet die Instance sofort.

    5. (Optional) Geben Sie bei Benachrichtigungsmetadaten die weiteren Informationen an, die Sie hinzufügen möchten, wenn Amazon EC2 Auto Scaling eine Nachricht an das Benachrichtigungsziel sendet.

  5. Wählen Sie Erstellen.

So fügen Sie einen Lebenszyklus-Hook für das Abskalieren hinzu
  1. Wählen Sie Lebenszyklus-Hook erstellen, um dort weiterzumachen, wo Sie aufgehört haben, nachdem Sie einen Lebenszyklus-Hook für die horizontale Aufskalierung erstellt haben.

  2. Gehen Sie wie folgt vor, um einen Lebenszyklus-Hook für die Abskalierung zu definieren (Instances, die beendet werden oder zu einem warmen Pool zurückkehren):

    1. Geben Sie bei Lebenszyklus hook name (Name des Lebenszyklus-Hooks) einen Namen für den Lebenszyklus-Hook an.

    2. Wählen Sie bei Lifecycle Transition (Lebenszykluswechsel) die Option Instance Terminate (Instance-Beendigung) aus.

    3. Geben Sie für Heartbeat-Zeitüberschreitung die Zeitspanne in Sekunden an, für die Instances in einem Wartezustand verbleiben sollen, wenn Sie aufskalieren, bevor die Zeitüberschreitung des Hook erreicht ist. Wir empfehlen ein kurzes Timeout von 30 zwei 120 Sekunden, je nachdem, wie viel Zeit Sie für die Ausführung der letzten Aufgaben benötigen, wie z. B. das Abrufen von EC2-Protokollen. CloudWatch

    4. Geben Sie als Default Result (Standardergebnis) die Aktion an, die von der Auto-Scaling-Gruppe ausführt wird, wenn für den Lebenszyklus-Hook ein Timeout oder ein unerwarteter Fehler auftritt. Sowohl ABANDON (ABBRUCH) als auch CONTINUE (FORTSETZEN) ermöglichen das Beenden der Instance.

      • Wenn Sie CONTINUE (FORTSETZEN) wählen, kann die Auto-Scaling-Gruppe vor der Beendigung alle verbleibenden Aktionen, z. B. andere Lebenszyklus-Hooks, ausführen.

      • Wenn Sie ABBRUCH wählen, beendet die Auto-Scaling-Gruppe die Instance sofort.

    5. (Optional) Geben Sie bei Benachrichtigungsmetadaten die weiteren Informationen an, die Sie hinzufügen möchten, wenn Amazon EC2 Auto Scaling eine Nachricht an das Benachrichtigungsziel sendet.

  3. Wählen Sie Erstellen.

Hinzufügen von Lebenszyklus-Hooks (AWS CLI)

Erstellen und aktualisieren Sie Lifecycle-Hooks mit dem put-lifecycle-hookBefehl.

Verwenden Sie den folgenden Befehl zum Ausführen einer Aktion bei einer horizontalen Skalierung nach oben:

aws autoscaling put-lifecycle-hook --lifecycle-hook-name my-launch-hook \ --auto-scaling-group-name my-asg \ --lifecycle-transition autoscaling:EC2_INSTANCE_LAUNCHING

Verwenden Sie hingegen den folgenden Befehl, um bei einer horizontalen Skalierung nach unten eine Aktion durchzuführen:

aws autoscaling put-lifecycle-hook --lifecycle-hook-name my-termination-hook \ --auto-scaling-group-name my-asg \ --lifecycle-transition autoscaling:EC2_INSTANCE_TERMINATING

Um Benachrichtigungen mit Amazon SNS oder Amazon SQS zu empfangen, fügen Sie die Optionen --notification-target-arn und --role-arn hinzu.

Im folgenden Beispiel wird ein Lebenszyklus-Hook erstellt, der ein SNS-Thema mit dem Namen my-sns-topic als Benachrichtigungsziel definiert.

aws autoscaling put-lifecycle-hook --lifecycle-hook-name my-termination-hook \ --auto-scaling-group-name my-asg \ --lifecycle-transition autoscaling:EC2_INSTANCE_TERMINATING \ --notification-target-arn arn:aws:sns:region:123456789012:my-sns-topic \ --role-arn arn:aws:iam::123456789012:role/my-notification-role

Das Thema erhält eine Testbenachrichtigung mit dem folgenden Schlüssel-Wert-Paar:

"Event": "autoscaling:TEST_NOTIFICATION"

Standardmäßig erstellt der put-lifecycle-hookBefehl einen Lifecycle-Hook mit einem Heartbeat-Timeout von 3600 Sekunden (eine Stunde).

Um das Heartbeat-Timeout für einen vorhandenen Lebenszyklus-Hook zu ändern, fügen Sie die Option --heartbeat-timeout hinzu, wie im folgenden Beispiel gezeigt.

aws autoscaling put-lifecycle-hook --lifecycle-hook-name my-termination-hook \ --auto-scaling-group-name my-asg --heartbeat-timeout 120

Wenn sich eine Instance bereits im Wartestatus befindet, können Sie verhindern, dass der Lifecycle-Hook das Timeout überschreitet, indem Sie mit dem record-lifecycle-action-heartbeatCLI-Befehl einen Heartbeat aufzeichnen. Diese erweitert die Zeitüberschreitung um den Zeitüberschreitungswert, den Sie bei der Erstellung des Lebenszyklus-Hooks festgelegt haben. Wenn Sie vor Ablauf des Timeout-Zeitraums fertig sind, können Sie den complete-lifecycle-actionCLI-Befehl senden, damit die Instance zum nächsten Status übergehen kann. Weitere Informationen und Beispiele finden Sie unter Eine Lebenszyklusaktion in einer Auto Scaling Scaling-Gruppe abschließen.