Verwenden von Lebenszyklus-Hooks mit einem Warm Pool - 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.

Verwenden von Lebenszyklus-Hooks mit einem Warm Pool

Instances in einem Warm Pool verwalten ihren eigenen, unabhängigen Lebenszyklus, um Ihnen bei der Erstellung der entsprechenden benutzerdefinierten Aktion für jeden Übergang zu helfen. Dieser Lebenszyklus soll Ihnen helfen, Aktionen in einem Zielservice (z. B. einer Lambda-Funktion) aufzurufen, während eine Instance noch initialisiert wird und bevor sie in Betrieb genommen wird.

Anmerkung

Die API-Vorgänge, die Sie zum Hinzufügen und Verwalten von Lebenszyklus-Hooks und zum Abschließen von Lebenszyklusaktionen verwenden, werden nicht geändert. Nur der Instance-Lebenszyklus wird geändert.

Weitere Informationen über das Hinzufügen von Lebenszyklus-Hooks finden Sie unter Lebenszyklus-Hooks hinzufügen. Weitere Informationen über das Abschließen einer Lebenszyklus-Aktion finden Sie unter Eine Lebenszyklus-Aktion abschließen.

Für Instances, die in den Warm Pool aufgenommen werden, benötigen Sie möglicherweise aus einem der folgenden Gründe einen Lebenszyklus-Hook:

  • Sie möchten EC2-Instances von einem AMI aus starten, dessen Initialisierung lange dauert.

  • Sie möchten Benutzerdatenskripte ausführen, um die EC2-Instances zu laden.

Für Instances, die den Warm Pool verlassen, benötigen Sie möglicherweise aus einem der folgenden Gründe einen Lebenszyklus-Hook:

  • Sie können etwas mehr Zeit gebrauchen, um EC2-Instances auf die Verwendung vorzubereiten. Sie haben möglicherweise Services, die gestartet werden müssen, wenn eine Instance neu gestartet wird, bevor Ihre Anwendung ordnungsgemäß funktionieren kann.

  • Sie möchten Cache-Daten vorab ausfüllen, um sicherzustellen, dass ein neuer Server nicht mit einem leeren Cache gestartet wird.

  • Sie möchten neue Instances als verwaltete Instances mit Ihrem Konfigurationsverwaltungsservice registrieren.

Lebenszyklusstatusübergänge für Instances in einem Warm Pool

Eine Instance mit automatischer Skalierung kann im Verlauf ihres Lebenszyklus in verschiedene Status übergehen.

Im folgenden Diagramm wird der Übergang zwischen Status für automatische Skalierung veranschaulicht, wenn Sie einen Warm Pool verwenden:

Die Lebenszyklusstatusübergänge für Instances in einem Warm-Pool.

¹ Dieser Status variiert je nach Einstellung des Pool-Status des Warm Pools. Wenn der Pool-Status auf Running gesetzt ist, ist dieser Status stattdessen Warmed:Running. Wenn der Pool-Status auf Hibernated gesetzt ist, ist dieser Status stattdessen Warmed:Hibernated.

Berücksichtigen Sie beim Hinzufügen von Lebenszyklus-Hooks Folgendes:

  • Wenn ein Lebenszyklus-Hook für die autoscaling:EC2_INSTANCE_LAUNCHING-Lebenszyklusaktion konfiguriert ist, wird eine neu gestartete Instance zunächst angehalten, um eine benutzerdefinierte Aktion auszuführen, wenn sie den Warmed:Pending:Wait-Zustand erreicht, und dann erneut, wenn die Instance neu gestartet wird und den Pending:Wait-Zustand erreicht.

  • Wenn ein Lebenszyklus-Hook für die EC2_INSTANCE_TERMINATING-Lebenszyklusaktion konfiguriert ist, wird eine beendende Instance angehalten, um eine benutzerdefinierte Aktion auszuführen, wenn sie den Terminating:Wait-Zustand erreicht. Wenn Sie jedoch eine Richtlinie für die Wiederverwendung von Instances so festlegen, dass Instances bei der Abwärtsskalierung in den Warm-Pool zurückgeführt werden, anstatt sie zu beenden, dann wird eine Instanz, die in den Warm-Pool zurückkehrt, angehalten, um eine benutzerdefinierte Aktion im Warmed:Pending:Wait-Zustand für die EC2_INSTANCE_TERMINATING-Lebenszyklusaktion durchzuführen.

  • Wenn die Nachfrage nach Ihrer Anwendung den Warm Pool leert, kann Amazon EC2 Auto Scaling Instances direkt in der Auto-Scaling-Gruppe starten, sofern die Gruppe ihre maximale Kapazität noch nicht erreicht hat. Wenn die Instances direkt in der Gruppe gestartet werden, werden sie nur angehalten, um eine benutzerdefinierte Aktion im Pending:Wait-Zustand auszuführen.

  • Um zu steuern, wie lange eine Instance in einem Wartezustand verbleibt, bevor sie in den nächsten Status übergeht, konfigurieren Sie Ihre benutzerdefinierte Aktion so, dass sie den complete-lifecycle-action-Befehl verwendet. Mit Lebenszyklus-Hooks bleiben Instances in einem Wartezustand, bis Sie Amazon EC2 Auto Scaling benachrichtigen, dass die angegebene Lebenszyklusaktion abgeschlossen ist, oder bis eine Zeitüberschreitung auftritt (standardmäßig eine Stunde).

