

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.

# Lebenszyklus-Hooks bei Amazon EC2 Auto Scaling
<a name="lifecycle-hooks"></a>

Amazon EC2 Auto Scaling bietet die Möglichkeit, Lebenszyklus-Hooks zu Ihren Auto-Scaling-Gruppen hinzuzufügen. Mit diesen Hooks können Sie Lösungen erstellen, die Ereignisse im Lebenszyklus von Auto-Scaling-Instances erkennen und dann eine benutzerdefinierte Aktion auf Instances ausführen, wenn das entsprechende Lebenszyklusereignis eintritt. Ein Lebenszyklus-Hook gibt eine bestimmte Zeitspanne vor (standardmäßig eine Stunde), in der auf den Abschluss der Aktion gewartet wird, bevor die Instance in den nächsten Zustand übergeht.

Als Beispiel für die Verwendung von Lebenszyklus-Hooks mit Auto-Scaling-Instances: 
+ Wenn ein horizontales Skalierungsereignis auftritt, schließt die neu gestartete Instance ihre Startsequenz ab und wechselt in einen Wartezustand. Während sich die Instance in einem Wartestatus befindet, können Sie auf ein Skript ausführen, um die erforderlichen Softwarepakete für Ihre Anwendung herunterzuladen und zu installieren. Stellen Sie dabei sicher, dass Ihre Instance vollständig bereit ist, bevor sie mit dem Empfang von Datenverkehr beginnt. Wenn das Skript die Installation der Software abgeschlossen hat, sendet es den **complete-lifecycle-action**-Befehl, um fortzufahren.
+ Wenn ein Scale-In-Ereignis eintritt, pausiert ein Lifecycle-Hook die Instance, bevor sie beendet wird, und sendet Ihnen eine Benachrichtigung über Amazon. EventBridge Während sich die Instance im Wartestatus befindet, können Sie eine AWS Lambda Funktion aufrufen oder eine Verbindung zur Instance herstellen, um Protokolle oder andere Daten herunterzuladen, bevor die Instance vollständig beendet wird. 

Eine beliebte Verwendung von Lebenszyklus-Hooks besteht darin, zu steuern, wann Instances bei Elastic Load Balancing registriert werden. Wenn Sie Ihrer Auto-Scaling-Gruppe einen Start-Lebenszyklus-Hook hinzufügen, können Sie sicherstellen, dass Ihre Bootstrap-Skripte erfolgreich abgeschlossen wurden und die Anwendungen auf den Instances bereit sind, Datenverkehr anzunehmen, bevor sie am Ende des Lebenszyklus-Hooks beim Load Balancer registriert werden.