Im Folgenden wird der Ablauf für ein Aufskalierungsereignis zusammengefasst.

Ein Swimlane-Diagramm von einem Aufskalierungsereignis.

Wenn Instances einen Wartezustand erreichen, sendet Amazon EC2 Auto Scaling eine Benachrichtigung. Beispiele für diese Benachrichtigungen finden Sie im EventBridge Abschnitt dieses Handbuchs. Weitere Informationen finden Sie unter Beispielereignisse und -muster in einem warmen Pool.

Unterstützte Benachrichtigungsziele

Amazon EC2 Auto Scaling bietet Unterstützung bei der Definition einer der folgenden Optionen als Benachrichtigungsziele für Lebenszyklusbenachrichtigungen:

  • EventBridge Regeln

  • Amazon SNS-Themen

  • Amazon SQS-Warteschlangen

Wichtig

Denken Sie daran: Wenn Sie ein Benutzerdatenskript in Ihrer Startvorlage oder Startkonfiguration haben, das Ihre Instances beim Start konfiguriert, müssen Sie keine Benachrichtigungen erhalten, um benutzerdefinierte Aktionen für Instances auszuführen, die gestartet oder neu gestartet werden.

Die folgenden Abschnitte enthalten Links zur Dokumentation, in der beschrieben wird, wie Benachrichtigungsziele konfiguriert werden:

EventBridge Regeln: Um Code auszuführen, wenn Amazon EC2 Auto Scaling eine Instance in einen Wartestatus versetzt, können Sie eine EventBridge Regel erstellen und eine Lambda-Funktion als Ziel angeben. Um verschiedene Lambda-Funktionen basierend auf verschiedenen Lebenszyklusbenachrichtigungen aufzurufen, können Sie mehrere Regeln erstellen und jede Regel einem bestimmten Ereignismuster und einer Lambda-Funktion zuordnen. Weitere Informationen finden Sie unter Erstellen Sie EventBridge Regeln für Ereignisse im warmen Pool.

Amazon-SNS-Themen: Um eine Benachrichtigung zu erhalten, wenn eine Instance in einen Wartestatus versetzt wird, erstellen Sie ein Amazon-SNS-Thema und richten Sie dann die Amazon-SNS-Nachrichtenfilterung ein, um unterschiedliche Lebenszyklusbenachrichtigungen basierend auf dem Nachrichtenattribut zu liefern. Weitere Informationen finden Sie unter Benachrichtigungen über Amazon SNS erhalten.

Amazon-SQS-Warteschlangen: Um einen Bereitstellungspunkt für Lebenszyklusbenachrichtigungen einzurichten, an dem ein relevanter Verbraucher sie abholen und verarbeiten kann, können Sie eine Amazon-SQS-Warteschlange und einen Warteschlangenverbraucher erstellen, der Nachrichten aus der SQS-Warteschlange verarbeitet. Wenn der Warteschlangenverbraucher Lebenszyklusbenachrichtigungen basierend auf einem Nachrichtenattribut unterschiedlich verarbeiten soll, müssen Sie auch den Warteschlangenverbraucher so einrichten, dass er die Nachricht analysiert und dann auf die Nachricht reagiert, wenn ein bestimmtes Attribut dem gewünschten Wert entspricht. Weitere Informationen finden Sie unter Benachrichtigungen über Amazon SQS erhalten.