**Topics**
+ [Verfügbarkeit von Lebenszyklus-Hooks](#lifecycle-hooks-availability)
+ [Überlegungen und Einschränkungen](#lifecycle-hook-considerations)
+ [Zugehörige Ressourcen](#lifecycle-hook-related-resources)
+ [So funktionieren Lifecycle-Hooks in Auto Scaling Scaling-Gruppen](lifecycle-hooks-overview.md)
+ [Vorbereiten des Hinzufügens eines Lebenszyklus-Hook](prepare-for-lifecycle-notifications.md)
+ [Steuern Sie die Aufbewahrung von Instances mit Richtlinien für den Instance-Lebenszyklus](instance-lifecycle-policy.md)
+ [Abrufen des Ziellebenszyklus-Status](retrieving-target-lifecycle-state-through-imds.md)
+ [Fügen Sie Lifecycle-Hooks zu Ihrer Auto Scaling Scaling-Gruppe hinzu](adding-lifecycle-hooks.md)
+ [Eine Lebenszyklusaktion in einer Auto Scaling Scaling-Gruppe abschließen](completing-lifecycle-hooks.md)
+ [Tutorial: Verwenden Sie Instanz-Metadaten, um den Lebenszyklusstatus abzurufen](tutorial-lifecycle-hook-instance-metadata.md)
+ [Tutorial: Konfigurieren eines Lebenszyklus-Hook, der eine Lambda-Funktion aufruft](tutorial-lifecycle-hook-lambda.md)

## Verfügbarkeit von Lebenszyklus-Hooks
<a name="lifecycle-hooks-availability"></a>

In der folgenden Tabelle finden Sie die Lebenszyklus-Hooks, die für verschiedene Szenarien verfügbar sind


| Veranstaltung | Instance-Start oder -Beendigung¹ | [Maximale Instance-Lebensdauer](asg-max-instance-lifetime.md): Ersatz-Instances | [Instance-Aktualisierung](asg-instance-refresh.md): Ersatz-Instances | [Kapazitätsausgleich](ec2-auto-scaling-capacity-rebalancing.md): Ersatz-Instances | [Warm-Pools](ec2-auto-scaling-warm-pools.md): Instances, die den Warm-Pool betreten und verlassen | 
| --- | --- | --- | --- | --- | --- | 
| Startende Instance | ✓ | ✓ | ✓ | ✓ | ✓ | 
| Endende Instance | ✓ | ✓ | ✓ | ✓ | ✓ | 

¹ Gilt für alle Starts und Beendigungen, unabhängig davon, ob sie automatisch oder manuell eingeleitet werden, z. B. wenn Sie die Optionen `SetDesiredCapacity` oder `TerminateInstanceInAutoScalingGroup` aufrufen. Gilt nicht, wenn Sie Instances zuordnen oder trennen, Instances in den Standby-Modus verschieben oder die Gruppe mit der Option „Löschen erzwingen“ löschen.

## Überlegungen zu und Einschränkungen für Lebenszyklus-Hooks
<a name="lifecycle-hook-considerations"></a>

Bei der Arbeit mit Lebenszyklus-Hooks sind die folgenden Hinweise und Einschränkungen zu beachten:
+ Amazon EC2 Auto Scaling bietet einen eigenen Lebenszyklus, der die Verwaltung von Auto-Scaling-Gruppen unterstützt. Dieser Lebenszyklus unterscheidet sich von dem anderer EC2-Instances. Weitere Informationen finden Sie unter [Instance-Lebenszyklus bei Amazon EC2 Auto Scaling](ec2-auto-scaling-lifecycle.md). Instances in einem Warm Pool haben auch einen eigenen Lebenszyklus, wie unter [Lebenszyklusstatusübergänge für Instances in einem Warm Pool](warm-pool-instance-lifecycle.md#lifecycle-state-transitions) beschrieben.
+  Standardmäßig werden Termination-Lifecycle-Hooks nach bestem Wissen und Gewissen ausgeführt. Wenn bei einem Terminierungs-Lifecycle-Hook eine Zeitüberschreitung eintritt oder abgebrochen wird, beendet Amazon EC2 Auto Scaling die Instance sofort. Sie können die Termination Lifecycle-Hooks mit einer Instance-Lifecycle-Richtlinie für die Aufbewahrung von Instances kombinieren. Weitere Informationen finden Sie unter [Steuern Sie die Aufbewahrung von Instances mit Richtlinien für den Instance-Lebenszyklus](instance-lifecycle-policy.md). 
+ Sie können Lebenszyklus-Hooks mit Spot-Instances verwenden, aber ein Lebenszyklus-Hook kann nicht verhindern, dass eine Instance beendet wird, wenn keine Kapazität mehr verfügbar ist, was jederzeit innerhalb eines zweiminütigen Unterbrechungshinweises passieren kann. Weitere Informationen finden Sie unter [Spot-Instance-Unterbrechungen](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-interruptions.html) im *Amazon EC2 EC2-Benutzerhandbuch*. Sie können jedoch den Kapazitätsausgleich aktivieren, um Spot-Instances proaktiv zu ersetzen, die eine Neuausgleichsempfehlung vom Amazon-EC2-Spot-Service erhalten haben, ein Signal, das gesendet wird, wenn eine Spot-Instance einem erhöhten Unterbrechungsrisiko ausgesetzt ist. Weitere Informationen finden Sie unter [Kapazitätsausgleich bei Auto Scaling als Ersatz für gefährdete Spot-Instances](ec2-auto-scaling-capacity-rebalancing.md).
+ Instances können eine begrenzte Zeit lang in einem Wartestatus verbleiben. Das Standard-Timeout für einen Lebenszyklus-Hook beträgt eine Stunde (Heartbeat-Timeout). Es gibt auch ein globales Timeout, das die maximale Zeitspanne angibt, für die Sie eine Instance in einem Wartestatus belassen können. Das globale Timeout beträgt 48 Stunden bzw. das 100-fache der Heartbeat-Zeitüberschreitung, je nachdem, welcher Wert kleiner ist.
+ Das Ergebnis des Lebenszyklus-Hooks kann entweder Abbrechen oder Fortsetzen sein. Wenn eine Instance gestartet wird, zeigt „Continue“ (Fortfahren) an, dass Ihre Aktionen erfolgreich waren und dass Amazon EC2 Auto Scaling die Instance in Betrieb nehmen kann. Andernfalls zeigt „Abandon“ (Abbruch) an, dass die benutzerdefinierten Aktionen fehlgeschlagen sind, und wir die Instance beenden und diese ersetzen können. Wenn die Instance beendet wird, erlauben sowohl „Abbrechen“ als auch „Fortfahren“ das Beenden der Instance. Allerdings stoppt „Abbrechen“ alle verbleibenden Aktionen, z. B. andere Lebenszyklus-Hooks, und „Fortfahren“ ermöglicht das Abschließen anderer Lebenszyklus-Hooks.
+ Amazon EC2 Auto Scaling begrenzt die Rate, mit der Instances gestartet werden können, wenn die Lebenszyklus-Hooks konsistent fehlschlagen. Testen und Beheben Sie daher alle dauerhaften Fehler in Ihren Lebenszyklus-Aktionen. 
+ Das Erstellen und Aktualisieren von Lifecycle-Hooks mit dem AWS CLI CloudFormation, oder einem SDK bietet Optionen, die beim Erstellen eines Lifecycle-Hooks aus dem nicht verfügbar sind. AWS-Managementkonsole Beispielsweise wird das Feld zur Angabe des ARN eines SNS-Themas oder einer SQS-Warteschlange nicht in der Konsole angezeigt, da Amazon EC2 Auto Scaling bereits Ereignisse an Amazon sendet. EventBridge Diese Ereignisse können gefiltert und nach Bedarf an AWS Dienste wie Lambda, Amazon SNS und Amazon SQS umgeleitet werden.
+ Sie können einer Auto Scaling Scaling-Gruppe während der Erstellung mehrere Lifecycle-Hooks hinzufügen, indem Sie die [CreateAutoScalingGroup](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_CreateAutoScalingGroup.html)API mit dem AWS CLI CloudFormation, oder einem SDK aufrufen. Jeder Hook muss jedoch das gleiche Benachrichtigungsziel und die gleiche IAM-Rolle haben, falls angegeben. Um Lifecycle-Hooks mit unterschiedlichen Benachrichtigungszielen und unterschiedlichen Rollen zu erstellen, erstellen Sie die Lifecycle-Hooks nacheinander in separaten Aufrufen der [PutLifecycleHook](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_PutLifecycleHook.html)API. 
+ Wenn Sie zum Beispiel einen Lebenszyklus-Hook für den Instance-Start hinzufügen, beginnt die Übergangsfrist für die Zustandsprüfung, sobald die Instance den Status `InService` erreicht hat. Weitere Informationen finden Sie unter [Legen Sie die Wartefrist für die Zustandsprüfung einer Auto-Scaling-Gruppe fest](health-check-grace-period.md).

**Überlegungen zur Skalierung**
+ Dynamische Skalierungsrichtlinien werden als Reaktion auf CloudWatch metrische Daten wie CPU und Netzwerk-I/O, die über mehrere Instanzen hinweg aggregiert werden, nach innen und außen skaliert. Beim Skalieren zählt Amazon EC2 Auto Scaling eine neue Instance nicht sofort zu den aggregierten Instance-Metriken der Auto-Scaling-Gruppe. Es wartet, bis die Instance den Status `InService` erreicht hat und der Instance-Warmup abgeschlossen ist. Weitere Informationen finden Sie unter [Leistungsaspekte der Skalierung](ec2-auto-scaling-default-instance-warmup.md#scaling-performance-considerations) im Thema Aufwärmen der Standard-Instance. 
+ Beim Skalieren spiegeln die aggregierten Instance-Metriken möglicherweise nicht sofort die Entfernung einer beendeten Instance wider. Die terminierende Instance wird nicht mehr zu den aggregierten Instance-Metriken der Gruppe gezählt, kurz nachdem der Amazon EC2 Auto Scaling Terminierungsworkflow beginnt. 
+ In den meisten Fällen, in denen Lebenszyklus-Hooks aufgerufen werden, werden die Skalierungsaktivitäten aufgrund einfacher Skalierungsrichtlinien angehalten, bis die Lifecycle-Aktionen abgeschlossen sind und die Ruhephase abgelaufen ist. Bei einem Festlegen eines langen Intervalls für die Ruhephase dauert es länger, bis die Skalierung fortgesetzt werden kann. Weitere Informationen finden Sie unter [Lebenszyklus-Hooks können zusätzliche Verzögerungen verursachen](ec2-auto-scaling-scaling-cooldowns.md#cooldowns-lifecycle-hooks) im Thema Ruhephase. Im Allgemeinen empfehlen wir, keine einfachen Skalierungsrichtlinien zu verwenden, wenn Sie stattdessen entweder eine Stufenskalierung oder eine Zielverfolgungsskalierungs-Richtlinie verwenden können.

## Zugehörige Ressourcen
<a name="lifecycle-hook-related-resources"></a>

Ein Einführungsvideo finden Sie unter [AWS re:Invent 2018: Capacity Management Made Easy with Amazon EC2 Auto](https://youtu.be/PideBMIcwBQ?t=469) Scaling on. *YouTube*

Wir stellen einige JSON- und YAML-Vorlagenausschnitte zur Verfügung, anhand derer Sie verstehen können, wie Sie Lifecycle-Hooks in Ihren Stack-Vorlagen deklarieren. CloudFormation *Weitere Informationen finden Sie in der [AWS::AutoScaling::LifecycleHook](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-autoscaling-lifecyclehook.html)Referenz im AWS CloudFormation Benutzerhandbuch.*

Sie können auch unser [GitHubRepository](https://github.com/aws-samples/amazon-ec2-auto-scaling-group-examples) besuchen, um Beispielvorlagen und Benutzerdatenskripte für Lifecycle-Hooks herunterzuladen.

Beispiele für die Verwendung von Lebenszyklus-Hooks finden Sie in den folgenden Blog-Beiträgen. 
+ [Aufbau eines Backup-Systems für skalierte Instances mithilfe von Lambda und Amazon EC2 Run Command](https://aws.amazon.com/blogs/compute/building-a-backup-system-for-scaled-instances-using-aws-lambda-and-amazon-ec2-run-command/)
+ [Code vor dem Beenden einer EC2 Auto Scaling-Instance ausführen](https://aws.amazon.com/blogs/infrastructure-and-automation/run-code-before-terminating-an-ec2-auto-scaling-instance/).

# So funktionieren Lifecycle-Hooks in Auto Scaling Scaling-Gruppen
<a name="lifecycle-hooks-overview"></a>

Eine Amazon-EC2-Instance wechselt von dem Zeitpunkt, an dem sie gestartet wird, bis zu ihrer Beendigung durch verschiedene Status. Sie können benutzerdefinierte Aktionen für Ihre Auto-Scaling-Gruppe erstellen, die ausgeführt werden, wenn eine Instance aufgrund eines Lebenszyklus-Hooks in einen Wartezustand übergeht.

Die folgende Abbildung zeigt die Übergänge zwischen Auto Scaling Scaling-Instanzzuständen, wenn Sie Lifecycle-Hooks für Scale-Out und Scale-In verwenden. 

![\[Die Übergänge zwischen Auto Scaling Scaling-Instanzzuständen, wenn Sie Lifecycle-Hooks für Scaling-Out und Scale-In verwenden.\]](http://docs.aws.amazon.com/de_de/autoscaling/ec2/userguide/images/how-lifecycle-hooks-work.png)


Wie im obigen Diagramm gezeigt:

1. Die Auto-Scaling-Gruppe reagiert auf ein horizontales Skalierungsereignis und beginnt mit dem Starten einer Instance.

1. Der Lebenszyklus-Hook versetzt die Instance in einen Wartestatus (`Pending:Wait`) und führt dann eine benutzerdefinierte Aktion aus.

   Die Instance bleibt in einem Wartezustand, bis Sie entweder die Lebenszyklusaktion beenden oder der Timeout-Zeitraum endet. Standardmäßig verbleibt die Instance eine Stunde lang im Wartestatus, dann führt die Auto-Scaling-Gruppe den Start der Instance fort (`Pending:Proceed`). Wird mehr Zeit benötigt, können Sie die Zeit bis zur Zeitüberschreitung zurücksetzen, indem Sie eine Heartbeat-Benachrichtigung aufzeichnen. Wenn Sie die Lebenszyklusaktion bei Vollendung der benutzerdefinierten Aktion und bevor der Zeitüberschreitungszeitraums abgelaufen ist, abschließen, endet der Zeitraum und die Auto-Scaling-Gruppe setzt den Startvorgang fort.

1. Die Instance tritt in den `InService`-Zustand und die Kulanzfrist der Zustandsprüfung beginnt. Bevor die Instance jedoch den `InService`-Status erreicht, wird sie, wenn die Auto-Scaling-Gruppe einem Elastic Load Balancing zugeordnet ist, beim Load Balancer registriert, und der Load Balancer beginnt mit der Überprüfung seines Zustands. Nach Ablauf der Kulanzfrist für die Zustandsprüfung beginnt Amazon EC2 Auto Scaling, den Zustand der Instance zu prüfen.

1. Die Auto-Scaling-Gruppe reagiert auf ein horizontales Skalierungsereignis und beginnt mit dem Beenden einer Instance. Wenn die Auto-Scaling-Gruppe mit Elastic Load Balancing verwendet wird, wird die beendende Instance zunächst beim Load Balancer registriert. Wenn Connection Draining für den Load Balancer aktiviert ist, akzeptiert die Instance keine neuen Verbindungen und wartet darauf, dass vorhandene Verbindungen abgebaut werden, bevor die Registrierung abgeschlossen wird.

1. Der Lebenszyklus-Hook versetzt die Instance in einen Wartestatus (`Terminating:Wait`) und führt dann eine benutzerdefinierte Aktion aus.

   Die Instance bleibt in einem Wartezustand, bis Sie entweder die Lebenszyklusaktion beenden oder der Timeout-Zeitraum endet (standardmäßig eine Stunde). Nachdem Sie den Lebenszyklus-Hook abgeschlossen haben oder der Timeout-Zeitraum abläuft, wechselt die Instance in den nächsten Status (`Terminating:Proceed`).

1. Die Instance wurde beendet.

**Wichtig**  
Instances in einem Warm Pool haben auch einen eigenen Lebenszyklus mit entsprechenden Wartestatus, wie unter [Lebenszyklusstatusübergänge für Instances in einem Warm Pool](warm-pool-instance-lifecycle.md#lifecycle-state-transitions) beschrieben.

## Statusübergänge im Lebenszyklus von Instances, bei denen das Root-Volume ausgetauscht wird
<a name="rvr-lifecycle-state-transitions"></a>

Das folgende Diagramm zeigt den Übergang zwischen Auto Scaling Scaling-Instanzzuständen, wenn Sie Lifecycle-Hooks zum Ersetzen des Root-Volumes verwenden:

![\[Die Übergänge zwischen Auto Scaling Scaling-Instanzzuständen, wenn Sie Lifecycle-Hooks zum Ersetzen des Root-Volumes verwenden.\]](http://docs.aws.amazon.com/de_de/autoscaling/ec2/userguide/images/root-volume-replacement-lifecycle-states.png)


Wie im obigen Diagramm gezeigt:

1. Die Auto Scaling Scaling-Gruppe reagiert auf eine Instanzaktualisierung und wählt eine Instance für den Austausch des Root-Volumes aus. Die Instance wechselt in den `ReplacingRootVolume` Status. Wenn die Instance bei einem Load Balancer registriert ist, wird sie vom Load Balancer abgemeldet.

1. Der Lebenszyklus-Hook versetzt die Instance in einen Wartestatus (`ReplacingRootVolume:Wait`) und führt dann eine benutzerdefinierte Aktion aus. Die Instance bleibt in einem Wartezustand, bis Sie entweder die Lebenszyklusaktion beenden oder der Timeout-Zeitraum endet. Wenn Sie die Lebenszyklusaktion abschließen, wenn die benutzerdefinierte Aktion abgeschlossen ist und der Timeout-Zeitraum noch nicht abgelaufen ist, endet der Zeitraum und die Auto Scaling Scaling-Gruppe setzt den Austausch des Stammvolumes fort.

1. Die Instance schließt den Austausch des Root-Volumes ab und wechselt in den `RootVolumeReplaced` Status.

1. Die Instance wechselt in den `Pending` Status.

1. Der Lebenszyklus-Hook versetzt die Instance in einen Wartestatus (`Pending:Wait`) und führt dann eine benutzerdefinierte Aktion aus. Die Instance verbleibt im Wartestatus, entweder bis Sie die Lebenszyklusaktion abgeschlossen haben oder bis der Timeout-Zeitraum abgelaufen ist. Nachdem Sie den Lebenszyklus-Hook abgeschlossen haben oder der Timeout-Zeitraum abläuft, wechselt die Instance in den nächsten Status (`Pending:Proceed`).

1. Die Instanz wechselt in den `InService` Status. Wenn die Auto Scaling Scaling-Gruppe jedoch einem Elastic Load Balancing Load Balancer zugeordnet ist, bevor die Instance den `InService` Status erreicht, wird die Instance beim Load Balancer registriert.

# Vorbereiten des Hinzufügens eines Lebenszyklus-Hook zu einer Auto-Scaling-Gruppe
<a name="prepare-for-lifecycle-notifications"></a>

Stellen Sie sicher, dass Ihr Benutzerdatenskript oder Ihr Benachrichtigungsziel korrekt eingerichtet ist, bevor Sie Ihrer Auto-Scaling-Gruppe einen Lebenszyklus-Hook hinzufügen.
+ Um ein Benutzerdatenskript zu nutzen, um benutzerdefinierte Aktionen für Ihre Instances während des Starts auszuführen, müssen Sie kein Benachrichtigungsziel konfigurieren. Sie müssen jedoch bereits die Startvorlage oder die Startkonfiguration erstellt haben, die Ihr Benutzerdatenskript angibt und es Ihrer Auto-Scaling-Gruppe zuordnet. Weitere Informationen zu Benutzerdatenskripten finden Sie unter [Befehle auf Ihrer Linux-Instance beim Start ausführen](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html) im *Amazon EC2 EC2-Benutzerhandbuch*. 
+ Um Amazon EC2 Auto Scaling zu signalisieren, wenn die Lifecycle-Aktion abgeschlossen ist, müssen Sie den [CompleteLifecycleAction](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_CompleteLifecycleAction.html)API-Aufruf zum Skript hinzufügen und manuell eine IAM-Rolle mit einer Richtlinie erstellen, die es Auto Scaling-Instances ermöglicht, diese API aufzurufen. Ihre Startvorlage oder Startkonfiguration muss diese Rolle mithilfe eines IAM-Instance-Profils angeben, das beim Start an Ihre Amazon-EC2-Instances angehängt wird. Weitere Informationen erhalten Sie unter [Eine Lebenszyklusaktion in einer Auto Scaling Scaling-Gruppe abschließen](completing-lifecycle-hooks.md) und [IAM-Rollen für Anwendungen, die auf Amazon EC2-Instances ausgeführt werden](us-iam-role.md).
+ Damit Lambda Amazon EC2 Auto Scaling signalisieren kann, wenn die Lebenszyklusaktion abgeschlossen ist, müssen Sie den [CompleteLifecycleAction](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_CompleteLifecycleAction.html)API-Aufruf zum Funktionscode hinzufügen. Sie müssen auch eine IAM-Richtlinie an die Ausführungsrolle der Funktion angehängt haben, um Lambda die Berechtigung zum Vervollständigen von Lebenszyklus-Aktionen zu erteilen. Weitere Informationen finden Sie unter [Tutorial: Konfigurieren eines Lebenszyklus-Hook, der eine Lambda-Funktion aufruft](tutorial-lifecycle-hook-lambda.md).
+ Um einen Service wie Amazon SNS oder Amazon SQS zum Ausführen einer benutzerdefinierten Aktion verwenden zu können, müssen Sie bereits das SNS-Thema oder die SQS-Warteschlange erstellt haben und über den Amazon-Ressourcennamen (ARN) verfügen. Sie müssen auch bereits die IAM-Rolle erstellt haben, die Amazon EC2 Auto Scaling Zugriff auf Ihr SNS-Thema oder SQS-Ziel ermöglicht, und über deren ARN verfügen. Weitere Informationen finden Sie unter [Konfigurieren eines Benachrichtigungsziels für Lebenszyklus-Benachrichtigungen](#lifecycle-hook-notification-target). 
**Anmerkung**  
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, Amazon SQS oder sendet, verwenden Sie das AWS Lambda,, oder ein SDK AWS CLI AWS CloudFormation, um den Lifecycle-Hook hinzuzufügen.

## Konfigurieren eines Benachrichtigungsziels für Lebenszyklus-Benachrichtigungen
<a name="lifecycle-hook-notification-target"></a>

Sie können einer Auto-Scaling-Gruppe Lebenszyklus-Hooks hinzufügen, um benutzerdefinierte Aktionen auszuführen, wenn eine Instance in einen Wartestatus wechselt. Sie können einen Zielservice auswählen, der diese Aktionen abhängig von Ihrem bevorzugten Entwicklungsansatz ausführt.

Es gibt vier verschiedene Ansätze für die Implementierung von Benachrichtigungszielen für Lifecycle-Hooks:
+ **Amazon EventBridge** — Erhalten Sie die Benachrichtigungen und führen Sie die gewünschten Aktionen aus.
+ **Amazon Simple Notification Service (Amazon SNS)** — Erstellen Sie ein Thema für die Veröffentlichung von Benachrichtigungen. Kunden können das SNS-Thema abonnieren und veröffentlichte Nachrichten über ein unterstütztes Protokoll empfangen.
+ **Amazon Simple Queue Service (Amazon SQS)** — Tauschen Sie Nachrichten über ein Abfragemodell aus.
+ **AWS Lambda**— Rufen Sie eine Lambda-Funktion auf, die die gewünschte Aktion ausführt.

Als bewährte Methode empfehlen wir die Verwendung von EventBridge. Die an Amazon SNS und Amazon SQS gesendeten Benachrichtigungen enthalten dieselben Informationen wie die Benachrichtigungen, an die Amazon EC2 Auto Scaling sendet. EventBridge Bisher bestand die Standardpraxis darin EventBridge, eine Benachrichtigung an SNS oder SQS zu senden und einen anderen Service in SNS oder SQS zu integrieren, um programmatische Aktionen durchzuführen. Heute stehen EventBridge Ihnen mehr Optionen zur Verfügung, auf welche Dienste Sie abzielen können, und erleichtert die Verarbeitung von Ereignissen mithilfe einer serverlosen Architektur. 

Denken Sie daran: Wenn Sie über ein Benutzerdatenskript in Ihrer Startvorlage- oder Startkonfiguration verfügen, das Ihre Instances beim Starten konfiguriert, müssen Sie keine Benachrichtigungen erhalten, um benutzerdefinierte Aktionen für Ihre Instances auszuführen.

In den folgenden Verfahren wird beschrieben, wie Sie Ihr Benachrichtigungsziel einrichten.

**Topics**
+ [Benachrichtigungen an Lambda weiterleiten mit EventBridge](#cloudwatch-events-notification)
+ [Benachrichtigungen über Amazon SNS erhalten](#sns-notifications)
+ [Benachrichtigungen über Amazon SQS erhalten](#sqs-notifications)
+ [Benachrichtigungen AWS Lambda direkt weiterleiten](#lambda-notification)
+ [Beispiel für Benachrichtigungsnachricht](#notification-message-example)

**Wichtig**  
Die EventBridge Regel, die Lambda-Funktion, das Amazon SNS SNS-Thema und die Amazon SQS SQS-Warteschlange, die Sie mit Lifecycle-Hooks verwenden, müssen sich immer in derselben Region befinden, in der Sie Ihre Auto Scaling Scaling-Gruppe erstellt haben.

### Benachrichtigungen an Lambda weiterleiten mit EventBridge
<a name="cloudwatch-events-notification"></a>

Sie können eine EventBridge Regel so konfigurieren, dass sie eine Lambda-Funktion aufruft, wenn eine Instanz in den Wartezustand wechselt. Amazon EC2 Auto Scaling sendet eine Benachrichtigung EventBridge über ein Lifecycle-Ereignis an die Instance, die gestartet oder beendet wird, sowie ein Token, mit dem Sie die Lifecycle-Aktion steuern können. Beispiele für diese Ereignisse finden Sie unter [Ereignis-Referenz für Amazon EC2 Auto Scaling](ec2-auto-scaling-event-reference.md).

**Anmerkung**  
Wenn Sie die verwenden, AWS-Managementkonsole um eine Ereignisregel zu erstellen, fügt die Konsole automatisch die IAM-Berechtigungen hinzu, die erforderlich sind, um die EventBridge Berechtigung zum Aufrufen Ihrer Lambda-Funktion zu erteilen. Wenn Sie eine Ereignisregel mit AWS CLI erstellen, müssen Sie diese Berechtigung ausdrücklich erteilen.   
Informationen zum Erstellen von Ereignisregeln in der EventBridge Konsole finden Sie im [* EventBridge Amazon-Benutzerhandbuch unter Erstellen von EventBridge Amazon-Regeln*, die auf Ereignisse reagieren](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule.html).  
– oder –   
Ein einführendes Tutorial, das sich an Konsolenbenutzer richtet, finden Sie unter [Tutorial: Konfigurieren eines Lebenszyklus-Hook, der eine Lambda-Funktion aufruft](tutorial-lifecycle-hook-lambda.md). Dieses Tutorial zeigt Ihnen, wie Sie eine einfache Lambda-Funktion erstellen, die auf Startereignisse wartet und diese in ein CloudWatch Logs-Protokoll schreibt.

**Um eine EventBridge Regel zu erstellen, die eine Lambda-Funktion aufruft**

1. Erstellen Sie mithilfe der [Lambda-Konsole](https://console.aws.amazon.com/lambda/home#/functions) eine Lambda-Funktion und notieren Sie ihren Amazon-Ressourcennamen (ARN). Beispiel, `arn:aws:lambda:region:123456789012:function:my-function`. Sie benötigen den ARN, um ein EventBridge Ziel zu erstellen. Weitere Informationen finden Sie unter [Erste Schritte mit Lambda](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html) im *AWS Lambda -Entwicklerhandbuch*.

1. Um eine Regel zu erstellen, die auf Ereignisse für den Start der Instance passt, verwenden Sie den folgenden [put-rule](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/events/put-rule.html)-Befehl.

   ```
   aws events put-rule --name my-rule --event-pattern file://pattern.json --state ENABLED
   ```

   Im folgenden Beispiel wird die Aktion `pattern.json` für eine Instance zum Starten des Lebenszyklus veranschaulicht. Ersetzen Sie den Text **italics**durch den Namen Ihrer Auto Scaling Scaling-Gruppe.

   ```
   {
     "source": [ "aws.autoscaling" ],
     "detail-type": [ "EC2 Instance-launch Lifecycle Action" ],
     "detail": {
         "AutoScalingGroupName": [ "my-asg" ]
      }
   }
   ```

   Wenn der Befehl erfolgreich ausgeführt wird, EventBridge antwortet er mit dem ARN der Regel. Notieren Sie diesen ARN. Sie müssen ihn in Schritt 4 eingeben.

   Um eine Regel zu erstellen, die mit anderen Ereignissen übereinstimmt, ändern Sie das Ereignismuster. Weitere Informationen finden Sie unter [Wird EventBridge zur Behandlung von Auto Scaling Scaling-Ereignissen verwendet](automating-ec2-auto-scaling-with-eventbridge.md).

1. Verwenden Sie Folgendes, um die Lambda-Funktion anzugeben, die als Ziel für die Regel verwendet werden soll:[put-targets](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/events/put-targets.html)-Befehl.

   ```
   aws events put-targets --rule my-rule --targets Id=1,Arn=arn:aws:lambda:region:123456789012:function:my-function
   ```

   Im vorherigen Befehl *my-rule* ist dies der Name, den Sie in Schritt 2 für die Regel angegeben haben, und der Wert für den `Arn` Parameter ist der ARN der Funktion, die Sie in Schritt 1 erstellt haben.

1. Um Berechtigungen hinzuzufügen, die es der Regel erlauben, Ihre Lambda-Funktion aufzurufen, verwenden Sie den folgenden Lambda [add-permission](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/add-permission.html)-Befehl. Dieser Befehl vertraut dem EventBridge Dienstprinzipal (`events.amazonaws.com`) und beschränkt die Berechtigungen auf die angegebene Regel.

   ```
   aws lambda add-permission --function-name my-function --statement-id my-unique-id \
     --action 'lambda:InvokeFunction' --principal events.amazonaws.com --source-arn arn:aws:events:region:123456789012:rule/my-rule
   ```

   Beim vorhergehenden Befehl:
   + *my-function*ist der Name der Lambda-Funktion, die die Regel als Ziel verwenden soll.
   + *my-unique-id*ist ein eindeutiger Bezeichner, den Sie definieren, um die Anweisung in der Lambda-Funktionsrichtlinie zu beschreiben.
   + `source-arn`ist der ARN der EventBridge Regel.

   Wird der Befehl erfolgreich ausgeführt, erhalten Sie eine Ausgabe ähnlich der folgenden:

   ```
   {
     "Statement": "{\"Sid\":\"my-unique-id\",
       \"Effect\":\"Allow\",
       \"Principal\":{\"Service\":\"events.amazonaws.com\"},
       \"Action\":\"lambda:InvokeFunction\",
       \"Resource\":\"arn:aws:lambda:us-west-2:123456789012:function:my-function\",
       \"Condition\":
         {\"ArnLike\":
           {\"AWS:SourceArn\":
            \"arn:aws:events:us-west-2:123456789012:rule/my-rule\"}}}"
   }
   ```

   Der `Statement`-Wert ist eine JSON-Zeichenfolgenversion der Anweisung, die der Lambda-Funktionsrichtlinie hinzugefügt wurde.

1. Nachdem Sie diese Anweisungen befolgt haben, fahren Sie mit [Fügen Sie Lifecycle-Hooks zu Ihrer Auto Scaling Scaling-Gruppe hinzu](adding-lifecycle-hooks.md) fort.

### Benachrichtigungen über Amazon SNS erhalten
<a name="sns-notifications"></a>

Sie können Amazon SNS dazu verwenden, ein Benachrichtigungsziel (ein SNS-Thema) für den Empfang von Nachrichten im Falle einer Lebenszyklusaktion einzurichten. Amazon SNS sendet die Benachrichtigungen dann an die abonnierten Empfänger. Solange das Abonnement nicht bestätigt ist, werden keine Benachrichtigungen, die zum Thema veröffentlicht wurden, an die Empfänger gesendet. 

**Einrichten von Benachrichtigungen mithilfe von Amazon SNS**

1. Erstellen Sie ein Amazon SNS-Thema mithilfe der [Amazon SNS Konsole](https://console.aws.amazon.com/sns/) oder dem folgenden [create-topic](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sns/create-topic.html)-Befehl. Stellen Sie sicher, dass sich das Thema in derselben Region befindet wie die verwendete Auto-Scaling-Gruppe. Weitere Informationen finden Sie unter [Erste Schritte mit Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-getting-started.html) im *Benutzerhandbuch für Amazon Simple Notification Service*. 

   ```
   aws sns create-topic --name my-sns-topic
   ```

1. Notieren Sie den Amazon-Ressourcennamen (ARN) des Themas, zum Beispiel `arn:aws:sns:region:123456789012:my-sns-topic`. Sie benötigen ihn, um den Lebenszyklus-Hook zu erstellen.

1. Erstellen Sie eine IAM-Servicerolle, um Amazon EC2 Auto Scaling Zugriff auf Ihr Amazon SNS-Benachrichtigungsziel zu gewähren.

    **So gewähren Sie Amazon EC2 Auto Scaling Zugriff auf Ihr SNS-Thema** 

   1. Öffnen Sie unter [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) die IAM-Konsole.

   1. Wählen Sie im Navigationsbereich auf der linken Seite **Roles (Rollen)**.

   1. Wählen Sie **Rolle erstellen** aus.

   1. Wählen Sie für **Select trusted entity** (Vertrauenswürdige Entität auswählen) die Option **AWS -Dienst**.

   1. Wählen Sie für Ihren Anwendungsfall unter **Use cases for other AWS services** (Anwendungsfälle für andere -Dienste), **EC2 Auto Scaling** (EC2 Auto Scaling) und dann **EC2 Auto Scaling Notification Access** (Zugriff auf EC2-Auto-Scaling-Benachrichtigungen) aus.

   1. Klicken Sie zweimal auf **Next** (Weiter), um zur Seite **Name, review, and create** (Benennen, überprüfen und erstellen) zu gelangen.

   1. Geben Sie für **Role Name** (Name der Rolle) einen Namen für Ihre Rolle ein (z. B. **my-notification-role**) und wählen Sie dann **Create role** (Rolle erstellen).

   1. Wählen Sie auf der Seite **Roles (Rollen)** die gerade erstellte Rolle aus, um die Seite **Summary (Übersicht)** zu öffnen. Notieren Sie sich den **ARN** der Rolle. Beispiel, `arn:aws:iam::123456789012:role/my-notification-role`. Sie benötigen ihn, um den Lebenszyklus-Hook zu erstellen.

1. Nachdem Sie diese Anweisungen befolgt haben, fahren Sie mit [Hinzufügen von Lebenszyklus-Hooks (AWS CLI)](adding-lifecycle-hooks.md#adding-lifecycle-hooks-aws-cli) fort.

### Benachrichtigungen über Amazon SQS erhalten
<a name="sqs-notifications"></a>

Sie können Amazon SQS dazu verwenden, ein Benachrichtigungsziel für den Empfang von Nachrichten im Falle einer Lebenszyklusaktion einzurichten. Ein Warteschlangen-Verbraucher muss dann eine SQS-Warteschlange abfragen, um auf diese Benachrichtigungen zu reagieren.

**Wichtig**  
FIFO-Warteschlangen sind nicht kompatibel mit Lebenszyklus-Hooks.

**Einrichten von Benachrichtigungen mithilfe von Amazon SQS**

1. Mit der [Amazon SQS-Konsole](https://console.aws.amazon.com/sqs/) erstellen Sie eine SQS-Warteschlange. Stellen Sie sicher, dass sich die Warteschlange in derselben Region befindet wie die von Ihnen verwendete Auto-Scaling-Gruppe. Weitere Informationen finden Sie unter [Erste Schritte mit Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-getting-started.html) im *Benutzerhandbuch für Amazon Simple Queue Service*. 

1. Notieren Sie den ARN der Warteschlange, z. B. `arn:aws:sqs:us-west-2:123456789012:my-sqs-queue`. Sie benötigen ihn, um den Lebenszyklus-Hook zu erstellen.

1. Erstellen Sie eine IAM-Servicerolle, um Amazon EC2 Auto Scaling Zugriff auf Ihr Amazon SQS-Benachrichtigungsziel zu gewähren.

    **So gewähren Sie Amazon EC2 Auto Scaling Zugriff auf Ihre SQS-Warteschlange** 

   1. Öffnen Sie unter [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) die IAM-Konsole.

   1. Wählen Sie im Navigationsbereich auf der linken Seite **Roles (Rollen)**.

   1. Wählen Sie **Rolle erstellen** aus.

   1. Wählen Sie für **Select trusted entity** (Vertrauenswürdige Entität auswählen) die Option **AWS -Dienst**.

   1. Wählen Sie für Ihren Anwendungsfall unter **Use cases for other AWS services** (Anwendungsfälle für andere -Dienste), **EC2 Auto Scaling** (EC2 Auto Scaling) und dann **EC2 Auto Scaling Notification Access** (Zugriff auf EC2-Auto-Scaling-Benachrichtigungen) aus.

   1. Klicken Sie zweimal auf **Next** (Weiter), um zur Seite **Name, review, and create** (Benennen, überprüfen und erstellen) zu gelangen.

   1. Geben Sie für **Role Name** (Name der Rolle) einen Namen für Ihre Rolle ein (z. B. **my-notification-role**) und wählen Sie dann **Create role** (Rolle erstellen).

   1. Wählen Sie auf der Seite **Roles (Rollen)** die gerade erstellte Rolle aus, um die Seite **Summary (Übersicht)** zu öffnen. Notieren Sie sich den **ARN** der Rolle. Beispiel, `arn:aws:iam::123456789012:role/my-notification-role`. Sie benötigen ihn, um den Lebenszyklus-Hook zu erstellen.

1. Nachdem Sie diese Anweisungen befolgt haben, fahren Sie mit [Hinzufügen von Lebenszyklus-Hooks (AWS CLI)](adding-lifecycle-hooks.md#adding-lifecycle-hooks-aws-cli) fort.

### Benachrichtigungen AWS Lambda direkt weiterleiten
<a name="lambda-notification"></a>

Sie können eine Lambda-Funktion als Benachrichtigungsziel verwenden, wenn eine Lebenszyklusaktion stattfindet. 

**Um Benachrichtigungen direkt weiterzuleiten AWS Lambda**

1. Öffnen Sie die Seite [Funktionen](https://console.aws.amazon.com/lambda/home#/functions) der Lambda-Konsole.

1. Wählen Sie die gewünschte Lambda-Funktion aus.

   Wenn Sie eine neue Lambda-Funktion erstellen möchten, finden Sie unter [So erstellen Sie die Lambda-Funktion:](lambda-custom-termination-policy.md#lambda-custom-termination-policy-create-function)

1. Wählen Sie die Registerkarte **Konfiguration** und dann **Berechtigungen**. 

1. Scrollen Sie nach unten bis zu **Ressourcenbasierte Richtlinie** und wählen Sie dann **Hinzufügen von Berechtigungen** aus. Eine ressourcenbasierte Richtlinie wird verwendet, um dem Prinzipal, der in der Richtlinie angegeben ist, Berechtigungen zum Aufrufen Ihrer Funktion zu erteilen. In diesem Fall wird der Prinzipal die [serviceverknüpfte Amazon EC2 Auto Scaling-Rolle](https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-service-linked-role.html) sein, die der Auto-Scaling-Gruppe zugeordnet ist.

1. In der **Richtlinienanweisung** konfigurieren Sie Ihre Berechtigungen: 

   1. Wählen Sie **AWS-Konto**.

   1. Für **Prinzipal** geben Sie den ARN der aufrufenden serviceverknüpften Rolle ein, z. B. **arn:aws:iam::<aws-account-id>:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling**.

   1. Wählen Sie für **Aktion** die Option **lambda: InvokeFunction** aus.

   1. Für **Anweisungs-ID** geben Sie eine eindeutige Anweisungs-ID ein, wie z. B. **AllowInvokeByAutoScaling**.

   1. Wählen Sie **Speichern**. 

1. Nachdem Sie diese Anweisungen befolgt haben, fahren Sie mit [Hinzufügen von Lebenszyklus-Hooks (AWS CLI)](adding-lifecycle-hooks.md#adding-lifecycle-hooks-aws-cli) fort.

### Beispiel für Benachrichtigungsnachricht
<a name="notification-message-example"></a>

Dieser Abschnitt enthält ein Beispiel für Benachrichtigungen für Amazon SNS, Amazon SQS und. AWS Lambda

Während sich die Instance im Wartestatus befindet, wird eine Nachricht an Amazon SNS, Amazon SQS und das AWS Lambda Benachrichtigungsziel veröffentlicht. 

Die Nachricht enthält die folgenden Informationen:
+ `Origin`— Ein Ort, von dem eine EC2-Instance kommt.
+ `Destination`— Ein Ort, an den eine EC2-Instance gehen wird.
+ `LifecycleActionToken` – Das Token der Lebenszyklusaktion
+ `AccountId`— Die AWS-Konto ID.
+ `AutoScalingGroupName` – Der Name der Auto-Scaling-Gruppe.
+ `LifecycleHookName` – Der Name des Lebenszyklus-Hooks.
+ `EC2InstanceId` – Die ID der EC2-Instance.
+ `LifecycleTransition` – Die Art des Lebenszyklus-Hooks.
+ `NotificationMetadata` – Die Benachrichtigungsmetadaten.

Im Folgenden finden Sie ein Beispiel für eine Benachrichtigungsmeldung.

```
Service: AWS Auto Scaling
Time: 2021-01-19T00:36:26.533Z
RequestId: 18b2ec17-3e9b-4c15-8024-ff2e8ce8786a
Origin: EC2
Destination: AutoScalingGroup
LifecycleActionToken: 71514b9d-6a40-4b26-8523-05e7ee35fa40
AccountId: 123456789012
AutoScalingGroupName: my-asg
LifecycleHookName: my-hook
EC2InstanceId: i-0598c7d356eba48d7
LifecycleTransition: autoscaling:EC2_INSTANCE_LAUNCHING
NotificationMetadata: hook message metadata
```

#### Beispiel für Benachrichtigungsnachricht testen
<a name="test-notification-message-example"></a>

Wenn Sie zum ersten Mal einen Lebenszyklus-Hook hinzufügen, wird eine Testbenachrichtigung für das Benachrichtigungsziel veröffentlicht. Im Folgenden finden Sie ein Beispiel für eine Testbenachrichtigungsnachricht.

```
Service: AWS Auto Scaling
Time: 2021-01-19T00:35:52.359Z
RequestId: 18b2ec17-3e9b-4c15-8024-ff2e8ce8786a
Event: autoscaling:TEST_NOTIFICATION
AccountId: 123456789012
AutoScalingGroupName: my-asg
AutoScalingGroupARN: arn:aws:autoscaling:us-west-2:123456789012:autoScalingGroup:042cba90-ad2f-431c-9b4d-6d9055bcc9fb:autoScalingGroupName/my-asg
```

**Anmerkung**  
Beispiele für Ereignisse, die von Amazon EC2 Auto Scaling an übermittelt wurden EventBridge, finden Sie unter[Ereignis-Referenz für Amazon EC2 Auto Scaling](ec2-auto-scaling-event-reference.md).

# Steuern Sie die Aufbewahrung von Instances mit Richtlinien für den Instance-Lebenszyklus
<a name="instance-lifecycle-policy"></a>

 Richtlinien für den Instance-Lebenszyklus bieten Schutz vor der Kündigung von Amazon EC2 Auto Scaling, wenn eine Aktion zum Beenden des Lebenszyklus abgebrochen wird. Im Gegensatz zu Lifecycle-Hooks allein sollen Richtlinien für den Instance-Lebenszyklus sicherstellen, dass Instances in einen beibehaltenen Zustand übergehen, wenn das ordnungsgemäße Herunterfahren nicht erfolgreich abgeschlossen werden kann. 

## Wann sollten Instance-Lifecycle-Richtlinien verwendet werden
<a name="when-to-use-instance-lifecycle-policies"></a>

 Verwenden Sie Richtlinien für den Instanzlebenszyklus, wenn ein ordnungsgemäßes Herunterfahren Ihrer Anwendung nicht optional, sondern obligatorisch ist und ein fehlgeschlagenes Herunterfahren ein manuelles Eingreifen erfordert. Häufige Anwendungsfälle umfassen: 
+  Stateful-Anwendungen, die vor der Kündigung die Datenpersistenz abschließen müssen. 
+  Anwendungen, die längere Entladezeiten erfordern, die das maximale Lifecycle-Hook-Timeout von 48 Stunden überschreiten können. 
+  Workloads, die sensible Daten verarbeiten und bei denen die Bereinigung fehlschlägt oder unvollständig ist, können zu Datenverlust oder -beschädigung führen. 
+  Geschäftskritische Dienste, bei denen ein abruptes Herunterfahren die Verfügbarkeit beeinträchtigt. 

 Weitere Informationen zur ordnungsgemäßen Handhabung der Instanzbeendigung finden Sie unter. [Gestalten Sie Ihre Anwendungen so, dass sie die Instance-Kündigung ordnungsgemäß handhaben](gracefully-handle-instance-termination.md) 

## So funktionieren Instance-Lebenszyklus-Richtlinien mit Terminierungs-Lifecycle-Hooks
<a name="how-instance-lifecycle-policies-work"></a>

 Richtlinien für den Instanzlebenszyklus funktionieren in Kombination mit Terminierungs-Lifecycle-Hooks, nicht als Ersatz. Der Prozess besteht aus mehreren Phasen: 

1.  **Die Aktionen im Lebenszyklus der Kündigung werden ausgeführt.** Wenn Amazon EC2 Auto Scaling eine Instance zur Kündigung auswählt, werden Ihre Terminierungs-Lifecycle-Hooks aufgerufen und die Instance wechselt in den `Terminating:Wait` Status, in dem sie mit der Ausführung der Terminierungslebenszyklus-Aktionen beginnen kann. 

1.  **Der Versuch, das System ordnungsgemäß herunterzufahren, beginnt.** Ihre Anwendung, die entweder auf der Instance oder über eine Steuerungsebene ausgeführt wird, erhält die Benachrichtigung über die Aktion zum Beenden des Lebenszyklus und beginnt mit Verfahren zum ordnungsgemäßen Herunterfahren, wie z. B. das Löschen von Verbindungen, das Abschließen laufender Arbeiten oder das Übertragen von Daten. 

1.  **Die Aktionen im Lebenszyklus der Kündigung sind abgeschlossen.** Eine Aktion im Lebenszyklus einer Kündigung kann mit `CONTINUE` oder mit einem `ABANDON` Ergebnis abgeschlossen werden. 

1.  **Die Richtlinie für den Instanzlebenszyklus bewertet die Situation.** Wenn keine Instance-Lebenszyklus-Richtlinie konfiguriert ist, wird die Instance sofort beendet, auch wenn die Aktion zum Beenden des Lebenszyklus erfolgreich abgeschlossen wurde`ABANDON`. Wenn eine Instance-Lebenszyklus-Richtlinie so konfiguriert ist, dass Instances aktiviert bleiben`TerminateHookAbandon`, wechselt die Instance in den Status Beibehalten, wenn die Aktion zum Beenden des Lebenszyklus erfolgreich abgeschlossen `ABANDON` wurde. 

1.  **Beibehaltene Instances warten auf manuelle Maßnahmen.** Für Instances in den beibehaltenen Staaten fallen weiterhin die Standardgebühren von Amazon EC2 an. Diese Instances werden nicht auf die gewünschte Kapazität Ihrer Auto Scaling-Gruppe angerechnet, sodass Auto Scaling Ersatz-Instances startet, um die gewünschte Größe beizubehalten. Auto Scaling Scaling-Funktionen wie Instanzaktualisierung und maximale Instanzlebensdauer ignorieren ebenfalls beibehaltene Instances. Auf diese Weise können Sie Bereinigungsvorgänge manuell abschließen, Daten wiederherstellen oder untersuchen, warum das automatische Herunterfahren fehlgeschlagen ist, bevor Sie die Instance manuell beenden. 

1.  **Es erfolgt eine manuelle Kündigung.** Nachdem Sie die erforderlichen Aktionen für die beibehaltene Instance abgeschlossen haben, müssen Sie die `TerminateInstanceInAutoScalingGroup` API aufrufen, um die Instance zu beenden. 

# Konfigurieren Sie die Aufbewahrung von Instanzen
<a name="configure-instance-retention"></a>

Richten Sie Ihre Amazon EC2 Auto Scaling Scaling-Gruppe so ein, dass Instances beibehalten werden, wenn die Aktionen im Terminierungszyklus fehlschlagen.

 Um Instance-Lifecycle-Richtlinien in Ihrer Auto Scaling Scaling-Gruppe zu verwenden, müssen Sie auch einen Termination-Lifecycle-Hook konfigurieren. Wenn Sie eine Instance-Lebenszyklus-Richtlinie konfigurieren, aber keine Terminierungs-Lifecycle-Hooks haben, hat die Richtlinie keine Wirkung. Richtlinien für den Instanzlebenszyklus gelten nur, wenn Aktionen zum Kündigungszyklus abgebrochen werden, nicht, wenn sie erfolgreich mit dem `CONTINUE` Ergebnis abgeschlossen wurden. 

 Richtlinien für den Instanzlebenszyklus verwenden Aufbewahrungsauslöser, um zu bestimmen, wann eine Instance aufbewahrt werden soll. Der `TerminateHookAbandon` Auslöser führt in mehreren Szenarien zur Aufbewahrung: 
+  Wenn Sie die [ CompleteLifecycleAction](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_CompleteLifecycleAction.html)API explizit mit dem `ABANDON` Ergebnis aufrufen. 
+  Wenn bei einer Aktion im Terminierungszyklus mit Standardergebnis das `ABANDON` Timeout überschritten wird, weil das Heartbeat-Timeout erreicht wird, ohne dass ein Heartbeat empfangen wurde. 
+  Wenn das globale Timeout für eine Aktion im Lebenszyklus einer Kündigung mit einem Standardergebnis erreicht wird`ABANDON`, das 48 Stunden oder das 100-fache des Heartbeat-Timeouts beträgt, je nachdem, welcher Wert kleiner ist 

------
#### [ Console ]

**Um die Aufbewahrung von Instanzen zu konfigurieren**

1. Öffnen Sie die Amazon EC2 Auto Scaling Scaling-Konsole

1. Erstellen Sie Ihre Auto Scaling Scaling-Gruppe (die Instance-Lebenszyklus-Richtlinie ist standardmäßig auf Terminate eingestellt)

1. Gehen Sie zu Ihrer Auto Scaling Scaling-Gruppendetailseite und wählen Sie den Tab **Instance Management**.

1. Wählen Sie unter **Instance-Lebenszyklus-Richtlinie für Lifecycle-Hooks** die Option **Retain**

1. Erstellen Sie Ihre Termination-Lifecycle-Hooks mit:
   + Der Lebenszyklusübergang ist auf „**Instanz beenden**“ gesetzt
   + Das Standardergebnis ist auf **Abandon** eingestellt

------
#### [ AWS CLI ]

**Um die Aufbewahrung von Instanzen zu konfigurieren**  
 Verwenden Sie den [create-auto-scaling-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/create-auto-scaling-group.html)Befehl mit einer Instanzlebenszyklus-Richtlinie: 

```
aws autoscaling create-auto-scaling-group \
--auto-scaling-group-name my-asg \
--launch-template LaunchTemplateName=my-template,Version='$Latest' \
--min-size 1 \
--max-size 3 \
--desired-capacity 2 \
--vpc-zone-identifier subnet-12345678 \
--instance-lifecycle-policy file://lifecycle-policy.json
```

Inhalt von lifecycle ycle-policy.json:

```
{
    "RetentionTriggers": {
        "TerminateHookAbandon": "retain"
    }
}
```

**So fügen Sie einen Termination-Lebenszyklus-Hook hinzu**  
Verwenden Sie den [-Befehl:put-lifecycle-hook](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/put-lifecycle-hook.html)

```
aws autoscaling put-lifecycle-hook \
--lifecycle-hook-name my-termination-hook \
--auto-scaling-group-name my-asg \
--lifecycle-transition autoscaling:EC2_INSTANCE_TERMINATING \
--default-result ABANDON \
--heartbeat-timeout 300
```

------

# Beibehaltene Instanzen verwalten
<a name="manage-retained-instances"></a>

 Überwachen und kontrollieren Sie Amazon EC2 EC2-Instances, die in einen beibehaltenen Zustand versetzt wurden. Verwenden Sie CloudWatch Metriken, um zurückbehaltene Instances nachzuverfolgen, und beenden Sie die zurückgehaltenen Instances dann manuell, nachdem Sie Ihre benutzerdefinierten Aktionen abgeschlossen haben. 

 Beibehaltene Instances werden nicht auf die gewünschte Kapazität Ihrer Amazon EC2 Auto Scaling Scaling-Gruppe angerechnet. Wenn eine Instance in den Status „Beibehalten“ übergeht, startet Auto Scaling eine Ersatz-Instance, um die gewünschte Kapazität aufrechtzuerhalten. Nehmen wir zum Beispiel an, Ihre Auto Scaling Scaling-Gruppe hat eine gewünschte Kapazität von 10. Wenn eine Instance in den `Terminating:Retained` Status wechselt, startet Auto Scaling eine Ersatz-Instance, um die gewünschte Kapazität von 10 aufrechtzuerhalten. Sie haben jetzt insgesamt 11 laufende Instances: 10 in Ihrer aktiven Gruppe plus 1 beibehaltene Instance. Die Amazon EC2 EC2-Standardgebühren für alle 11 Instances fallen an, bis Sie die beibehaltene Instance manuell kündigen. 

## Status des Instance-Lebenszyklus der beibehaltenen Instances
<a name="instance-lifecyle-states-of-retained-instances"></a>

 Verschaffen Sie sich einen Überblick darüber, wie Instanzen den jeweiligen Lebenszyklusstatus durchlaufen, wenn Richtlinien für den Instanzlebenszyklus verwendet werden. Instances folgen einem bestimmten Pfad von der normalen Kündigung über die Aufbewahrung bis hin zur endgültigen Kündigung. 

*Wenn die Aufbewahrung ausgelöst wird, durchlaufen Instances den folgenden Status:*

1. `Terminating`- Die normale Kündigung beginnt

1. `Terminating:Wait`- Der Lifecycle-Hook wird ausgeführt

1. `Terminating:Proceed`- Lifecycle-Aktionen werden abgeschlossen (unabhängig davon, ob sie erfolgreich waren oder fehlgeschlagen sind)

1. `Terminating:Retained`- Der Hook schlägt fehl, die Instanz wird für manuelles Eingreifen beibehalten

Warm-Pool-Instances nehmen je nach Szenario unterschiedliche Lebenszyklusstatuspfade ein:

*Instanzen, die zurück in den Warmpool skalieren:*

1. `Warmed:Pending`- Der normale Übergang zum warmen Pool beginnt

1. `Warmed:Pending:Wait`- Der Lifecycle-Hook wird ausgeführt

1. `Warmed:Pending:Proceed`- Lifecycle-Aktionen werden abgeschlossen (unabhängig davon, ob sie erfolgreich waren oder fehlgeschlagen sind)

1. `Warmed:Pending:Retained`- Der Hook schlägt fehl, die Instanz wird für manuelles Eingreifen beibehalten

*Instanzen, die vom warmen Pool aus beendet werden:*

1. `Warmed:Terminating`- Die normale Kündigung beginnt

1. `Warmed:Terminating:Wait`- Der Lifecycle-Hook wird ausgeführt

1. `Warmed:Terminating:Proceed`- Lifecycle-Aktionen werden abgeschlossen (unabhängig davon, ob sie erfolgreich waren oder fehlgeschlagen sind)

1. `Warmed:Terminating:Retained`- Der Hook schlägt fehl, die Instanz wird für manuelles Eingreifen beibehalten

## Überwachen Sie die gespeicherten Instanzen
<a name="monitor-retained-instances"></a>

 Da für die Aufbewahrung von Amazon EC2 EC2-Instances Kosten anfallen und manuelles Eingreifen erforderlich sind, ist deren Überwachung unerlässlich. Amazon EC2 Auto Scaling bietet mehrere CloudWatch Metriken zur Nachverfolgung von gespeicherten Instances. 

Aktivieren Sie Gruppenmetriken, um beibehaltene Instances nachzuverfolgen:

```
aws autoscaling enable-metrics-collection \
--auto-scaling-group-name my-asg \
--metrics GroupTerminatingRetainedInstances
```

Die verfügbaren Metriken sind:
+  `GroupTerminatingRetainedInstances`zeigt die Anzahl der Instanzen im `Terminating:Retained` Bundesstaat an. 
+  `GroupTerminatingRetainedCapacity`zeigt die Kapazitätseinheiten an, die durch Instances im `Terminating:Retained` Bundesstaat repräsentiert werden. 
+  `WarmPoolTerminatingRetainedCapacity`verfolgt beibehaltene Instances, die im warmen Pool enden. 
+  `WarmPoolPendingRetainedCapacity`verfolgt die zurückgehaltenen Instanzen, die in den warmen Pool zurückkehren. 

 Sie können auch die Skalierungsaktivitäten Ihrer Amazon EC2 Auto Scaling-Gruppe überprüfen, um zu verstehen, warum Instances beibehalten wurden. Suchen Sie nach Kündigungsaktivitäten mit `StatusCode: Cancelled` Meldungen zur Begründung des Status, die auf Fehler beim Lifecycle-Hook hinweisen: 

```
aws autoscaling describe-scaling-activities \
--auto-scaling-group-name my-asg
```

 Wir empfehlen, CloudWatch Alarme für diese Metriken zu erstellen, um Sie zu benachrichtigen, wenn Instances in den Status „Beibehalten“ wechseln. Auf diese Weise können Sie die Auswirkungen auf die Kosten verfolgen und sicherstellen, dass Sie nicht vergessen, Instanzen zu bereinigen, die manuelles Eingreifen erfordern. 

## Beibehaltene Instanzen beenden
<a name="terminate-retained-instances"></a>

Nachdem Sie Ihre benutzerdefinierten Aktionen abgeschlossen haben, beenden Sie Ihre gespeicherten Instances, indem Sie die [ TerminateInstanceInAutoScalingGroup](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_TerminateInstanceInAutoScalingGroup.html)API aufrufen: 

```
aws autoscaling terminate-instance-in-auto-scaling-group \
--instance-id i-1234567890abcdef0 \
--no-should-decrement-desired-capacity
```

# Abrufen des Ziellebenszyklus-Status durch Instance-Metadaten
<a name="retrieving-target-lifecycle-state-through-imds"></a>

Jede Auto-Scaling-Instance, die Sie starten, durchläuft mehrere Lebenszyklus-Status. Um aus einer Instance heraus benutzerdefinierte Aktionen aufzurufen, die auf bestimmte Lebenszyklusstatus-Übergänge wirken, müssen Sie den Ziellebenszyklus-Status über Instance-Metadaten abrufen. 

Beispielsweise benötigen Sie möglicherweise einen Mechanismus, um die Instance-Beendigung innerhalb der Instance zu erkennen, um Code auf der Instance auszuführen, bevor sie beendet wird. Sie können dies tun, indem Sie Code schreiben, der den Lebenszyklus-Status einer Instance direkt von der Instance aus abfragt. Anschließend können Sie der Auto-Scaling-Gruppe einen Lebenszyklus-Hook hinzufügen, um die Instance so lange am Laufen zu halten, bis Ihr Code den Befehl **complete-lifecycle-action** zum Fortfahren sendet. 

Der Lebenszyklus der Auto-Scaling-Instance hat zwei primäre Beharrungszustände – `InService` und `Terminated` – und zwei sekundäre Beharrungszustände – `Detached` und `Standby`. Wenn Sie einen Warm-Pool verwenden, hat der Lebenszyklus vier zusätzliche Beharrungszustände – `Warmed:Hibernated`, `Warmed:Running`, `Warmed:Stopped` und`Warmed:Terminated`.

Wenn sich eine Instance auf den Übergang in einen der vorhergehenden Beharrungszustände vorbereitet, aktualisiert Amazon EC2 Auto Scaling den Wert des Instance-Metadatenelements `autoscaling/target-lifecycle-state`. Um den Ziellebenszyklusstatus innerhalb der Instance abzurufen, müssen Sie den Instance-Metadatendienst verwenden, um ihn aus den Instance-Metadaten abzurufen. 

**Anmerkung**  
*Instance-Metadaten* sind Daten über eine Amazon-EC2-Instance, mit denen Anwendungen Instance-Informationen abfragen können. Der *Instance-Metadatenservice (IMDS)* ist eine On-Instance-Komponente, die von lokalem Code verwendet wird, um auf Instance-Metadaten zuzugreifen. Lokaler Code kann Benutzerdatenskripte oder Anwendungen enthalten, die auf der Instance ausgeführt werden.

Lokaler Code kann mit einer von zwei Methoden auf Instanz-Metadaten von einer laufenden Instanz aus zugreifen: Instanz-Metadatendienst Version 1 (IMDSv1) oder Instanz-Metadatendienst Version 2 (IMDSv2). IMDSv2verwendet sitzungsorientierte Anfragen und behebt verschiedene Arten von Sicherheitslücken, die für den Zugriff auf die Instanz-Metadaten genutzt werden könnten. Einzelheiten zu diesen beiden Methoden finden Sie unter [Verwendung IMDSv2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html) im *Amazon EC2 EC2-Benutzerhandbuch*.

------
#### [ IMDSv2 ]

```
[ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \
&& curl -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data/autoscaling/target-lifecycle-state
```

------
#### [ IMDSv1 ]

```
[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/autoscaling/target-lifecycle-state
```

------

Es folgt eine Beispielausgabe.

```
InService
```

Der Ziellebenszyklusstatus ist der Status, in den die Instance wechselt. Der aktuelle Lebenszyklusstatus ist der Status, in dem sich die Instance befindet. Diese können gleich sein, nachdem die Lebenszyklusaktion abgeschlossen ist und die Instance ihren Übergang in den Ziellebenszyklusstatus beendet hat. Sie können den aktuellen Lebenszyklusstatus der Instance nicht aus den Instance-Metadaten abrufen.

Amazon EC2 Auto Scaling begann am 10. März 2022 mit der Generierung des Ziellebenszyklusstatus. Wenn Ihre Instance nach diesem Datum in einen der Ziellebenszyklusstatus wechselt, ist das Ziellebenszyklusstatus-Element in den Instance-Metadaten vorhanden. Andernfalls ist es nicht vorhanden und Sie erhalten einen HTTP-404-Fehler.

Weitere Informationen zum Abrufen von Instance-Metadaten finden Sie unter [Instance-Metadaten abrufen](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html) im *Amazon EC2 EC2-Benutzerhandbuch*.

Ein Tutorial, das Ihnen zeigt, wie Sie einen Lebenszyklus-Hook mit einer benutzerdefinierten Aktion in einem Benutzerdatenskript erstellen, das den Ziel-Lebenszyklusstatus verwendet, finden Sie unter [Tutorial: Verwenden Sie Datenskript- und Instance-Metadaten, um den Lebenszyklusstatus abzurufen](tutorial-lifecycle-hook-instance-metadata.md).

**Wichtig**  
Um sicherzustellen, dass Sie so schnell wie möglich eine benutzerdefinierte Aktion aufrufen können, sollte Ihr lokaler Code IMDS häufig abfragen und es bei Fehlern erneut versuchen.

# Fügen Sie Lifecycle-Hooks zu Ihrer Auto Scaling Scaling-Gruppe hinzu
<a name="adding-lifecycle-hooks"></a>

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-Managementkonsole, 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 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 AWS Lambda Sie den [put-lifecycle-hook](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/put-lifecycle-hook.html)Befehl verwenden, wie in den Beispielen in diesem Thema gezeigt.

**Topics**
+ [Lebenszyklus-Hooks hinzufügen (Konsole)](#adding-lifecycle-hooks-console)
+ [Hinzufügen von Lebenszyklus-Hooks (AWS CLI)](#adding-lifecycle-hooks-aws-cli)

## Lebenszyklus-Hooks hinzufügen (Konsole)
<a name="adding-lifecycle-hooks-console"></a>

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](prepare-for-lifecycle-notifications.md) beschrieben.

**So fügen Sie einen Lebenszyklus-Hook für das Aufskalieren hinzu**

1. Öffnen Sie die Amazon EC2 EC2-Konsole unter [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)und wählen Sie im Navigationsbereich **Auto Scaling Groups** aus.

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

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

1. 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.

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

   1. 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-action](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/complete-lifecycle-action.html)Befehl, damit die Instance zum nächsten Status übergehen kann. 

   1. 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.

   1. (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. 

1. Wählen Sie **Erstellen** aus.

**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.

1. 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.

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

   1. 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

   1. 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. 

   1. (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.

1. Wählen Sie **Erstellen** aus.

## Hinzufügen von Lebenszyklus-Hooks (AWS CLI)
<a name="adding-lifecycle-hooks-aws-cli"></a>

Erstellen und aktualisieren Sie Lebenszyklus-Hooks über den Befehl [put-lifecycle-hook](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/put-lifecycle-hook.html) .

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. Um Benachrichtigungen über zu erhalten AWS Lambda, fügen Sie den hinzu. `--notification-target-arn`

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-hook](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/put-lifecycle-hook.html)Befehl 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-heartbeat](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/record-lifecycle-action-heartbeat.html)CLI-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-action](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/complete-lifecycle-action.html)CLI-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](completing-lifecycle-hooks.md).

# Eine Lebenszyklusaktion in einer Auto Scaling Scaling-Gruppe abschließen
<a name="completing-lifecycle-hooks"></a>

Reagiert eine Auto-Scaling-Gruppe auf ein Lebenszyklus-Ereignis, versetzt sie die Instance in einen Wartestatus und sendet eine Ereignisbenachrichtigung. Sie können eine benutzerdefinierte Aktion ausführen, während sich die Instance in einem Wartestatus befindet.

Das Abschließen der Lebenszyklus-Aktion mit dem Ergebnis von `CONTINUE` ist hilfreich, wenn Sie den Vorgang vor Ablauf des Timeouts beenden. Wenn Sie die Lebenszyklus-Aktion nicht abschließen, nimmt der Lebenszyklus-Hook nach Ablauf des Timeout-Zeitraums den Status an, den Sie als **Standardergebnis** angegeben haben.

**Topics**
+ [Eine Lebenszyklus-Aktion abschließen (manuell)](#completing-lifecycle-hooks-aws-cli)
+ [Eine Lebenszyklus-Aktion abschließen (automatisch)](#completing-lifecycle-hooks-automatic)

## Eine Lebenszyklus-Aktion abschließen (manuell)
<a name="completing-lifecycle-hooks-aws-cli"></a>

Das folgende Verfahren gilt für die Befehlszeilenschnittstelle und wird in der Konsole nicht unterstützt. Die zu ersetzenden Informationen wie die Instance-ID oder der Name einer Auto-Scaling-Gruppe werden kursiv dargestellt. 

**So führen Sie eine Lebenszyklus-Aktion aus (AWS CLI)**

1. Falls Sie mehr Zeit für die benutzerdefinierte Aktion benötigen, verwenden Sie den Befehl [record-lifecycle-action-heartbeat](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/record-lifecycle-action-heartbeat.html), um die Zeit für die Zeitüberschreitung zurückzusetzen und die Instance im Wartestatus zu belassen. Beträgt der Zeitüberschreitungszeitraum z. B. eine Stunde und Sie rufen diesen Befehl nach 30 Minuten auf, verbleibt die Instance für eine zusätzliche Stunde bzw. insgesamt 90 Minuten in einem Wartestatus. 

   Sie können das Token der Lebenszyklusaktion das Sie mit der [Benachrichtigung](prepare-for-lifecycle-notifications.md#notification-message-example) erhalten haben, wie im folgenden Befehl gezeigt angeben.

   ```
   aws autoscaling record-lifecycle-action-heartbeat --lifecycle-hook-name my-launch-hook \
     --auto-scaling-group-name my-asg --lifecycle-action-token bcd2f1b8-9a78-44d3-8a7a-4dd07d7cf635
   ```

   Alternativ können Sie auch die ID der Instance angeben, die Sie mit der [Benachrichtigung](prepare-for-lifecycle-notifications.md#notification-message-example) erhalten haben, wie im folgenden Befehl gezeigt.

   ```
   aws autoscaling record-lifecycle-action-heartbeat --lifecycle-hook-name my-launch-hook \
     --auto-scaling-group-name my-asg --instance-id i-1a2b3c4d
   ```

1. Wenn Sie die benutzerdefinierte Aktion vor Ablauf des Timeout-Zeitraums beenden, verwenden Sie den [complete-lifecycle-action](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/complete-lifecycle-action.html)Befehl, damit die Auto Scaling Scaling-Gruppe die Instance weiter starten oder beenden kann. Sie können das Token für die Lebenszyklusaktion wie im folgenden Befehl angeben:

   ```
   aws autoscaling complete-lifecycle-action --lifecycle-action-result CONTINUE \
     --lifecycle-hook-name my-launch-hook --auto-scaling-group-name my-asg \
     --lifecycle-action-token bcd2f1b8-9a78-44d3-8a7a-4dd07d7cf635
   ```

   Alternativ können Sie die ID der Instance wie im folgenden Befehl angeben:

   ```
   aws autoscaling complete-lifecycle-action --lifecycle-action-result CONTINUE \
     --instance-id i-1a2b3c4d --lifecycle-hook-name my-launch-hook \
     --auto-scaling-group-name my-asg
   ```

## Eine Lebenszyklus-Aktion abschließen (automatisch)
<a name="completing-lifecycle-hooks-automatic"></a>

Wenn Sie ein Skript mit Benutzerdaten haben, das Ihre Instances nach dem Start konfiguriert, müssen Sie die Lebenszyklusaktionen nicht manuell durchführen. Sie können den [complete-lifecycle-action](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/complete-lifecycle-action.html)Befehl dem Skript hinzufügen. Das Skript kann die Instance-ID aus den Instance-Metadaten abrufen und Amazon EC2 Auto Scaling signalisieren, wenn die Bootstrap-Skripte erfolgreich abgeschlossen wurden. 

Wenn Sie nicht bereits dabei sind, aktualisieren Sie das Skript, sodass es die Instance-ID der Instance aus den Instance-Metadaten abruft. Weitere Informationen finden Sie unter [Instance-Metadaten abrufen](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html) im *Amazon EC2 EC2-Benutzerhandbuch*.

Wenn Sie Lambda verwenden, können Sie auch einen Rückruf im Code Ihrer Funktion einrichten, damit der Lebenszyklus der Instance fortgesetzt werden kann, wenn die benutzerdefinierte Aktion erfolgreich ist. Weitere Informationen finden Sie unter [Tutorial: Konfigurieren eines Lebenszyklus-Hook, der eine Lambda-Funktion aufruft](tutorial-lifecycle-hook-lambda.md).

# Tutorial: Verwenden Sie Datenskript- und Instance-Metadaten, um den Lebenszyklusstatus abzurufen
<a name="tutorial-lifecycle-hook-instance-metadata"></a>

Eine gängige Methode, benutzerdefinierte Aktionen für Lifecycle-Hooks zu erstellen, ist die Verwendung von Benachrichtigungen, die Amazon EC2 Auto Scaling an andere Dienste wie Amazon EventBridge sendet. Sie können jedoch vermeiden, dass Sie zusätzliche Infrastruktur erstellen müssen, indem Sie stattdessen ein Benutzerdatenskript verwenden, um den Code, der Instances konfiguriert und die Lebenszyklusaktion abschließt, in die Instances selbst zu verschieben. 

Das folgende Tutorial veranschaulicht die Verwendung eines Benutzerdatenskripts und Instance-Metadaten. Sie erstellen eine grundlegende Auto-Scaling-Gruppenkonfiguration mit einem Benutzerdatenskript, das die [Ziel-Lebenszyklusstatus](retrieving-target-lifecycle-state-through-imds.md) der Instances in Ihrer Gruppe liest und eine Rückrufaktion in einer bestimmten Phase des Lebenszyklus einer Instance ausführt, um den Startprozess fortzusetzen.

Die folgende Abbildung fasst den Ablauf für ein Scale-Out-Ereignis zusammen, wenn Sie ein Benutzerdatenskript verwenden, um eine benutzerdefinierte Aktion auszuführen. Nach dem Start einer Instance wird der Lebenszyklus der Instance angehalten, bis der Lifecycle-Hook abgeschlossen ist, entweder durch eine Zeitüberschreitung oder dadurch, dass Amazon EC2 Auto Scaling ein Signal zum Fortfahren empfängt. 

![\[Der Ablauf für ein Scale-Out-Ereignis, wenn Sie ein Benutzerdatenskript verwenden, um eine benutzerdefinierte Aktion auszuführen.\]](http://docs.aws.amazon.com/de_de/autoscaling/ec2/userguide/images/lifecycle-hook-user-data-script.png)


**Topics**
+ [Schritt 1: Erstellen einer IAM-Rolle mit Berechtigungen zum Abschließen von Lebenszyklus-Aktionen](#instance-metadata-create-iam-role)
+ [Schritt 2: Erstellen Sie eine Startvorlage und schließen Sie die IAM-Rolle und ein Benutzerdatenskript ein](#instance-metadata-create-hello-world-function)
+ [Schritt 3: Erstellen einer Auto-Scaling-Gruppe](#instance-metadata-create-auto-scaling-group)
+ [Schritt 4: Hinzufügen eines Lebenszyklus-Hooks](#instance-metadata-add-lifecycle-hook)
+ [Schritt 5: Testen und Prüfen der Funktionalität](#instance-metadata-testing-hook)
+ [Schritt 6: Bereinigen](#instance-metadata-lifecycle-hooks-tutorial-cleanup)
+ [Zugehörige Ressourcen](#instance-metadata-lifecycle-hooks-tutorial-related-resources)

## Schritt 1: Erstellen einer IAM-Rolle mit Berechtigungen zum Abschließen von Lebenszyklus-Aktionen
<a name="instance-metadata-create-iam-role"></a>

Wenn Sie das AWS CLI oder ein AWS SDK verwenden, um einen Rückruf zu senden, um Lebenszyklusaktionen abzuschließen, müssen Sie eine IAM-Rolle mit Berechtigungen zum Abschließen von Lebenszyklusaktionen verwenden. 

**So erstellen Sie die Richtlinie**

1. Öffnen Sie in der IAM-Konsole [Policies (Richtlinien)](https://console.aws.amazon.com/iam/home?#/policies) und wählen Sie dann **Create policy (Richtlinie erstellen)** aus.

1. Wählen Sie den Tab **JSON**.

1. Kopieren Sie das folgende Richtliniendokument und fügen Sie es in das Feld **Policy Document** (Richtliniendokument) ein. Ersetzen Sie das **sample text**durch Ihre Kontonummer und den Namen der Auto Scaling Scaling-Gruppe, die Sie erstellen möchten (**TestAutoScalingEvent-group**).

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "autoscaling:CompleteLifecycleAction"
         ],
         "Resource": "arn:aws:autoscaling:*:123456789012:autoScalingGroup:*:autoScalingGroupName/TestAutoScalingEvent-group"
       }
     ]
   }
   ```

------

1. Wählen Sie **Weiter** aus. 

1. Geben Sie unter **Policy name** (Richtlinienname) **TestAutoScalingEvent-policy** ein. Wählen Sie **Richtlinie erstellen** aus.

Wenn Sie die Richtlinie fertig erstellt haben, können Sie eine Rolle erstellen, die sie verwendet.

**So erstellen Sie die Rolle**

1. Wählen Sie im Navigationsbereich auf der linken Seite **Roles (Rollen)**.

1. Wählen Sie **Rolle erstellen** aus.

1. Wählen Sie für **Select trusted entity** (Vertrauenswürdige Entität auswählen) die Option **AWS -Service**.

1. Wählen Sie für Ihren Anwendungsfall die Option **EC2** und dann **Next** (Weiter) aus. 

1. Wählen **Sie unter Berechtigungen hinzufügen** die Richtlinie aus, die Sie erstellt haben (**TestAutoScalingEvent-policy**). Wählen Sie anschließend **Weiter**. 

1. Geben Sie auf der Seite **Set role name and review** (Rollenname festlegen und überprüfen) für **Role name** (Rollenname) **TestAutoScalingEvent-role** ein und wählen Sie **Create role** (Rolle erstellen) aus. 

## Schritt 2: Erstellen Sie eine Startvorlage und schließen Sie die IAM-Rolle und ein Benutzerdatenskript ein
<a name="instance-metadata-create-hello-world-function"></a>

Erstellen Sie eine Startvorlage für die Verwendung mit einer Auto-Scaling-Gruppe. Fügen Sie die von Ihnen erstellte IAM-Rolle und das bereitgestellte Beispielbenutzerdatenskript ein.

**Eine Startvorlage erstellen**

1. Öffnen Sie die Seite [Startvorlagen](https://console.aws.amazon.com/ec2/v2/#LaunchTemplates) der Amazon EC2 Konsole.

1. Wählen Sie **Startvorlage erstellen**.

1. Geben Sie für **Startvorlagenname** **TestAutoScalingEvent-template** ein.

1. Unter **Auto-Scaling-Anleitung** aktivieren Sie das Kontrollkästchen. 

1. Wählen Sie für **Application and OS Images (Amazon Machine Image) (Anwendungs- und Betriebssystem-Images (Amazon Machine Image))** Amazon Linux 2 (HVM), SSD-Volume-Typ, 64-Bit (x86) aus der **Quick Start**(Schnellstart)-Liste. 

1. Wählen Sie für **Instance type** (Instance-Typ) einen Typ von Amazon-EC2-Instance (z. B. „t2.micro“) aus.

1. Für **Erweiterte Details** erweitern Sie den Abschnitt, um die Felder anzuzeigen. 

1. **Wählen Sie für das **IAM-Instanzprofil** den IAM-Instanzprofilnamen Ihrer IAM-Rolle (-role) aus. TestAutoScalingEvent** Ein Instance-Profil ist ein Container für eine IAM-Rolle, mit dem Amazon EC2 einer Instance die IAM-Rolle übergibt, wenn die Instance gestartet wird.

   Wenn Sie eine IAM-Rolle mithilfe der IAM-Konsole erstellt haben, hat die Konsole automatisch ein Instance-Profil mit demselben Namen wie der entsprechenden Rolle erzeugt.

1. Kopieren Sie für **User date** (Benutzerdaten) das folgende Beispiel-Benutzerdatenskript und fügen Sie es in das Feld ein. Ersetzen Sie den Beispieltext für `group_name` durch den Namen der Auto Scaling Scaling-Gruppe, die Sie erstellen möchten, und `region` durch den Namen, den AWS-Region Ihre Auto Scaling Scaling-Gruppe verwenden soll.

   ```
   #!/bin/bash
   
   function token {
       echo "X-aws-ec2-metadata-token: $(curl -X PUT 'http://169.254.169.254/latest/api/token' -H 'X-aws-ec2-metadata-token-ttl-seconds: 21600')"
   }
   
   function get_target_state {
       echo $(curl -H "$(token)" -s http://169.254.169.254/latest/meta-data/autoscaling/target-lifecycle-state)
   }
   
   function get_instance_id {
       echo $(curl -H "$(token)" -s http://169.254.169.254/latest/meta-data/instance-id)
   }
   
   function complete_lifecycle_action {
       instance_id=$(get_instance_id)
       group_name='TestAutoScalingEvent-group'
       region='us-west-2'
    
       echo $instance_id
       echo $region
       echo $(aws autoscaling complete-lifecycle-action \
         --lifecycle-hook-name TestAutoScalingEvent-hook \
         --auto-scaling-group-name $group_name \
         --lifecycle-action-result CONTINUE \
         --instance-id $instance_id \
         --region $region)
   }
   
   function main {
       while true
       do
           target_state=$(get_target_state)
           if [ \"$target_state\" = \"InService\" ]; then
               # Change hostname
               export new_hostname="${group_name}-$instance_id"
               hostname $new_hostname
               # Send callback
               complete_lifecycle_action
               break
           fi
           echo $target_state
           sleep 5
       done
   }
   
   main
   ```

   Dieses einfache Benutzerdatenskript führt folgende Aktionen aus:
   + Ruft die Instance-Metadaten auf, um den Ziellebenszyklusstatus und die Instance-ID aus den Instance-Metadaten abzurufen
   + Ruft den Ziellebenszyklusstatus wiederholt ab, bis er sich auf `InService` ändert
   + Ändert den Hostnamen der Instance in die Instance-ID, der dem Namen der Auto-Scaling-Gruppe vorangestellt ist, wenn der Ziellebenszyklusstatus `InService` lautet
   + Sendet einen Rückruf durch Aufruf des CLI-Befehls **complete-lifecycle-action**, um Amazon EC2 Auto Scaling zu signalisieren, den EC2-Startprozess zu `CONTINUE`

1. Wählen Sie **Startvorlage erstellen**.

1. Wählen Sie auf der Bestätigungsseite **Create Auto Scaling group (Auto-Scaling-Gruppe erstellen)** aus.

**Anmerkung**  
Weitere Beispiele, die Sie als Referenz für die Entwicklung Ihres Benutzerdatenskripts verwenden können, finden Sie im [GitHub Repository](https://github.com/aws-samples/amazon-ec2-auto-scaling-group-examples) für Amazon EC2 Auto Scaling.

## Schritt 3: Erstellen einer Auto-Scaling-Gruppe
<a name="instance-metadata-create-auto-scaling-group"></a>

Nachdem Sie die Startvorlage erstellt haben, erstellen Sie eine Auto-Scaling-Gruppe.

**So erstellen Sie eine Auto Scaling-Gruppe**

1. Geben Sie auf der Seite **Choose launch template or configuration** (Startvorlage oder -konfiguration auswählen) für **Auto Scaling group name** (Auto-Scaling-Gruppenname) einen Namen für Ihre Auto-Scaling-Gruppe ein (**TestAutoScalingEvent-group**).

1. Klicken Sie auf **Next** (Weiter), um die Seite **Choose instance launch options** (Wählen Sie Instance-Startoptionen) aufzurufen. 

1. Wählen Sie unter **Network** (Netzwerk) eine VPC aus.

1. Wählen Sie für **Availability Zones and subnets** (Availability Zones und Subnetze) ein oder mehrere Subnetze aus einer oder mehreren Availability Zones aus.

1. Verwenden Sie im Abschnitt **Instance type requirements** (Anforderungen an den Instance-Typ) die Standardeinstellung, um diesen Schritt zu vereinfachen. (Setzen Sie die Startvorlage nicht außer Kraft.) In diesem Tutorial werden Sie nur eine On-Demand-Instance mit dem in Ihrer Startvorlage angegebenen Instance-Typ starten. 

1. Wählen Sie unten auf dem Bildschirm **Überspringen zum Review**. 

1. Überprüfen Sie auf der Seite **Review** (Prüfen) die Details Ihrer Auto-Scaling-Gruppe und wählen Sie dann **Create Auto Scaling group** (Auto-Scaling-Gruppe erstellen).

## Schritt 4: Hinzufügen eines Lebenszyklus-Hooks
<a name="instance-metadata-add-lifecycle-hook"></a>

Fügen Sie einen Lebenszyklus-Hook hinzu, um die Instance in einem Wartezustand zu halten, bis Ihre Lebenszyklusaktion abgeschlossen ist.

**So fügen Sie einen Lebenszyklus-Hook hinzu**

1. Öffnen Sie die [Seite Auto-Scaling-Gruppen](https://console.aws.amazon.com/ec2/v2/home?#AutoScalingGroups) in der Amazon-EC2-Konsole.

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

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

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

   1. Geben Sie für **Lebenszyklus-Hooks** den Wert **TestAutoScalingEvent-hook** ein.

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

   1. Geben Sie für **Heartbeat timeout** (Heartbeat-Zeitüberschreitung) den Wert **300** für die Anzahl der Sekunden ein, die auf einen Rückruf von Ihrem Benutzerdatenskript gewartet werden soll.

   1. Für **Standardergebnis** wählen Sie **ABBRECHEN** aus. Wenn die Zeitüberschreitung des Hooks erreicht ist, ohne einen Rückruf von Ihrem Benutzerdatenskript erhalten zu haben, beendet die Auto-Scaling-Gruppe die neue Instance.

   1. (Optional) Halten Sie **Notification metadata** (Benachrichtigungs-Metadaten) frei.

1. Wählen Sie **Erstellen** aus.

## Schritt 5: Testen und Prüfen der Funktionalität
<a name="instance-metadata-testing-hook"></a>

Um die Funktionalität zu testen, aktualisieren Sie die Auto-Scaling-Gruppe, indem Sie die gewünschte Kapazität der Auto-Scaling-Gruppe um 1 erhöhen. Das Benutzerdatenskript wird ausgeführt und überprüft den Ziellebenszyklusstatus der Instance kurz nach dem Start der Instance. Das Skript ändert den Hostnamen und sendet eine Rückrufaktion, wenn der Ziellebenszyklusstatus `InService` ist. Dieser Vorgang dauert normalerweise nur ein paar Sekunden.

**So erhöhen Sie die Größe der Auto-Scaling-Gruppe**

1. Öffnen Sie die [Seite Auto-Scaling-Gruppen](https://console.aws.amazon.com/ec2/v2/home?#AutoScalingGroups) in der Amazon-EC2-Konsole.

1. Aktivieren Sie das Kontrollkästchen neben Ihrer Auto-Scaling-Gruppe. Zeigen Sie Details in einem unteren Bereich an, während Sie weiterhin die oberen Zeilen des oberen Bereichs sehen. 

1. Wählen Sie im unteren Bereich auf der Registerkarte **Details** die Option **Gruppendetails**, **Bearbeiten** aus.

1. Erhöhen Sie für **Desired capacity (Gewünschte Kapazität** den aktuellen Wert um 1.

1. Wählen Sie **Aktualisieren** aus. Während eine Instance gestartet wird, zeigt die Spalte **Status** den Status *Updating capacity (Kapazität aktualisieren)* an. 

Nachdem Sie die gewünschte Kapazität erhöht haben, können Sie überprüfen, ob die Instance erfolgreich gestartet wurde und nicht von der Beschreibung der Skalierungsaktivitäten beendet wurde. 

**Ansehen der Skalierungsaktivität**

1. Wählen Sie auf der Seite **Auto-Scaling-Gruppen** Ihre Gruppe aus.

1. Auf der Registerkarte **Activity (Aktivität)** wird unter **Activity history (Aktivitätsverlauf)** in der Spalte **Status** angezeigt, ob Ihre Auto-Scaling-Gruppe Instances erfolgreich gestartet hat. 

1. Wenn das Benutzerdatenskript fehlschlägt, sehen Sie nach Ablauf des Timeout-Zeitraums eine Skalierungsaktivität mit dem Status `Canceled` und eine Statusmeldung `Instance failed to complete user's Lifecycle Action: Lifecycle Action with token e85eb647-4fe0-4909-b341-a6c42EXAMPLE was abandoned: Lifecycle Action Completed with ABANDON Result`.

## Schritt 6: Bereinigen
<a name="instance-metadata-lifecycle-hooks-tutorial-cleanup"></a>

Wenn Sie mit den Ressourcen gearbeitet haben, die Sie für dieses Tutorial erstellt haben, führen Sie die folgenden Schritte aus, um sie zu löschen.

**So löschen Sie den Lebenszyklus-Hook**

1. Öffnen Sie die [Seite Auto-Scaling-Gruppen](https://console.aws.amazon.com/ec2/v2/home?#AutoScalingGroups) in der Amazon-EC2-Konsole.

1. Aktivieren Sie das Kontrollkästchen neben Ihrer Auto-Scaling-Gruppe.

1. Wählen Sie auf der Registerkarte **Instance management (Instance-Verwaltung)** unter **Lebenszyklus-Hooks** den Lebenszyklus (`TestAutoScalingEvent-hook`) aus.

1. Wählen Sie **Actions (Aktionen)**, **Delete (Löschen)** aus.

1. Um dies zu bestätigen, wählen Sie erneut **Delete (Löschen)** aus.

**Löschen Sie die Startvorlage wie folgt:**

1. Öffnen Sie die Seite [Startvorlagen](https://console.aws.amazon.com/ec2/v2/#LaunchTemplates) der Amazon EC2 Konsole.

1. Wählen Sie Ihre Startvorlage (`TestAutoScalingEvent-template`) und anschließend **Actions** (Aktionen) und **Delete template** (Vorlage löschen) aus.

1. Wenn Sie zur Bestätigung aufgefordert werden, geben Sie **Delete** ein, um das Löschen der angegebenen Auto-Scaling-Gruppe zu bestätigen, wählen Sie dann **Löschen**.

Wenn Sie mit der Beispiel-Auto-Scaling-Gruppe fertig sind, löschen Sie sie. Sie können auch die von Ihnen erstellte IAM-Rolle und Berechtigungsrichtlinie löschen.

**Löschen Sie die Auto-Scaling-Gruppe wie folgt:**

1. Öffnen Sie die [Seite Auto-Scaling-Gruppen](https://console.aws.amazon.com/ec2/v2/home?#AutoScalingGroups) in der Amazon-EC2-Konsole.

1. Aktivieren Sie das Kontrollkästchen neben Ihrer Auto-Scaling-Gruppe (`TestAutoScalingEvent-group`) und wählen Sie **Delete** (Löschen) aus. 

1. Wenn Sie zur Bestätigung aufgefordert werden, geben Sie **delete** ein, um das Löschen der angegebenen Auto-Scaling-Gruppe zu löschen, wählen Sie dann **Löschen**.

   Ein Ladesymbol in der Spalte **Name** zeigt an, dass die Auto-Scaling-Gruppe gelöscht wird. Es dauert einige Minuten, bis die Instances beendet werden und die Gruppe gelöscht wird. 

**Löschen Sie die IAM-Rolle wie folgt:**

1. Öffnen Sie die Seite [Roles (Rollen)](https://console.aws.amazon.com/iam/home?#/roles) in der IAM-Konsole.

1. Wählen Sie die Rolle der Funktion (`TestAutoScalingEvent-role`).

1. Wählen Sie **Löschen** aus.

1. Wenn Sie zur Bestätigung aufgefordert werden, geben Sie den Namen der Rolle ein und wählen Sie dann **Delete (Löschen)**.

**Löschen der IAM-Richtlinie**

1. Öffnen Sie die Seite [Richtlinien](https://console.aws.amazon.com/iam/home?#/policies) in der IAM-Konsole.

1. Wählen Sie die Richtlinie aus, die Sie erstellt haben (`TestAutoScalingEvent-policy`).

1. Wählen Sie **Aktionen**, **Löschen** aus.

1. Wenn Sie zur Bestätigung aufgefordert werden, geben Sie den Namen der Richtlinie ein und wählen Sie dann **Delete (Löschen)**.

## Zugehörige Ressourcen
<a name="instance-metadata-lifecycle-hooks-tutorial-related-resources"></a>

Die folgenden damit verbundenen Themen können hilfreich sein, wenn Sie Code entwickeln, der auf der Grundlage der in den Instance-Metadaten verfügbaren Daten Aktionen für Instances aufruft.
+ [Abrufen des Ziellebenszyklus-Status durch Instance-Metadaten](retrieving-target-lifecycle-state-through-imds.md). In diesem Abschnitt wird der Lebenszyklus-Status für andere Anwendungsfälle, wie z. B. die Beendigung der Instance, beschrieben.
+ [Lebenszyklus-Hooks hinzufügen (Konsole)](adding-lifecycle-hooks.md#adding-lifecycle-hooks-console). Diese Prozedur zeigt Ihnen, wie Sie Lebenszyklus-Hooks sowohl für Aufskalieren (Start von Instances) als auch Abskalieren (Beendigung von Instances oder Rückkehr zu einem warmen Pool) hinzufügen können.
+ [Kategorien von Instance-Metadaten](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html#instancedata-data-categories) im *Amazon EC2 EC2-Benutzerhandbuch*. In diesem Thema sind alle Kategorien von Instance-Metadaten aufgeführt, mit denen Sie Aktionen auf EC2-Instances aufrufen können.

Ein Tutorial, das Ihnen zeigt, wie Sie Amazon verwenden, um Regeln EventBridge zu erstellen, die Lambda-Funktionen auf der Grundlage von Ereignissen aufrufen, die mit den Instances in Ihrer Auto Scaling Scaling-Gruppe passieren, finden Sie unter. [Tutorial: Konfigurieren eines Lebenszyklus-Hook, der eine Lambda-Funktion aufruft](tutorial-lifecycle-hook-lambda.md)

# Tutorial: Konfigurieren eines Lebenszyklus-Hook, der eine Lambda-Funktion aufruft
<a name="tutorial-lifecycle-hook-lambda"></a>

In dieser Übung erstellen Sie eine EventBridge Amazon-Regel, die ein Filtermuster enthält, das bei Übereinstimmung eine AWS Lambda Funktion als Regelziel aufruft. Wir stellen das Filtermuster und Beispielfunktionscode zur Verfügung. 

Wenn alles richtig konfiguriert ist, führt die Lambda-Funktion am Ende dieses Tutorials beim Start von Instances eine benutzerdefinierte Aktion aus. Die benutzerdefinierte Aktion protokolliert einfach das Ereignis im CloudWatch Logs-Protokollstream, der der Lambda-Funktion zugeordnet ist.

Die Lambda-Funktion führt auch einen Rückruf durch, damit der Lebenszyklus der Instance fortgesetzt werden kann, wenn diese Aktion erfolgreich ist. Die Instance kann jedoch den Start abbrechen und beendet werden, wenn die Aktion fehlschlägt.

In der folgenden Abbildung wird der Ablauf für ein Scale-Out-Ereignis zusammengefasst, wenn Sie eine Lambda-Funktion verwenden, um eine benutzerdefinierte Aktion auszuführen. Nach dem Start einer Instance wird der Lebenszyklus der Instance angehalten, bis der Lifecycle-Hook abgeschlossen ist, entweder durch eine Zeitüberschreitung oder dadurch, dass Amazon EC2 Auto Scaling ein Signal zum Fortfahren empfängt. 

![\[Der Ablauf für ein Scale-Out-Ereignis, wenn Sie eine Lambda-Funktion verwenden, um eine benutzerdefinierte Aktion auszuführen.\]](http://docs.aws.amazon.com/de_de/autoscaling/ec2/userguide/images/lifecycle-hook-lambda-function.png)


**Anmerkung**  
Je nach Anwendungsfall können Sie einen Lifecycle-Hook konfigurieren, indem Sie die folgenden Schritte ausführen und eine Regel erstellen. EventBridge Oder Sie können eine Lambda-Funktion verwenden, um einen Lifecycle-Hook direkt zu konfigurieren, ohne eine EventBridge Regel zu erstellen.

**Topics**
+ [Voraussetzungen](#lambda-hello-world-tutorial-prerequisites)
+ [Schritt 1: Erstellen einer IAM-Rolle mit Berechtigungen zum Abschließen von Lebenszyklus-Aktionen](#lambda-create-iam-role)
+ [Schritt 2: Erstellen einer Lambda-Funktion](#lambda-create-hello-world-function)
+ [Schritt 3: Erstellen Sie eine Regel EventBridge](#lambda-create-rule)
+ [Schritt 4: Hinzufügen eines Lebenszyklus-Hooks](#lambda-add-lifecycle-hook)
+ [Schritt 5: Testen und Prüfen des Ereignisses](#lambda-testing-hook-notifications)
+ [Schritt 6: Bereinigen](#lambda-lifecycle-hooks-tutorial-cleanup)
+ [Zugehörige Ressourcen](#lambda-lifecycle-hooks-tutorial-related-resources)

## Voraussetzungen
<a name="lambda-hello-world-tutorial-prerequisites"></a>

Erstellen Sie vor Beginn dieses Tutorials eine Auto-Scaling-Gruppe, falls noch keine vorhanden ist. Öffnen Sie zum Erstellen einer Auto-Scaling-Gruppe die Seite [Auto-Scaling-Gruppen](https://console.aws.amazon.com/ec2/v2/home?#AutoScalingGroups) der Amazon EC2-Konsole und wählen Sie **Eine Auto-Scaling-Gruppe erstellen** aus.

## Schritt 1: Erstellen einer IAM-Rolle mit Berechtigungen zum Abschließen von Lebenszyklus-Aktionen
<a name="lambda-create-iam-role"></a>

Bevor Sie eine Lambda-Funktion erstellen, müssen Sie zunächst eine Ausführungsrolle und eine Berechtigungsrichtlinie erstellen, damit Lambda Lebenszyklus-Hooks abschließen kann.

**So erstellen Sie die Richtlinie**

1. Öffnen Sie in der IAM-Konsole [Policies (Richtlinien)](https://console.aws.amazon.com/iam/home?#/policies) und wählen Sie dann **Create policy (Richtlinie erstellen)** aus.

1. Wählen Sie den Tab **JSON**.

1. Fügen Sie im Feld **Richtliniendokument** das folgende Richtliniendokument in das Feld ein und ersetzen Sie den Text durch Ihre Kontonummer und den Namen Ihrer Auto Scaling Scaling-Gruppe. **italics**

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "autoscaling:CompleteLifecycleAction"
         ],
         "Resource": "arn:aws:autoscaling:*:123456789012:autoScalingGroup:*:autoScalingGroupName/my-asg"
       }
     ]
   }
   ```

------

1. Wählen Sie **Weiter** aus. 

1. Geben Sie unter **Policy name** (Richtlinienname) **LogAutoScalingEvent-policy** ein. Wählen Sie **Richtlinie erstellen** aus.

Wenn Sie die Richtlinie fertig erstellt haben, können Sie eine Rolle erstellen, die sie verwendet.

**So erstellen Sie die Rolle**

1. Wählen Sie im Navigationsbereich auf der linken Seite **Roles (Rollen)**.

1. Wählen Sie **Rolle erstellen** aus.

1. Wählen Sie für **Select trusted entity** (Vertrauenswürdige Entität auswählen) die Option **AWS -Dienst**.

1. Wählen Sie für Ihren Anwendungsfall **Lambda** und dann **Next** (Weiter) aus. 

1. Wählen **Sie unter Berechtigungen hinzufügen** die Richtlinie aus, die Sie erstellt haben (**LogAutoScalingEvent-policy**), und die benannte **AWSLambdaBasicExecutionRole**Richtlinie aus. Wählen Sie anschließend **Weiter**. 
**Anmerkung**  
Die **AWSLambdaBasicExecutionRole**Richtlinie verfügt über die Berechtigungen, die die Funktion benötigt, um Protokolle in Logs zu CloudWatch schreiben.

1. Geben Sie auf der Seite **Set role name and review** (Rollenname festlegen und überprüfen) für **Role name** (Rollenname) **LogAutoScalingEvent-role** ein und wählen Sie **Create role** (Rolle erstellen) aus.

## Schritt 2: Erstellen einer Lambda-Funktion
<a name="lambda-create-hello-world-function"></a>

Erstellen Sie eine Lambda-Funktion, die als Ziel für Ereignisse dienen soll. Die in Node.js geschriebene Lambda-Beispielfunktion wird aufgerufen, EventBridge wenn ein entsprechendes Ereignis von Amazon EC2 Auto Scaling ausgelöst wird.

**So erstellen Sie eine Lambda-Funktion**

1. Öffnen Sie die Seite [Funktionen](https://console.aws.amazon.com/lambda/home#/functions) der Lambda-Konsole.

1. Wählen Sie **Funktion erstellen** und **Von Grund auf neu erstellen** aus.

1. Geben Sie unter **Basic Information (Grundlegende Informationen)** für **Function name (Funktionsname)** **LogAutoScalingEvent** ein.

1. Wählen Sie unter **Laufzeit** die Option **Node.js 18.x** aus.

1. Scrollen Sie nach unten und wählen Sie **Ändern der standardmäßigen Ausführungsrolle** und dann unter **Ausführungsrolle** **Verwenden einer vorhandenen Rolle** aus.

1. **Wählen Sie für **Existing role die Option -role** aus. LogAutoScalingEvent**

1. Übernehmen Sie im Übrigen die Standardwerte.

1. Wählen Sie **Funktion erstellen**. Sie kehren zum Code und zur Konfiguration der Funktion zurück. 

1. Fügen Sie bei geöffneter `LogAutoScalingEvent`-Funktion in der Konsole unter **Code-Quelle** im Editor den folgenden Beispielcode in die Datei index.mjs ein.

   ```
   import { AutoScalingClient, CompleteLifecycleActionCommand } from "@aws-sdk/client-auto-scaling";
   export const handler = async(event) => {
     console.log('LogAutoScalingEvent');
     console.log('Received event:', JSON.stringify(event, null, 2));
     var autoscaling = new AutoScalingClient({ region: event.region });
     var eventDetail = event.detail;
     var params = {
       AutoScalingGroupName: eventDetail['AutoScalingGroupName'], /* required */
       LifecycleActionResult: 'CONTINUE', /* required */
       LifecycleHookName: eventDetail['LifecycleHookName'], /* required */
       InstanceId: eventDetail['EC2InstanceId'],
       LifecycleActionToken: eventDetail['LifecycleActionToken']
     };
     var response;
     const command = new CompleteLifecycleActionCommand(params);
     try {
       var data = await autoscaling.send(command);
       console.log(data); // successful response
       response = {
         statusCode: 200,
         body: JSON.stringify('SUCCESS'),
       };
     } catch (err) {
       console.log(err, err.stack); // an error occurred
       response = {
         statusCode: 500,
         body: JSON.stringify('ERROR'),
       };
     }
     return response;
   };
   ```

   Dieser Code protokolliert einfach das Ereignis, sodass Sie am Ende dieses Tutorials sehen können, dass ein Ereignis im CloudWatch Log-Log-Stream erscheint, das mit dieser Lambda-Funktion verknüpft ist. 

1. Wählen Sie **Bereitstellen**. 

## Schritt 3: Erstellen Sie eine Regel EventBridge
<a name="lambda-create-rule"></a>

Erstellen Sie eine EventBridge Regel, um Ihre Lambda-Funktion auszuführen. Weitere Informationen zur Verwendung von EventBridge finden Sie unter [Wird EventBridge zur Behandlung von Auto Scaling Scaling-Ereignissen verwendet](automating-ec2-auto-scaling-with-eventbridge.md).

**So erstellen Sie eine Regel mithilfe der Konsole**

1. Öffnen Sie die [EventBridge-Konsole](https://console.aws.amazon.com/events/).

1. Wählen Sie im Navigationsbereich **Regeln** aus.

1. Wählen Sie **Regel erstellen** aus.

1. Zum **Define rule detail** (Festlegen der Regeldetails) gehen Sie folgendermaßen vor:

   1. Geben Sie unter **Name** **LogAutoScalingEvent-rule** ein.

   1. Bei **Event bus** (Ereignisbus) wählen Sie **default** (Standard) aus. Wenn ein AWS-Service in Ihrem Konto ein Ereignis generiert, wird es immer an den Standard-Event-Bus Ihres Kontos weitergeleitet.

   1. Bei **Regeltyp** wählen Sie **Regel mit einem Ereignismuster** aus.

   1. Wählen Sie **Weiter** aus.

1. Bei **Build event pattern** (Ereignis-Muster erstellen) gehen Sie wie folgt vor:

   1. Wählen Sie als **Eventquelle AWS ** **Events oder EventBridge Partnerevents** aus.

   1. Scrollen Sie nach unten zu **Ereignis-Muster** und gehen Sie wie folgt vor:

   1. 

      1. Wählen Sie für **Ereignisquelle** die Option **AWS-Services** aus.

      1. Für **AWS-Service**, wählen Sie **Auto Scaling** aus.

      1. Wählen Sie in **Event Type (Ereignistyp)** die Option **Instance Launch and Terminate (Starten und Beenden von Instances)** aus.

      1. Standardmäßig entspricht die Regel jedem Abskalierungs- oder Aufskalierungs-Ereignis. Um eine Regel zu erstellen, die Sie benachrichtigt, wenn ein Aufskalierungs-Ereignis vorliegt und eine Instance aufgrund eines Lebenszyklus-Hook in einen Wartezustand versetzt wird, wählen Sie **Specific instance event(s)** (Bestimmte Instance-Ereignisse) und wählen Sie **EC2 Instance-launch Lifecycle Action** (Lebenszyklusaktion beim Start von EC2-Instances) aus.

      1. Standardmäßig stimmt die Regel mit jeder Auto-Scaling-Gruppe in der Region überein. Damit die Regel mit einer bestimmten Auto-Scaling-Gruppe übereinstimmt, wählen Sie **Specific group name(s)** und wählen Sie dann die Gruppe aus.

      1. Wählen Sie **Weiter** aus.

1. Bei **Select target(s)** (Ziel(e) auswählen) gehen Sie wie folgt vor:

   1. Für **Target types** (Zieltypen), wählen Sie **AWS-Service** aus.

   1. Für **Select a target** (Ein Ziel auswählen), wählen die Option **Lambda function** (Lambda-Funktion) aus.

   1. Wählen Sie für **Funktion** die Option **LogAutoScalingEvent**.

   1. Klicken Sie zweimal auf **Weiter**.

1. Wählen Sie auf der Seite **Überprüfen und erstellen** die Option **Regel erstellen** aus.

## Schritt 4: Hinzufügen eines Lebenszyklus-Hooks
<a name="lambda-add-lifecycle-hook"></a>

In diesem Abschnitt fügen Sie einen Lebenszyklus-Hook hinzu, damit Lambda Ihre Funktion beim Start auf Instances ausführt.

**So fügen Sie einen Lebenszyklus-Hook hinzu**

1. Öffnen Sie die [Seite Auto-Scaling-Gruppen](https://console.aws.amazon.com/ec2/v2/home?#AutoScalingGroups) in der Amazon-EC2-Konsole.

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

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

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

   1. Geben Sie für **Lebenszyklus-Hooks** den Wert **LogAutoScalingEvent-hook** ein.

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

   1. Für **Heartbeat-Zeitüberschreitung** geben Sie den Wert **300** für die Anzahl an Sekunden ein, um auf einen Rückruf von Ihrer Lambda-Funktion zu warten.

   1. Für **Standardergebnis** wählen Sie **ABBRECHEN** aus. Dies bedeutet, dass die Auto-Scaling-Gruppe eine neue Instance beendet, wenn die Zeitüberschreitung des Hook erreicht ist, ohne einen Rückruf von Ihrer Lambda-Funktion erhalten zu haben.

   1. (Optional) Lassen Sie **Benachrichtigungs-Metadaten** leer. Die Ereignisdaten, an die wir übergeben, EventBridge enthalten alle notwendigen Informationen, um die Lambda-Funktion aufzurufen.

1. Wählen Sie **Erstellen** aus.

## Schritt 5: Testen und Prüfen des Ereignisses
<a name="lambda-testing-hook-notifications"></a>

Um das Ereignis zu testen, aktualisieren Sie die Auto-Scaling-Gruppe, indem Sie die gewünschte Kapazität der Auto-Scaling-Gruppe um 1 erhöhen. Ihre Lambda-Funktion wird innerhalb weniger Sekunden nach der Erhöhung der gewünschten Kapazität aufgerufen.

**So erhöhen Sie die Größe der Auto-Scaling-Gruppe**

1. Öffnen Sie die [Seite Auto-Scaling-Gruppen](https://console.aws.amazon.com/ec2/v2/home?#AutoScalingGroups) in der Amazon-EC2-Konsole.

1. Aktivieren Sie das Kontrollkästchen neben der Auto-Scaling-Gruppe, um Details in einem unteren Bereich anzuzeigen und weiterhin die oberen Zeilen des oberen Bereichs anzuzeigen. 

1. Wählen Sie im unteren Bereich auf der Registerkarte **Details** die Option **Gruppendetails**, **Bearbeiten** aus.

1. Erhöhen Sie für **Desired capacity (Gewünschte Kapazität** den aktuellen Wert um 1.

1. Wählen Sie **Aktualisieren** aus. Während eine Instance gestartet wird, zeigt die Spalte **Status** den Status *Updating capacity (Kapazität aktualisieren)* an. 

Nachdem Sie die gewünschte Kapazität erhöht haben, können Sie prüfen, ob die Lambda-Funktion aufgerufen wurde.

**Anzeigen der Ausgabe aus der Lambda-Funktion**

1. Öffnen Sie die [Seite Protokollgruppen](https://console.aws.amazon.com/cloudwatch/home#logs:) der CloudWatch Konsole.

1. Wählen Sie den Namen der Protokollgruppe für Ihre Lambda-Funktion aus (`/aws/lambda/LogAutoScalingEvent`).

1. Wählen Sie den Namen des Protokoll-Streams aus, um die von der Funktion für die Lebenszyklus-Aktion bereitgestellten Daten anzuzeigen.

Als Nächstes können Sie anhand der Beschreibung der Skalierungsaktivitäten prüfen, ob die Instance erfolgreich gestartet wurde.

**Ansehen der Skalierungsaktivität**

1. Wählen Sie auf der Seite **Auto-Scaling-Gruppen** Ihre Gruppe aus.

1. Auf der Registerkarte **Activity (Aktivität)** wird unter **Activity history (Aktivitätsverlauf)** in der Spalte **Status** angezeigt, ob Ihre Auto-Scaling-Gruppe Instances erfolgreich gestartet hat. 
   + Wenn die Aktion erfolgreich war, hat die Skalierungsaktivität den Status „Erfolgreich“.
   + Wenn es fehlgeschlagen ist, sehen Sie nach einigen Minuten eine Skalierungsaktivität mit dem Status „Abgebrochen“ und die Statusmeldung „Instance konnte nicht abgeschlossen werden: Lebenszyklusaktion des Benutzers: Lebenszyklusaktion mit Token E85EB647-4FE0-4909-B341-A6C42Beispiel wurde abgebrochen: Lebenszyklusaktion mit ABBRUCH-Ergebnis abgeschlossen“.

**So verkleinern Sie die Auto-Scaling-Gruppe**  
Wenn Sie die zusätzliche Instance, die Sie für diesen Test gestartet haben, nicht benötigen, können Sie die Registerkarte **Details** öffnen und Desired capacity (**Gewünschte Kapazität**) um 1 reduzieren.

## Schritt 6: Bereinigen
<a name="lambda-lifecycle-hooks-tutorial-cleanup"></a>

Wenn Sie mit den Ressourcen gearbeitet haben, die Sie speziell für dieses Tutorial erstellt haben, führen Sie die folgenden Schritte aus, um sie zu löschen.

**So löschen Sie den Lebenszyklus-Hook**

1. Öffnen Sie die [Seite Auto-Scaling-Gruppen](https://console.aws.amazon.com/ec2/v2/home?#AutoScalingGroups) in der Amazon-EC2-Konsole.

1. Aktivieren Sie das Kontrollkästchen neben Ihrer Auto-Scaling-Gruppe.

1. Wählen Sie auf der Registerkarte **Instance management (Instance-Verwaltung)** unter **Lebenszyklus-Hooks** den Lebenszyklus (`LogAutoScalingEvent-hook`) aus.

1. Wählen Sie **Actions (Aktionen)**, **Delete (Löschen)** aus.

1. Um dies zu bestätigen, wählen Sie erneut **Delete (Löschen)** aus.

**Um die EventBridge Amazon-Regel zu löschen**

1. Öffnen Sie die [Seite Regeln](https://console.aws.amazon.com/events/home?#/rules) in der EventBridge Amazon-Konsole.

1. Wählen Sie in **Event bus (Ereignisbus)** den Ereignisbus aus, der der Regel zugeordnet ist (`Default`).

1. Aktivieren Sie das Kontrollkästchen neben Ihrer Regel (`LogAutoScalingEvent-rule`). 

1. Wählen Sie **Löschen** aus.

1. Wenn Sie zur Bestätigung aufgefordert werden, geben Sie den Namen der Anwendung ein, und wählen Sie dann **Delete** aus.

Wenn Sie mit der Beispielfunktion fertig sind, löschen Sie sie. Sie können auch die Protokollgruppe löschen, welche die Protokolle der Funktion speichert, sowie die von Ihnen erstellte Ausführungsrolle und Berechtigungsrichtlinie.

**So löschen Sie eine Lambda-Funktion**

1. Öffnen Sie die Seite [Funktionen](https://console.aws.amazon.com/lambda/home#/functions) der Lambda-Konsole.

1. Wählen Sie die Funktion (`LogAutoScalingEvent`) aus.

1. Wählen Sie **Aktionen**, **Löschen** aus.

1. Wenn Sie zur Bestätigung aufgefordert werden, geben Sie**delete**um die angegebene Funktion zu löschen und wählen Sie dann**Löschen**.

**So löschen Sie die Protokollgruppe**

1. Öffnen [Sie die Seite Protokollgruppen](https://console.aws.amazon.com/cloudwatch/home#logs:) der CloudWatch Konsole.

1. Wählen Sie die Protokollgruppe der Funktion (`/aws/lambda/LogAutoScalingEvent`).

1. Wählen Sie **Actions (Aktionen)**, **Delete log group(s) (Protokollgruppe(n) löschen)** aus.

1. Wählen Sie im Dialogfeld **Delete log group(s) (Protokollgruppe(n) löschen)** die Option **Delete (Löschen)** aus.

**So löschen Sie die Ausführungsrolle**

1. Öffnen Sie die Seite [Roles (Rollen)](https://console.aws.amazon.com/iam/home?#/roles) in der IAM-Konsole.

1. Wählen Sie die Rolle der Funktion (`LogAutoScalingEvent-role`).

1. Wählen Sie **Löschen** aus.

1. Wenn Sie zur Bestätigung aufgefordert werden, geben Sie den Namen der Rolle ein und wählen Sie dann **Delete (Löschen)**.

**Löschen der IAM-Richtlinie**

1. Öffnen Sie die Seite [Richtlinien](https://console.aws.amazon.com/iam/home?#/policies) in der IAM-Konsole.

1. Wählen Sie die Richtlinie aus, die Sie erstellt haben (`LogAutoScalingEvent-policy`).

1. Wählen Sie **Aktionen**, **Löschen** aus.

1. Wenn Sie zur Bestätigung aufgefordert werden, geben Sie den Namen der Richtlinie ein und wählen Sie dann **Delete (Löschen)**.

## Zugehörige Ressourcen
<a name="lambda-lifecycle-hooks-tutorial-related-resources"></a>

Die folgenden verwandten Themen können hilfreich sein, wenn Sie EventBridge Regeln erstellen, die auf Ereignissen basieren, die den Instances in Ihrer Auto Scaling Scaling-Gruppe passieren.
+ [Wird EventBridge zur Behandlung von Auto Scaling Scaling-Ereignissen verwendet](automating-ec2-auto-scaling-with-eventbridge.md). In diesem Abschnitt finden Sie Beispiele für Ereignisse für andere Anwendungsfälle, einschließlich Ereignisse für die Skalierung.
+ [Lebenszyklus-Hooks hinzufügen (Konsole)](adding-lifecycle-hooks.md#adding-lifecycle-hooks-console). Diese Prozedur zeigt Ihnen, wie Sie Lebenszyklus-Hooks sowohl für Aufskalieren (Start von Instances) als auch Abskalieren (Beendigung von Instances oder Rückkehr zu einem warmen Pool) hinzufügen können.

Ein Tutorial, das Ihnen zeigt, wie Sie den Instance Metadata Service (IMDS) verwenden, um eine Aktion innerhalb der Instance selbst aufzurufen, finden Sie unter [Tutorial: Verwenden Sie Datenskript- und Instance-Metadaten, um den Lebenszyklusstatus abzurufen](tutorial-lifecycle-hook-instance-metadata.md).