

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.

# Steuern welche Auto-Scaling-Instances beim Abskalieren beendet werden
<a name="as-instance-termination"></a>

Amazon EC2 Auto Scaling verwendet Kündigungsrichtlinien, um die Reihenfolge für das Beenden von Instances festzulegen. Sie können eine vordefinierte Richtlinie verwenden oder eine benutzerdefinierte Richtlinie erstellen, um Ihre spezifischen Anforderungen zu erfüllen. Durch die Verwendung einer benutzerdefinierten Richtlinie oder Instanzskalierung als Schutz können Sie auch verhindern, dass Ihre Auto Scaling Scaling-Gruppe Instances beendet, die noch nicht bereit sind, beendet zu werden.

**Topics**
+ [Wenn Amazon EC2 Auto Scaling Kündigungsrichtlinien verwendet](#common-scenarios-termination)
+ [Kündigungsrichtlinien für Amazon EC2 Auto Scaling konfigurieren](ec2-auto-scaling-termination-policies.md)
+ [Eine benutzerdefinierte Beendigungsrichtlinie mit Lambda erstellen](lambda-custom-termination-policy.md)
+ [Verwenden Sie den Instance Scale-In Protection, um die Instanzbeendigung zu kontrollieren](ec2-auto-scaling-instance-protection.md)
+ [Gestalten Sie Ihre Anwendungen so, dass sie die Instance-Kündigung ordnungsgemäß handhaben](gracefully-handle-instance-termination.md)

## Wenn Amazon EC2 Auto Scaling Kündigungsrichtlinien verwendet
<a name="common-scenarios-termination"></a>

In den folgenden Abschnitten werden die Szenarien beschrieben, in denen Amazon EC2 Auto Scaling Beendigungsrichtlinien verwendet. 

**Topics**
+ [Ereignisse skalieren](#common-scenarios-termination-scale-in)
+ [Instance-Aktualisierung](#common-scenarios-termination-instance-refreshes)
+ [Neuausgleich der Availability Zone](#common-scenarios-termination-rebalancing)

### Ereignisse skalieren
<a name="common-scenarios-termination-scale-in"></a>

Eine Skalierung tritt ein, wenn es einen neuen Wert für die gewünschte Kapazität einer Auto Scaling Scaling-Gruppe gibt, der niedriger ist als die aktuelle Kapazität der Gruppe.

In den folgenden Szenarien kommt es zu einer Zunahme von Ereignissen:
+ Wenn dynamische Skalierungsrichtlinien verwendet werden, nimmt die Größe der Gruppe aufgrund von Änderungen des Werts einer Metrik ab
+ Bei Verwendung der geplanten Skalierung nimmt die Größe der Gruppe infolge einer geplanten Aktion ab
+ Wenn Sie die Gruppengröße manuel verkleinern

Das folgende Beispiel zeigt, wie Kündigungsrichtlinien funktionieren, wenn ein bestimmtes Ereignis eintritt.

1. Die Auto-Scaling-Gruppe in diesem Beispiel hat einen Instance-Typ, zwei Availability Zones und eine gewünschte Kapazität von zwei Instances. Es verfügt auch über eine dynamische Skalierungsrichtlinie, die Instances hinzufügt und entfernt, wenn die Ressourcenauslastung zunimmt oder abnimmt. Die zwei Instances in dieser Gruppe sind auf die zwei Availability Zones verteilt, wie im folgenden Diagramm dargestellt.  
![\[Eine einfache Auto Scaling Scaling-Gruppe mit zwei Instanzen.\]](http://docs.aws.amazon.com/de_de/autoscaling/ec2/userguide/images/termination-policy-default-diagram.png)

1. Wenn die Auto-Scaling-Gruppe skaliert wird, startet Amazon EC2 Auto Scaling eine neue Instance. Die Auto-Scaling-Gruppe verfügt nun über drei Instances, die auf die beiden Availability Zones verteilt sind, wie im folgenden Diagramm dargestellt.  
![\[Eine Auto Scaling Scaling-Gruppe nach der Skalierung um eine Instanz.\]](http://docs.aws.amazon.com/de_de/autoscaling/ec2/userguide/images/termination-policy-default-2-diagram.png)

1. Wenn die Auto-Scaling-Gruppe skaliert wird, beendet Amazon EC2 Auto Scaling eine der Instances. 

1. Wenn Sie der Gruppe keine bestimmte Beendigungsrichtlinie zugewiesen haben, verwendet Amazon EC2 Auto Scaling die Standardbeendigungsrichtlinie. Sie wählt die Availability Zone mit zwei Instances aus und beendet die Instance, die über eine Startkonfiguration, eine andere Startvorlage oder die älteste Version der aktuellen Startvorlage gestartet wurde. Wenn die Instances mit derselben Startvorlage und Version gestartet wurden, wählt Amazon EC2 Auto Scaling die Instance aus, die der nächsten Abrechnungsstunde am nächsten ist, und beendet sie.   
![\[Eine Auto Scaling Scaling-Gruppe nach der Skalierung um eine Instanz.\]](http://docs.aws.amazon.com/de_de/autoscaling/ec2/userguide/images/termination-policy-default-3-diagram.png)

### Instance-Aktualisierung
<a name="common-scenarios-termination-instance-refreshes"></a>

Sie können eine Instance-Aktualisierung starten, um die Instances in Ihrer Auto Scaling Scaling-Gruppe zu aktualisieren. Während einer Instance-Aktualisierung beendet Amazon EC2 Auto Scaling Instances in der Gruppe und startet dann Ersetzungen für die beendeten Instances. Die Beendigungsrichtlinie für die Auto-Scaling-Gruppe steuert, welche Instances zuerst ersetzt werden. 

### Neuausgleich der Availability Zone
<a name="common-scenarios-termination-rebalancing"></a>

Amazon EC2 Auto Scaling gleicht Ihre Kapazität gleichmäßig über die Availability Zones aus, die für Ihre Auto-Scaling-Gruppe aktiviert sind. Dies trägt dazu bei, die Auswirkungen eines Ausfalls der Availability Zone zu reduzieren. Wenn die Verteilung der Kapazität über Availability Zones nicht ausgeglichen ist, gleicht Amazon EC2 Auto Scaling die Auto-Scaling-Gruppe neu aus, indem Instances in den aktivierten Availability Zones mit den wenigsten Instances gestartet und Instances an anderer Stelle beendet werden. Die Beendigungsrichtlinie steuert, welche Instances zuerst für die Beendigung priorisiert werden. 

Es gibt eine Reihe von Gründen, warum die Verteilung von Instances über Availability Zones aus dem Gleichgewicht geraten kann.

Entfernen von Instances  
Wenn Sie Instances von Ihrer Auto-Scaling-Gruppe trennen, setzen Sie Instances in den Standby-Modus oder beenden Instances explizit und verringern die gewünschte Kapazität, wodurch das Starten von Ersatz-Instances verhindert wird. Dadurch kann die Gruppe unausgewogen sein. Wenn dies auftritt, kann Amazon EC2 Auto Scaling dies kompensieren und das Gleichgewicht der Availability Zones wiederherstellen.

Verwenden anderer Availability Zones als ursprünglich angegeben  
Wenn Sie Ihre Auto-Scaling-Gruppe erweitern, um zusätzliche Availability Zones einzuschließen oder Sie ändern, welche Availability Zones verwendet werden, startet Amazon EC2 Auto Scaling Instances in den neuen Availability Zones, und Instances in den anderen Zonen werden beendet, um sicherzustellen, dass sich Ihre Auto-Scaling-Gruppe gleichmäßig über Availability Zones erstreckt.

Ausfall der Verfügbarkeit  
Verfügbarkeitsausfälle sind selten. Wenn jedoch eine Availability Zone nicht verfügbar ist und später wiederhergestellt wird, kann die Auto-Scaling-Gruppe zwischen Availability Zones unausgewogen sein. Amazon EC2 Auto Scaling versucht, die Gruppe schrittweise neu auszugleichen, und durch den Neuausgleich können Instances in anderen Zonen beendet werden.  
Nehmen wir das Beispiel mit einer Auto-Scaling-Gruppe mit einem Instance-Typ, zwei Availability Zones und einer gewünschten Kapazität von zwei Instances. In einer Situation, in der eine Availability Zone fehlschlägt, startet Amazon EC2 Auto Scaling automatisch eine neue Instance in der fehlerfreien Availability Zone, um die Instance in der instabilen Availability Zone zu ersetzen. Wenn dann die instabile Availability Zone in einen fehlerfreien Zustand zurückkehrt, startet Amazon EC2 Auto Scaling automatisch eine neue Instance in dieser Zone, wodurch wiederum eine Instance in der nicht betroffenen Zone beendet wird. 

**Anmerkung**  
Beim Wiederherstellen des Gleichgewichts startet Amazon EC2 Auto Scaling vor dem Beenden der alten Instances neue, damit Leistung und Verfügbarkeit Ihrer Anwendung nicht beeinträchtigt werden.   
Da Amazon EC2 Auto Scaling vor dem Beenden der alten Instances versucht, neue zu starten, kann das Wiederherstellen des Gleichgewichts beeinträchtigt und sogar gänzlich unterbrochen werden, falls die angegebene maximale Kapazität nahezu oder gänzlich erreicht ist. Um dieses Problem zu vermeiden, kann das System beim Wiederherstellen des Gleichgewichts die angegebene maximale Kapazität einer Gruppe vorübergehend um 10 % (oder um die Marge einer Instance, je nachdem, welcher Wert größer ist) überschreiten. Dieser Wert kann nur erhöht werden, wenn die Gruppe die maximale Kapazität erreicht hat oder kurz davor ist und das Wiederherstellen des Gleichgewichts aufgrund einer vom Benutzer angeforderten Neuverteilung der Availability Zones oder zum Kompensieren von Verfügbarkeitsproblemen der Availability Zones erforderlich ist. Die Kapazität wird nur für die Dauer der Wiederherstellung des Gleichgewichts in der Gruppe erhöht.

# Kündigungsrichtlinien für Amazon EC2 Auto Scaling konfigurieren
<a name="ec2-auto-scaling-termination-policies"></a>

Eine Kündigungsrichtlinie legt die Kriterien fest, nach denen Amazon EC2 Auto Scaling Instances in einer bestimmten Reihenfolge beendet. Standardmäßig verwendet Amazon EC2 Auto Scaling eine Kündigungsrichtlinie, die darauf ausgelegt ist, zuerst Instances zu beenden, die veraltete Konfigurationen verwenden. Sie können die Kündigungsrichtlinie ändern, um zu kontrollieren, welche Instances am wichtigsten zuerst beendet werden müssen. 

Wenn Amazon EC2 Auto Scaling Instances beendet, versucht es, das Gleichgewicht zwischen den Availability Zones aufrechtzuerhalten, die für Ihre Auto Scaling Scaling-Gruppe aktiviert sind. Die Aufrechterhaltung des zonalen Gleichgewichts hat Vorrang vor der Kündigungsrichtlinie. Wenn eine Availability Zone mehr Instances als andere hat, wendet Amazon EC2 Auto Scaling die Kündigungsrichtlinie zuerst auf die unausgeglichene Zone an. Wenn die Availability Zones ausgeglichen sind, wendet es die Kündigungsrichtlinie auf alle Zonen an.

**Topics**
+ [So funktioniert die standardmäßige Kündigungsrichtlinie](#default-termination-policy)
+ [Standard-Beendigungsrichtlinie und Gruppe mit gemischten Instances](#default-termination-policy-mixed-instances-groups)
+ [Vordefinierte Kündigungsrichtlinien](#predefined-termination-policies)
+ [Ändern Sie die Kündigungsrichtlinie für eine Auto Scaling Scaling-Gruppe](custom-termination-policy.md)

**Anmerkung**  
Amazon EC2 Auto Scaling wendet Kündigungsrichtlinien nur auf Instances an, die von der Auto Scaling Scaling-Gruppe nicht als fehlerhaft eingestuft werden. Das hat zur Folge, dass Instances, die durch Auto Scaling Scaling-Integritätsprüfungen als fehlerhaft markiert wurden, die Bewertung der Kündigungsrichtlinien umgehen.  
Weitere Informationen finden Sie unter [Gestalten Sie Ihre Anwendungen so, dass sie die Instance-Kündigung ordnungsgemäß handhaben](gracefully-handle-instance-termination.md).

## So funktioniert die standardmäßige Kündigungsrichtlinie
<a name="default-termination-policy"></a>

Wenn Amazon EC2 Auto Scaling eine Instance beenden muss, identifiziert es zunächst, welche Availability Zone (oder Zonen) die meisten Instances und mindestens eine Instance hat, die nicht vor einer Skalierung geschützt ist. Anschließend bewertet es ungeschützte Instances innerhalb der identifizierten Availability Zone wie folgt:

**Instanzen, die veraltete Konfigurationen verwenden**
+ **Für Gruppen, die eine Startvorlage verwenden** — Stellen Sie fest, ob eine der Instances veraltete Konfigurationen verwendet, und priorisieren Sie dabei in dieser Reihenfolge:

  1. Suchen Sie zunächst nach Instances, die mit einer Startkonfiguration gestartet wurden.

  1. Suchen Sie dann nach Instances, die mit einer anderen Startvorlage als mit der aktuellen Startvorlage gestartet wurden.

  1. Suchen Sie abschließend nach Instances, die die älteste Version der aktuellen Startvorlage verwenden.
+ **Für Gruppen, die eine Startkonfiguration verwenden** — Stellen Sie fest, ob eine der Instances die älteste Startkonfiguration verwendet.

Wenn keine Instances mit veralteten Konfigurationen gefunden werden oder mehrere Instances zur Auswahl stehen, berücksichtigt Amazon EC2 Auto Scaling die nächsten Kriterien für Instances, die sich ihrer nächsten Abrechnungsstunde nähern. 

**Instances, die sich der nächsten Abrechnungsstunde nähern**  
Stellen Sie fest, ob eine der Instanzen, die die vorherigen Kriterien erfüllen, der nächsten Abrechnungsstunde am nächsten kommt. Wenn mehrere Instanzen gleich nah beieinander liegen, beenden Sie eine nach dem Zufallsprinzip. Auf diese Weise können Sie die Nutzung Ihrer Instances, die stündlich abgerechnet werden, maximieren. Der Großteil der EC2-Nutzung wird jetzt jedoch pro Sekunde abgerechnet, sodass diese Optimierung weniger Vorteile bietet. Weitere Informationen dazu finden Sie unter [Amazon EC2 – Preise](https://aws.amazon.com/ec2/pricing/). 

Das folgende Flussdiagramm zeigt, wie die standardmäßige Kündigungsrichtlinie für Gruppen funktioniert, die eine Startvorlage verwenden.

![\[Ein Flussdiagramm, das zeigt, wie eine Auto Scaling Scaling-Gruppe die Standard-Terminierungsrichtlinie verwendet, um Instances zu beenden.\]](http://docs.aws.amazon.com/de_de/autoscaling/ec2/userguide/images/termination-policy-default-flowchart-diagram.png)


## Standard-Beendigungsrichtlinie und Gruppe mit gemischten Instances
<a name="default-termination-policy-mixed-instances-groups"></a>

Amazon EC2 Auto Scaling wendet beim Beenden von Instances in [gemischten](ec2-auto-scaling-mixed-instances-groups.md) Instance-Gruppen zusätzliche Kriterien an. 

Wenn Amazon EC2 Auto Scaling eine Instance beenden muss, wird zunächst anhand der Gruppeneinstellungen ermittelt, welche Kaufoption (Spot oder On-Demand) beendet werden soll. Dadurch wird sichergestellt, dass sich die Gruppe im Laufe der Zeit dem angegebenen Verhältnis von Spot- und On-Demand-Instances nähert.

Anschließend wendet sie die Kündigungsrichtlinie unabhängig innerhalb jeder Availability Zone an. Sie bestimmt, welche Spot- oder On-Demand-Instance in welcher Availability Zone beendet werden soll, um die Availability Zones im Gleichgewicht zu halten. Dieselbe Logik gilt für eine gemischte Instance-Gruppe mit definierten Gewichtungen für die Instance-Typen. 

In jeder Zone funktioniert die standardmäßige Kündigungsrichtlinie wie folgt, um zu bestimmen, welche ungeschützte Instance innerhalb der identifizierten Kaufoption gekündigt werden kann:

1. Ermitteln Sie, ob eine der Instances beendet werden kann, um die Abstimmung mit der angegebenen [Zuweisungsstrategie](allocation-strategies.md) für die Auto Scaling Scaling-Gruppe zu verbessern. Wenn keine Instanzen für die Optimierung identifiziert wurden oder mehrere Instanzen zur Auswahl stehen, wird die Bewertung fortgesetzt.

1. Stellen Sie fest, ob eine der Instanzen veraltete Konfigurationen verwendet, und priorisieren Sie dabei in dieser Reihenfolge:

   1. Suchen Sie zunächst nach Instances, die mit einer Startkonfiguration gestartet wurden.

   1. Suchen Sie dann nach Instances, die mit einer anderen Startvorlage als mit der aktuellen Startvorlage gestartet wurden.

   1. Suchen Sie abschließend nach Instances, die die älteste Version der aktuellen Startvorlage verwenden.

   Wenn keine Instanzen mit veralteten Konfigurationen gefunden werden oder mehrere Instanzen zur Auswahl stehen, wird die Bewertung fortgesetzt.

1. Stellen Sie fest, ob eine der Instanzen der nächsten Abrechnungsstunde am nächsten ist. Wenn mehrere Instanzen gleich nah beieinander liegen, wählen Sie nach dem Zufallsprinzip eine aus.

## Vordefinierte Kündigungsrichtlinien
<a name="predefined-termination-policies"></a>

Sie wählen aus den folgenden vordefinierten Kündigungsrichtlinien:
+ **`Default`**— Beenden Sie Instances gemäß der Standard-Kündigungsrichtlinie.
+ **`AllocationStrategy`**— Beenden Sie Instances in der Auto Scaling Scaling-Gruppe, um die verbleibenden Instances an der Zuweisungsstrategie für den Instance-Typ auszurichten, der beendet wird (entweder eine Spot-Instance oder eine On-Demand-Instance). Diese Richtlinie ist nützlich, wenn Ihre bevorzugte Instance-Typen sich geändert haben. Wenn die Spot-Zuweisungsstrategie `lowest-price` lautet, können Sie Spot-Instances allmählich auf die N günstigsten Spot-Instance-Pools neu verteilen. Wenn die Spot-Zuweisungsstrategie `capacity-optimized` lautet, können Sie Spot-Instances allmählich auf mehrere Spot-Pools verteilen, in denen mehr Spot-Kapazität verfügbar ist. Sie können auch schrittweise On-Demand-Instances einer niedrigeren Priorität durch On-Demand-Instances einer höheren Priorität ersetzen.
+ **`OldestLaunchTemplate`**— Beendet Instances mit der ältesten Startvorlage. Mit dieser Richtlinie werden Instances, die eine langfristige Startvorlage verwenden, zuerst beendet, gefolgt von Instances, die eine älteste Version der aktuellen Startvorlage verwenden. Diese Richtlinie ist nützlich, wenn Sie eine Gruppe aktualisieren und die Instances einer früheren Konfiguration auslaufen lassen.
+ **`OldestLaunchConfiguration`**— Beendet Instances mit der ältesten Startkonfiguration. Diese Richtlinie ist nützlich, wenn Sie eine Gruppe aktualisieren und die Instances einer früheren Konfiguration auslaufen lassen. Mit dieser Richtlinie werden Instances, welche die nicht aktuelle Startkonfiguration verwenden, zuerst beendet.
+ **`ClosestToNextInstanceHour`**— Beendet Instances, die der nächsten Abrechnungsstunde am nächsten sind. Diese Richtlinie hilft Ihnen, die Nutzung Ihrer Instances mit Stundengebühr zu maximieren.
+ **`NewestInstance`**— Beendet die neueste Instanz in der Gruppe. Diese Richtlinie ist nützlich, wenn Sie eine neue Startkonfiguration testen, sie aber in der Produktionsumgebung nicht weiter verwenden möchten.
+ **`OldestInstance`**— Beendet die älteste Instanz in der Gruppe. Diese Option ist nützlich, wenn Sie die Instances in der Auto-Scaling-Gruppe auf einen neuen EC2-Instance-Typ upgraden. Sie können nach und nach Instances des alten Typs durch Instances des neuen Typs ersetzen.
**Anmerkung**  
Amazon EC2 Auto Scaling gleicht Instances immer zuerst über Availability Zones aus, unabhängig davon, welche Beendigungsrichtlinie verwendet wird. Daher können Situationen auftreten, in denen neuere Instances vor älteren Instances beendet werden. Beispielsweise, wenn eine kürzlich hinzugefügte Availability Zone vorhanden ist oder eine Availability Zone über mehr Instances verfügt als die anderen Availability Zones, die von der Gruppe verwendet werden. 

# Ändern Sie die Kündigungsrichtlinie für eine Auto Scaling Scaling-Gruppe
<a name="custom-termination-policy"></a>

Verwenden Sie eine der folgenden Methoden, um die Kündigungsrichtlinie für Ihre Auto Scaling Scaling-Gruppe zu ändern.

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

Sie können die Kündigungsrichtlinie nicht ändern, wenn Sie zum ersten Mal eine Auto Scaling Scaling-Gruppe in der Amazon EC2 Auto Scaling Scaling-Konsole erstellen. Die standardmäßige Beendigungsrichtlinie wird automatisch verwendet. Nachdem Ihre Auto Scaling Scaling-Gruppe erstellt wurde, können Sie die Standardrichtlinie durch eine andere Kündigungsrichtlinie oder durch mehrere Kündigungsrichtlinien ersetzen, die in der Reihenfolge aufgeführt sind, in der sie gelten sollen. 

**So ändern Sie die Kündigungsrichtlinie für eine Auto Scaling Scaling-Gruppe**

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 der Auto-Scaling-Gruppe.

   Im unteren Teil der Seite wird ein geteilter Bereich geöffnet.

1. Wählen Sie auf der Registerkarte **Details** die Option **Erweiterte Konfigurationen**, **Bearbeiten**.

1. Wählen Sie für **Beendigungsrichtlinien** eine oder mehrere Beendigungsrichtlinien aus. Wenn Sie mehrere Richtlinien auswählen, geben Sie diese in der Reihenfolge an, in der sie ausgewertet werden sollen.

   Sie können optional die Option **Benutzerdefinierte Beendigungsrichtlinie** wählen und dann eine Lambda-Funktion auswählen, die Ihren Anforderungen entspricht. Wenn Sie Versionen und Aliase für Ihre Lambda-Funktion erstellt haben, können Sie eine Version oder einen Alias aus der Dropdown-Liste **Version/Alias** auswählen. Um die unveröffentlichte Version Ihrer Lambda-Funktion zu verwenden, lassen Sie **Version/Alias** auf den Standardwert eingestellt. Weitere Informationen finden Sie unter [Eine benutzerdefinierte Beendigungsrichtlinie mit Lambda erstellen](lambda-custom-termination-policy.md).
**Anmerkung**  
Wenn Sie mehrere Richtlinien verwenden, muss deren Reihenfolge korrekt festgelegt werden:  
Wenn Sie die **Standardrichtlinie** verwenden, muss sie die letzte Richtlinie in der Liste sein.
Wenn Sie eine **Custom termination policy** (benutzerdefinierte Beendigungsrichtlinie) verwenden, muss diese die erste Richtlinie in der Liste sein.

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

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

Die Standardbeendigungsrichtlinie wird automatisch verwendet, es sei denn, es wird eine andere Richtlinie angegeben.

**So ändern Sie die Kündigungsrichtlinie für eine Auto Scaling Scaling-Gruppe**  
Verwenden Sie einen der folgenden Befehle:
+ [create-auto-scaling-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/create-auto-scaling-group.html)
+ [update-auto-scaling-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/update-auto-scaling-group.html)

Sie können diese Beendigungsrichtlinien einzeln verwenden oder sie zu einer Liste von Richtlinien zusammenführen. Nutzen Sie z. B. den folgenden Befehl, um eine Auto-Scaling-Gruppe zu aktualisieren, damit sie zuerst die Richtlinie `OldestLaunchConfiguration` und dann die Richtlinie `ClosestToNextInstanceHour` verwendet.

```
aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg --termination-policies "OldestLaunchConfiguration" "ClosestToNextInstanceHour"
```

Falls Sie die `Default`-Beendigungsrichtlinie verwenden, setzen Sie sie ans Ende der Liste der Beendigungsrichtlinien. Beispiel, `--termination-policies "OldestLaunchConfiguration" "Default"`.

Um eine benutzerdefinierte Kündigungsrichtlinie zu verwenden, müssen Sie zunächst Ihre Kündigungsrichtlinie mithilfe von erstellen AWS Lambda. Um die Lambda-Funktion zur Verwendung als Beendigungsrichtlinie anzugeben, setzen Sie sie an die erste Stelle in der Liste der Beendigungsrichtlinien. Beispiel, `--termination-policies "arn:aws:lambda:us-west-2:123456789012:function:HelloFunction:prod" "OldestLaunchConfiguration"`. Weitere Informationen finden Sie unter [Eine benutzerdefinierte Beendigungsrichtlinie mit Lambda erstellen](lambda-custom-termination-policy.md).

------

# Eine benutzerdefinierte Beendigungsrichtlinie mit Lambda erstellen
<a name="lambda-custom-termination-policy"></a>

Amazon EC2 Auto Scaling verwendet Beendigungsrichtlinien, um zu priorisieren, welche Instances zuerst beendet werden sollen, wenn die Größe Ihrer Auto-Scaling-Gruppe verringert (*abskaliert*) wird. Ihre Auto-Scaling-Gruppe verwendet eine Standard-Beendigungsrichtlinie, Sie können jedoch optional eigene Beendigungsrichtlinien auswählen oder erstellen. Weitere Informationen zur Auswahl einer vordefinierten Beendigungsrichtlinie finden Sie unter [Kündigungsrichtlinien für Amazon EC2 Auto Scaling konfigurieren](ec2-auto-scaling-termination-policies.md).

In diesem Thema erfahren Sie, wie Sie eine benutzerdefinierte Beendigungsrichtlinie mithilfe einer AWS Lambda -Funktion erstellen, die Amazon EC2 Auto Scaling als Reaktion auf bestimmte Ereignisse aufruft. Die von Ihnen erstellte Lambda-Funktion verarbeitet die Informationen in den Eingabedaten, die von Amazon EC2 Auto Scaling gesendet werden, und gibt eine Liste von Instances zurück, die zum Beenden bereit sind.

Eine benutzerdefinierte Beendigungsrichtlinie bietet eine bessere Kontrolle darüber, welche Instances wann beendet werden. Wenn beispielsweise Ihre Auto-Scaling-Gruppe abskaliert, kann Amazon EC2 Auto Scaling nicht ermitteln, ob Workloads ausgeführt werden, die nicht unterbrochen werden sollten. Mit einer Lambda-Funktion können Sie die Beendigungsanforderung validieren und warten, bis der Workload abgeschlossen ist, bevor Sie die Instance-ID zur Beendigung an Amazon EC2 Auto Scaling zurückgeben. 

**Topics**
+ [Eingabedaten](#lambda-custom-termination-policy-input-data)
+ [Antwortdaten](#lambda-custom-termination-policy-response-data)
+ [Überlegungen](#lambda-termination-policy-considerations)
+ [So erstellen Sie die Lambda-Funktion:](#lambda-custom-termination-policy-create-function)
+ [Einschränkungen](#lambda-custom-termination-policy-limitations)

## Eingabedaten
<a name="lambda-custom-termination-policy-input-data"></a>

Amazon EC2 Auto Scaling generiert eine JSON-Nutzlast zur Skalierung von Ereignissen und tut dies auch, wenn Instances aufgrund der maximalen Instance-Lebensdauer oder der Instance-Aktualisierungsfunktionen kurz vor der Beendigung stehen. Es generiert auch eine JSON-Nutzlast für die Skalierung von Ereignissen, die es auslösen kann, wenn Ihre Gruppe zwischen Availability Zones neu verteilt wird.

Diese Nutzlast enthält Informationen über die Kapazität, die Amazon EC2 Auto Scaling beendet werden muss, eine Liste der Instances, die es für die Beendigung vorschlägt, und das Ereignis, das die Beendigung ausgelöst hat. 

Es folgt ein Beispiel einer Nutzlast:

```
{
  "AutoScalingGroupARN": "arn:aws:autoscaling:us-east-1:<account-id>:autoScalingGroup:d4738357-2d40-4038-ae7e-b00ae0227003:autoScalingGroupName/my-asg",
  "AutoScalingGroupName": "my-asg",
  "CapacityToTerminate": [
    {
      "AvailabilityZone": "us-east-1b",
      "Capacity": 2,
      "InstanceMarketOption": "on-demand"
    },
    {
      "AvailabilityZone": "us-east-1b",
      "Capacity": 1,
      "InstanceMarketOption": "spot"
    },
    {
      "AvailabilityZone": "us-east-1c",
      "Capacity": 3,
      "InstanceMarketOption": "on-demand"
    }
  ],
  "Instances": [
    {
      "AvailabilityZone": "us-east-1b",
      "InstanceId": "i-0056faf8da3e1f75d",
      "InstanceType": "t2.nano",
      "InstanceMarketOption": "on-demand"
    },
    {
      "AvailabilityZone": "us-east-1c",
      "InstanceId": "i-02e1c69383a3ed501",
      "InstanceType": "t2.nano",
      "InstanceMarketOption": "on-demand"
    },
    {
      "AvailabilityZone": "us-east-1c",
      "InstanceId": "i-036bc44b6092c01c7",
      "InstanceType": "t2.nano",
      "InstanceMarketOption": "on-demand"
    },
    ...
  ],
  "Cause": "SCALE_IN"
}
```

Die Nutzlast enthält den Namen der Auto-Scaling-Gruppe, ihren Amazon-Ressourcennamen (ARN) und die folgenden Elemente:
+ `CapacityToTerminate` beschreibt, wie viel Ihrer Spot- oder On-Demand-Kapazität in einer bestimmten Availability Zone beendet wird. 
+ `Instances` stellt die Instances dar, die Amazon EC2 Auto Scaling basierend auf den Informationen in `CapacityToTerminate` vorschlägt. 
+ `Cause` beschreibt das Ereignis, das die Beendigung ausgelöst hat: `SCALE_IN`, `INSTANCE_REFRESH`, `MAX_INSTANCE_LIFETIME` oder `REBALANCE`. 

In den folgenden Informationen werden die wichtigsten Faktoren erläutert, wie Amazon EC2 Auto Scaling die `Instances`In den Eingabedaten generiert:
+ Die Aufrechterhaltung des Gleichgewichts zwischen den Availability Zones hat Vorrang, wenn eine Instance aufgrund skalierter Ereignisse und aufgrund von Abbrüchen aufgrund von Instanzaktualisierungen beendet wird. Wenn daher eine Availability Zone über mehr Instances verfügt als die anderen Availability Zones, die von der Gruppe verwendet werden, umfassen die Eingabedaten nur Instances zur Beendigung, die aus der unausgewogenen Availability Zone stammen. Wenn die von der Gruppe verwendeten Availability Zones ausgeglichen sind, enthalten die Eingabedaten Instances aus allen Availability Zones der Gruppe. 
+ Wenn Sie eine [Richtlinie für gemischte Instances](ec2-auto-scaling-mixed-instances-groups.md) verwenden, hat die Aufrechterhaltung Ihrer Spot- und On-Demand-Kapazitäten auf der Grundlage Ihrer gewünschten Prozentsätze für jede Kaufoption ebenfalls Vorrang. Wir identifizieren zunächst, welcher der beiden Typen (Spot oder On-Demand) beendet werden soll. Außerdem ermitteln wir dann, welche Instances (innerhalb der identifizierten Kaufoption) in welchen Availability Zones beendet werden sollen, was dazu führt, dass die Availability Zones am stärksten ausgeglichen sind. 

## Antwortdaten
<a name="lambda-custom-termination-policy-response-data"></a>

Die Eingabedaten und Antwortdaten arbeiten zusammen, um die Liste der zu beendenden Instances einzugrenzen. 

Mit der angegebenen Eingabe sollte die Antwort Ihrer Lambda-Funktion wie im folgenden Beispiel aussehen:

```
{
  "InstanceIDs": [
    "i-02e1c69383a3ed501",
    "i-036bc44b6092c01c7",
    ...
  ]
}
```

Die `InstanceIDs` in der Antwort stellen die Instances dar, die zum Beenden bereit sind. 

Alternativ können Sie einen anderen Satz von Instances zurückgeben, die zum Beenden bereit sind, wodurch die Instances in den Eingabedaten außer Kraft gesetzt werden. Wenn beim Aufruf Ihrer Lambda-Funktion keine Instances beendet werden können, können Sie auch keine Instances zurückgeben.

Wenn keine Instances zum Beenden bereit sind, sollte die Antwort Ihrer Lambda-Funktion wie im folgenden Beispiel aussehen:

```
{
  "InstanceIDs": [ ]
}
```

## Überlegungen
<a name="lambda-termination-policy-considerations"></a>

Beachten Sie die folgenden Überlegungen bei der Verwendung einer benutzerdefinierten Beendigungsrichtlinie:
+ Wenn Sie eine Instance zuerst in den Antwortdaten zurückgeben, wird die Beendigung nicht garantiert. Wenn beim Aufruf Ihrer Lambda-Funktion mehr als die erforderliche Anzahl von Instances zurückgegeben wird, wertet Amazon EC2 Auto Scaling jede Instance anhand der anderen Beendigungsrichtlinien aus, die Sie für Ihre Auto-Scaling-Gruppe angegeben haben. Wenn mehrere Beendigungsrichtlinien vorhanden sind, wird versucht, die nächste Beendigungsrichtlinie in der Liste anzuwenden. Wenn mehr Instances vorhanden sind, als zum Beenden erforderlich sind, wird die nächste Beendigungsrichtlinie fortgesetzt usw. Wenn keine anderen Beendigungsrichtlinien angegeben sind, wird die Standardbeendigungsrichtlinie verwendet, um zu bestimmen, welche Instances beendet werden sollen.
+ Wenn keine Instances zurückgegeben werden oder Ihre Lambda-Funktion eine Zeitüberschreitung auftritt, wartet Amazon EC2 Auto Scaling kurz, bevor Sie Ihre Funktion erneut aufrufen. Bei jeder Größenordnung wird versucht, solange die gewünschte Kapazität der Gruppe geringer ist als die aktuelle Kapazität. Zum Beispiel versucht es bei Instance-Aktualisierungsbasierten Beendigungen eine Stunde lang. Wenn danach weiterhin Instances nicht beendet werden, schlägt der Instance-Aktualisierungsvorgang fehl. Bei maximaler Instance-Lebensdauer versucht Amazon EC2 Auto Scaling weiterhin, die Instance zu beenden, die als Überschreitung ihrer maximalen Lebensdauer identifiziert wird. 
+ Da Ihre Funktion wiederholt erneut versucht wird, stellen Sie sicher, dass Sie permanente Fehler im Code testen und beheben, bevor Sie eine Lambda-Funktion als benutzerdefinierte Beendigungsrichtlinie verwenden.
+ Wenn Sie die Eingabedaten mit Ihrer eigenen Liste der zu beendenden Instances überschreiben und das Beenden dieser Instances die Availability Zones aus dem Gleichgewicht bringen, passt Amazon EC2 Auto Scaling die Kapazitätsverteilung über Availability Zones schrittweise neu aus. Zuerst ruft es Ihre Lambda-Funktion auf, um zu sehen, ob es Instances gibt, die beendet werden können, damit sie bestimmen kann, ob mit dem Neuausgleich begonnen werden soll. Wenn Instances vorhanden sind, die beendet werden können, werden zuerst neue Instances gestartet. Wenn der Start der Instances abgeschlossen ist, wird festgestellt, dass die aktuelle Kapazität Ihrer Gruppe höher als die gewünschte Kapazität ist, und leitet bei Bedarf eine Skalierung ein.
+ Eine benutzerdefinierte Kündigungsrichtlinie hat keinen Einfluss auf Ihre Fähigkeit, auch Scale in Protection zu verwenden, um bestimmte Instances vor der Kündigung zu schützen. Weitere Informationen finden Sie unter [Verwenden Sie den Instance Scale-In Protection, um die Instanzbeendigung zu kontrollieren](ec2-auto-scaling-instance-protection.md).
+ Wenn Ihre Lambda-Funktion keine Instanzen zurückgibt, verhindert dies nicht automatisch jegliche Beendigung. Amazon EC2 Auto Scaling beendet weiterhin Instances, die bei den Auto Scaling Scaling-Zustandsprüfungen als fehlerhaft eingestuft wurden, unabhängig von den Kündigungsrichtlinien.

## So erstellen Sie die Lambda-Funktion:
<a name="lambda-custom-termination-policy-create-function"></a>

Erstellen Sie zunächst die Lambda-Funktion, damit Sie ihren Amazon-Ressourcennamen (ARN) in den Beendigungsrichtlinien für Ihre Auto-Scaling-Gruppe angeben können.

**Erstellen einer Lambda-Funktion (Konsole)**

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

1. Wählen Sie in der Navigationsleiste oben dieselbe Region aus, die Sie beim Erstellen der Auto-Scaling-Gruppe verwendet haben. 

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

1. Geben Sie unter **Basic information (Grundlegende Informationen)** bei **Function name (Funktionsname)** den Namen für Ihre Funktion ein.

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

1. Wenn Ihre Funktion noch in der Konsole geöffnet ist, fügen Sie unter **Funktionscode** Ihren Code in den Editor ein.

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

1. Optional können Sie eine veröffentlichte Version der Lambda-Funktion erstellen, indem Sie die Registerkarte **Versionen** und dann **Eine neue Version veröffentlichen** auswählen. Weitere Informationen zur Versionierung in Lambda finden Sie unter[Versionen der Lambda-Funktion](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html) im *AWS Lambda -Entwicklerhandbuch*.

1. Wenn Sie eine Version veröffentlichen möchten, wählen Sie die Registerkarte **Aliasnamen** aus, wenn Sie einen Alias mit dieser Version der Lambda-Funktion verbinden möchten. Weitere Informationen zu Aliassen in Lambda finden Sie unter [Versionen der Lambda-Funktion](https://docs.aws.amazon.com/lambda/latest/dg/configuration-aliases.html) im *AWS Lambda -Entwicklerhandbuch*.

1. Wählen Sie als Nächstes die Registerkarte **Konfiguration** und dann **Berechtigungen** aus. 

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

   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 als nächsten Schritt damit fort, den ARN Ihrer Funktion in den Beendigungsrichtlinien für Ihre Auto-Scaling-Gruppe anzugeben. Weitere Informationen finden Sie unter [Ändern Sie die Kündigungsrichtlinie für eine Auto Scaling Scaling-Gruppe](custom-termination-policy.md). 

**Anmerkung**  
Beispiele, die Sie als Referenz für die Entwicklung Ihrer Lambda-Funktion 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.

## Einschränkungen
<a name="lambda-custom-termination-policy-limitations"></a>
+ Sie können nur eine Lambda-Funktion in den Beendigungsrichtlinien für eine Auto-Scaling-Gruppe angeben. Wenn mehrere Beendigungsrichtlinien angegeben sind, muss zuerst die Lambda-Funktion angegeben werden.
+ Sie können auf Ihre Lambda-Funktion verweisen, indem Sie entweder einen unqualifizierten ARN (ohne Suffix) oder einen qualifizierten ARN verwenden, der entweder eine Version oder einen Alias als Suffix hat. Wenn ein unqualifizierter ARN verwendet wird (z. B. `function:my-function`), muss die ressourcenbasierte Richtlinie für die unveröffentlichte Version Ihrer Funktion erstellt werden. Wenn ein unqualifizierter ARN verwendet wird (z. B. `function:my-function:1` oder `function:my-function:prod`), muss die ressourcenbasierte Richtlinie für die spezifische veröffentlichte Version Ihrer Funktion erstellt werden.
+ Sie können einen qualifizierten ARN nicht mit dem `$LATEST`-Suffix verwenden. Wenn Sie versuchen, eine benutzerdefinierte Beendigungsrichtlinie hinzuzufügen, die sich auf einen qualifizierten ARN mit dem `$LATEST`-Suffix bezieht, führt dies zu einem Fehler.
+ Die Anzahl der in den Eingabedaten angegebenen Instances ist auf 30.000 Instances begrenzt. Wenn es mehr als 30.000 Instances gibt, die beendet werden könnten, nehmen die Eingabedaten `"HasMoreInstances": true` auf, umanzugehen, dass die maximale Anzahl von Instances zurückgegeben wird. 
+ Die maximale Laufzeit für Ihre Lambda-Funktion beträgt zwei Sekunden (2.000 Millisekunden). Als bewährte Methode sollten Sie den Zeitüberschreitungswert Ihrer Lambda-Funktion auf der Grundlage Ihrer erwarteten Laufzeit festlegen. Lambda-Funktionen haben eine Standard-Zeitüberschreitung von drei Sekunden, dies kann jedoch verringert werden. 
+ Wenn Ihre Laufzeit das 2-Sekunden-Limit überschreitet, wird jede aktive Skala so lange angehalten, bis die Laufzeit unter diesen Schwellenwert fällt. Suchen Sie für Lambda-Funktionen mit durchweg längeren Laufzeiten nach einer Möglichkeit, die Laufzeit zu reduzieren, z. B. indem Sie die Ergebnisse zwischenspeichern, sodass sie bei nachfolgenden Lambda-Aufrufen abgerufen werden können.
+ Kontenübergreifende Lambda-Funktionen werden nicht unterstützt. Die Lambda-Funktion, die als benutzerdefinierte Kündigungsrichtlinie verwendet wird, muss sich in derselben AWS-Konto Auto Scaling Scaling-Gruppe befinden. Die Einrichtungsanweisungen auf dieser Seite konzentrieren sich speziell auf Konfigurationen mit demselben Konto.
+ Benutzerdefinierte Kündigungsrichtlinien gelten nicht für fehlerhafte Instances. Ungesunde Instances gelten immer als kündigungsfähig, und die Lambda-Funktion wertet nur die Kündigungsreihenfolge für die verbleibenden Instances aus.

# Verwenden Sie den Instance Scale-In Protection, um die Instanzbeendigung zu kontrollieren
<a name="ec2-auto-scaling-instance-protection"></a>

Mit dem Instance Scale-In Protection haben Sie die Kontrolle darüber, welche Instances Amazon EC2 Auto Scaling beenden kann. Ein häufiger Anwendungsfall für diese Funktion ist die Skalierung containerbasierter Workloads. Weitere Informationen finden Sie unter [Gestalten Sie Ihre Anwendungen so, dass sie die Instance-Kündigung ordnungsgemäß handhaben](gracefully-handle-instance-termination.md).

Standardmäßig ist der Instanz-Scale-In-Schutz deaktiviert, wenn Sie eine Auto Scaling Scaling-Gruppe erstellen. Das bedeutet, dass Amazon EC2 Auto Scaling jede Instance in der Gruppe beenden kann.

Sie können Instances schützen, sobald sie gestartet werden, indem Sie die Instance-Abskalierungsschutz-Einstellung für Ihre Auto-Scaling-Gruppe aktivieren. Der Instance-Skalierungsschutz tritt in Kraft, sobald der Instance-Status `InService` lautet. Um dann zu kontrollieren, welche Instances beendet werden können, deaktivieren Sie die Abskalierungsschutz-Einstellung für einzelne Instances innerhalb der Auto-Scaling-Gruppe. Auf diese Weise können Sie bestimmte Instances weiterhin vor dem ungewollten Beenden schützen. 

**Topics**
+ [Überlegungen](#instance-protection-considerations)
+ [Ändern Sie den Scale-In-Schutz für eine Auto Scaling Scaling-Gruppe](#instance-protection-group)
+ [Ändern Sie den Scale-In-Schutz für eine Instanz](#instance-protection-instance)

## Überlegungen
<a name="instance-protection-considerations"></a>

Bei der Verwendung von Instance Scale-In Protection sollten Sie Folgendes beachten:
+ Wenn alle Instances in einer Auto Scaling-Gruppe vor einer Skalierung geschützt sind und ein Scale-In-Ereignis eintritt, wird die gewünschte Kapazität verringert. Die Auto Scaling Scaling-Gruppe kann die erforderliche Anzahl von Instances jedoch erst beenden, wenn ihre Instanzskalierung in den Schutzeinstellungen deaktiviert ist. In der AWS-Managementkonsole enthält der **Aktivitätsverlauf** für die Auto Scaling Scaling-Gruppe die folgende Meldung, wenn alle Instances in einer Auto Scaling-Gruppe vor dem Einskalieren geschützt sind, wenn ein Scale-In-Ereignis eintritt: `Could not scale to desired capacity because all remaining instances are protected from scale in.`
+ Wenn Sie eine Instance trennen, die vor dem Skalieren geschützt ist, geht ihre Einstellung für den Instance Scale In-Schutz verloren. Wenn Sie die Instance erneut an die Gruppe anhängen, erbt sie die aktuelle Skalenschutzeinstellung für die Instanz der Gruppe. Wenn Amazon EC2 Auto Scaling eine neue Instance startet oder eine Instance aus einem warmen Pool in die Auto Scaling Scaling-Gruppe verschiebt, erbt die Instance die Instance-Skalierungsschutzeinstellung der Auto Scaling-Gruppe. 
+ Der Instance-Skalierungsschutz schützt die Auto-Scaling-Instances nicht vor Folgendem:
  + Ersetzung im Zuge von Zustandsprüfungen, falls die Instance Zustandsprüfungen nicht besteht. Weitere Informationen finden Sie unter [Zustandsprüfungen für Instances in einer Auto-Scaling-Gruppe](ec2-auto-scaling-health-checks.md).
  + Spot-Instance-Unterbrechungen Eine Spot-Instance wird beendet, wenn keine Kapazität mehr verfügbar ist oder der Spot-Preis Ihren Höchstpreis übersteigt. 
  + Eine Kapazitätsblock-Reservierung endet. Amazon EC2 fordert die Capacity Block-Instances zurück, auch wenn sie vor Skalierung geschützt sind.
  + Manuelles Beenden mit dem Befehl. `terminate-instance-in-auto-scaling-group` Weitere Informationen finden Sie unter [Beenden einer Instance in Ihrer Auto-Scaling-Gruppe (AWS CLI)](ec2-auto-scaling-scaling-manually.md#terminate-an-instance-aws-cli).
  + Manuelles Beenden über die Amazon EC2 EC2-Konsole, CLI-Befehle und API-Operationen. Aktivieren Sie den Amazon EC2-Beendigungsschutz, um Auto-Scaling-Instances vor manueller Beendigung zu schützen. (Dies verhindert nicht, dass Amazon EC2 Auto Scaling Instances beendet oder manuell über den `terminate-instance-in-auto-scaling-group` Befehl beendet.) Informationen zur Aktivierung des Amazon EC2 EC2-Kündigungsschutzes in einer Startvorlage finden Sie unter[Erstellen einer Startvorlage mithilfe erweiterter Einstellungen](advanced-settings-for-your-launch-template.md).

## Ändern Sie den Scale-In-Schutz für eine Auto Scaling Scaling-Gruppe
<a name="instance-protection-group"></a>

Sie können den Instance-Skalierungsschutz für eine Auto-Scaling-Gruppe aktivieren oder deaktivieren. Wenn Sie ihn aktivieren, ist für alle neuen Instances, die von der Gruppe gestartet werden, der Instanz-Scale-In-Schutz aktiviert.

Das Aktivieren oder Deaktivieren dieser Einstellung für eine Auto Scaling Scaling-Gruppe hat keine Auswirkungen auf bestehende Instances.

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

**So aktivieren Sie den Scale-In-Schutz für eine neue Auto Scaling Scaling-Gruppe**  
Wenn Sie die Auto Scaling Scaling-Gruppe erstellen, aktivieren Sie auf der Seite **Gruppengröße und Skalierungsrichtlinien konfigurieren** unter **Instance Scale-In Protection** das Kontrollkästchen **Instance Scale-In Protection aktivieren**.

**Um den Scale-in-Schutz für eine bestehende Gruppe zu aktivieren oder zu deaktivieren**

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 der Auto-Scaling-Gruppe.

   Im unteren Teil der Seite wird ein geteilter Bereich geöffnet.

1. Wählen Sie auf der Registerkarte **Details** die Option **Erweiterte Konfigurationen**, **Bearbeiten**.

1. Aktivieren oder deaktivieren Sie für **Instance Scale-In Protection** das Kontrollkästchen **Instance-Scale Protection aktivieren** oder deaktivieren, um diese Option nach Bedarf zu aktivieren oder zu deaktivieren.

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

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

**So aktivieren Sie den Scale-In-Schutz für eine neue Auto Scaling Scaling-Gruppe**  
Verwenden Sie den folgenden [create-auto-scaling-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/create-auto-scaling-group.html)-Befehl, um den Instance-Skalierungsschutz zu aktivieren:

```
aws autoscaling create-auto-scaling-group --auto-scaling-group-name my-asg --new-instances-protected-from-scale-in ...
```

**Um den Scale-In-Schutz für eine bestehende Gruppe zu aktivieren**  
Verwenden Sie den folgenden [update-auto-scaling-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/update-auto-scaling-group.html)Befehl, um den Instanz-Scale-In-Schutz für die angegebene Auto Scaling Scaling-Gruppe zu aktivieren.

```
aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg --new-instances-protected-from-scale-in
```

**Um den Scale-In-Schutz für eine bestehende Gruppe zu deaktivieren**  
Verwenden Sie den folgenden Befehl, um den Instance-Skalierungsschutz für die angegebene Gruppe zu deaktivieren:

```
aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg --no-new-instances-protected-from-scale-in
```

------

## Ändern Sie den Scale-In-Schutz für eine Instanz
<a name="instance-protection-instance"></a>

Standardmäßig übernehmen Instances die Instance-Skalierungsschutzeinstellung der Auto-Scaling-Gruppe, der sie angehören. Sie können den Instanz-Scale-In-Schutz jedoch für einzelne Instances nach deren Start aktivieren oder deaktivieren.

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

**Um den Scale-in-Schutz für eine Instance zu aktivieren oder zu deaktivieren**

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 **Instances** eine Instance aus.

1. Um den Instance-Skalierungsschutz zu aktivieren, wählen Sie **Actions (Aktionen)**, **Set Scale In Protection (Skalierungsschutz festlegen)** aus. Wählen Sie nach Aufforderung **Set Scale In Protection (Skalierungsschutz einrichten)** aus.

1. Um den Instance-Abwärtsskalierungsschutz zu deaktivieren, wählen Sie **Actions (Aktionen)**, **Remove Scale In Protection (Skalierungsschutz entfernen)** aus. Wählen Sie nach Aufforderung **Remove Scale In Protection (Skalierungsschutz entfernen)** aus.

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

**Um den Scale-In-Schutz für eine Instance zu aktivieren**  
Verwenden Sie den folgenden [set-instance-protection](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/set-instance-protection.html)-Befehl, um den Instance-Skalierungsschutz für die angegebene Instance zu aktivieren:

```
aws autoscaling set-instance-protection --instance-ids i-5f2e8a0d --auto-scaling-group-name my-asg --protected-from-scale-in
```

**Um den Scale-In-Schutz für eine Instance zu deaktivieren**  
Verwenden Sie den folgenden Befehl, um den Instance-Skalierungsschutz der angegebenen Instance zu deaktivieren:

```
aws autoscaling set-instance-protection --instance-ids i-5f2e8a0d --auto-scaling-group-name my-asg --no-protected-from-scale-in
```

------

**Anmerkung**  
Denken Sie daran, dass der Instance Scale-In Protection nicht garantiert, dass Instances im Falle eines menschlichen Fehlers nicht beendet werden, z. B. wenn jemand eine Instance manuell über die Amazon EC2 EC2-Konsole beendet oder. AWS CLI Wenn Sie Ihre Instance davor schützen möchten, dass sie versehentlich beendet wird, verwenden Sie den Amazon EC2-Beendigungsschutz. Selbst bei aktiviertem Beendigungsschutz und Instance-Scale-In-Schutz können Daten, die im Instance-Speicher gespeichert werden, verloren gehen, wenn eine Zustandsprüfung feststellt, dass eine Instance fehlerhaft ist oder wenn die Gruppe selbst versehentlich gelöscht wurde. Wie bei jeder Umgebung ist es eine bewährte Vorgehensweise, Ihre Daten häufig zu sichern bzw. zu für Ihre Business Continuity-Anforderungen geeigneten Intervallen. 

# Gestalten Sie Ihre Anwendungen so, dass sie die Instance-Kündigung ordnungsgemäß handhaben
<a name="gracefully-handle-instance-termination"></a>

 In diesem Thema werden Funktionen beschrieben, mit denen Sie verhindern können, dass Ihre Amazon EC2 Auto Scaling Scaling-Gruppe Amazon EC2-Instances beendet, die noch nicht zum Beenden bereit sind. Standardmäßig hat Auto Scaling keinen Einblick in die Anwendungen, die auf Ihren Instances ausgeführt werden. Es kann Instances beenden, bevor Ihre Anwendung ordnungsgemäß heruntergefahren oder die zugewiesenen Jobs abgeschlossen werden kann. Diese Funktionen geben Ihrer Anwendung Zeit, um laufende Arbeiten abzuschließen, den Status zu übertragen oder eine Bereinigung durchzuführen, bevor die Instance beendet wird. Sie können sie je nach den Anforderungen Ihrer Anwendung einzeln oder in Kombination verwenden. 

 Diese Funktionen sind besonders nützlich für statusbehaftete Workloads, bei denen jede Instance in Ihrer Flotte andere Daten, Jobs oder Status enthält als andere Instances. Das Beenden von Stateful-Instances ohne ordnungsgemäßes Herunterfahren könnte dazu führen, dass Jobs mit langer Laufzeit von vorne neu gestartet werden, die Datenredundanz oder der Datenverlust reduziert und laufende Transaktionen oder Berechnungen unterbrochen werden. Um eine statusbehaftete Instance ordnungsgemäß herunterzufahren, sollte ihre Arbeitslast entweder entladen (Abschluss aller aktuell zugewiesenen Jobs) oder übertragen (Jobs, Daten oder Konfiguration auf eine andere aktive Instance verschieben). 

**Topics**
+ [Beendigungs-Lebenszyklus-Hooks](#gracefully-handle-instance-termination-lifecycle-hooks)
+ [Instance-Abskalierungsschutz](#gracefully-handle-instance-termination-scale-in-protection)
+ [Benutzerdefinierte Beendigungsrichtlinie](#gracefully-handle-instance-termination-custom-termination-policy)
+ [Richtlinie für den Instanzlebenszyklus](#gracefully-handle-instance-termination-instance-lifecycle-policy)
+ [Kündigungen insgesamt aussetzen](#gracefully-handle-instance-termination-suspend-terminate)
+ [Einschränkungen](#gracefully-handle-instance-termination-limitations)
+ [Beispielszenarien](#gracefully-handle-instance-termination-examples)

## Beendigungs-Lebenszyklus-Hooks
<a name="gracefully-handle-instance-termination-lifecycle-hooks"></a>

 Ein Termination-Lifecycle-Hook verlängert die Lebensdauer Ihrer Amazon EC2 EC2-Instance, die bereits für die Kündigung ausgewählt wurde. Er bietet zusätzliche Zeit, um laufende Arbeiten abzuschließen, die derzeit der Instance zugewiesen sind, oder um den Fortschritt zu speichern und die Arbeit auf eine andere Instance zu übertragen. 

 Bei vielen Workloads kann ein Terminierungs-Lifecycle-Hook ausreichen, um eine Anwendung auf einer Instance, die für die Kündigung ausgewählt wurde, ordnungsgemäß herunterzufahren. Dies ist ein Best-Effort-Ansatz und kann nicht verwendet werden, um eine Kündigung zu verhindern, wenn eine Aktion im Lebenszyklus einer Kündigung abgebrochen wird. Wenn Ihr Workload eine geringe Toleranz gegenüber Ausfällen bei Aktionen zur Kündigung des Lebenszyklus aufweist, konfigurieren Sie [Richtlinien für den Instanzlebenszyklus](https://docs.aws.amazon.com/autoscaling/ec2/userguide/instance-lifecycle-policy.html) in Kombination mit Ihren Terminierungs-Lifecycle-Hooks, um Instances beizubehalten. 

 Um einen Termination-Lifecycle-Hook verwenden zu können, müssen Sie wissen, wann eine Instance für die Kündigung ausgewählt wurde. Sie haben zwei Möglichkeiten, dies herauszufinden: 


| Option | Description | Am besten verwendet für | Link zur Dokumentation | 
| --- | --- | --- | --- | 
| Innerhalb der Instance |  Der Instance Metadata Service (IMDS) ist ein sicherer Endpunkt, bei dem Sie direkt von der Instance aus den Status einer Instance abfragen können. Wenn die Metadaten mit Terminated zurückgegeben werden, ist die Beendigung Ihrer Instance geplant.  |  Anwendungen, bei denen Sie eine Aktion auf der Instance ausführen müssen, bevor die Instance beendet wird.  |  [Rufen Sie den Ziellebenszyklusstatus ab](https://docs.aws.amazon.com/autoscaling/ec2/userguide/retrieving-target-lifecycle-state-through-imds.html)  | 
| Außerhalb der Instance |  Wenn eine Instance beendet wird, wird eine Ereignisbenachrichtigung generiert. Sie können Regeln mithilfe von Amazon EventBridge, Amazon SQS, Amazon SNS oder AWS Lambda zur Erfassung dieser Ereignisse erstellen und eine Antwort aufrufen, z. B. mit einer Lambda-Funktion.  |  Anwendungen, die außerhalb der Instance Aktionen durchführen müssen.  |  [Konfigurieren Sie ein Benachrichtigungsziel](https://docs.aws.amazon.com/autoscaling/ec2/userguide/prepare-for-lifecycle-notifications.html#lifecycle-hook-notification-target)  | 

 Um einen Lebenszyklus-Hook verwenden zu können, müssen Sie auch wissen, wann eine Instance für die vollständige Beendigung bereit ist. Amazon EC2 Auto Scaling beendet die Instance erst, wenn sie einen [ CompleteLifecycleAction](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_CompleteLifecycleAction.html)API-Aufruf erhält oder das Timeout abgelaufen ist, je nachdem, was zuerst eintritt. 

 Standardmäßig kann eine Instance aufgrund eines Beendigungs-Lebenszyklus-Hook eine Stunde lang weiterlaufen (Heartbeat-Timeout). Sie können den standardmäßigen Timeout konfigurieren, falls eine Stunde nicht ausreicht, um die Lebenszyklus-Aktion abzuschließen. Wenn eine Lebenszyklusaktion ausgeführt wird, können Sie das Timeout mit API-Aufrufen verlängern. [ RecordLifecycleActionHeartbeat](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_RecordLifecycleActionHeartbeat.html) 

 Weitere Informationen finden Sie unter [Lebenszyklus-Hooks bei Amazon EC2 Auto Scaling](lifecycle-hooks.md). 

## Instance-Abskalierungsschutz
<a name="gracefully-handle-instance-termination-scale-in-protection"></a>

 Mit dem Instance Scale-In Protection können Sie kontrollieren, welche Instances bei Scale-In-Ereignissen für die Kündigung ausgewählt werden. Insbesondere können Sie verhindern, dass eine Instance, die aktiv einen Job mit langer Laufzeit verarbeitet, beendet wird. Wenn Sie beispielsweise containerisierte Workloads ausführen, ist es üblich, alle Instanzen zu schützen und den Schutz nur für Instanzen aufzuheben, für die es keine aktuellen oder geplanten Aufgaben gibt. Instances können weiterhin nach neuen Jobs suchen und den Schutz wieder aktivieren, wenn neue Jobs zugewiesen werden. 

 Sie können den Scale-In-Schutz auf Auto Scaling Scaling-Gruppenebene und Instanzebene aktivieren. Wenn Sie den Scale-in-Schutz auf Auto Scaling Scaling-Gruppenebene aktivieren, werden nur neue Instances geschützt, wenn sie erstellt werden. Für bestehende Instances können Sie den Schutz einzeln aktivieren. 

 Anwendungen können den Schutz entweder von den Instanzen selbst aus oder von einer zentralen Kontrollebene aus einrichten, die verwaltet, ob jede Instanz beendet werden kann. Wir empfehlen den zentralisierten Ansatz für große Flotten oder wenn der Schutz häufig umgeschaltet werden muss, da Sie so Aufrufe stapelweise aufrufen [ SetInstanceProtection](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_SetInstanceProtection.html)und Probleme mit der API-Drosselung vermeiden können. 

 Weitere Informationen finden Sie unter [Verwenden Sie den Instance Scale-In Protection, um die Instanzbeendigung zu kontrollieren](ec2-auto-scaling-instance-protection.md). 

## Benutzerdefinierte Beendigungsrichtlinie
<a name="gracefully-handle-instance-termination-custom-termination-policy"></a>

 Wie beim Instance Scale-In Protection hilft Ihnen eine benutzerdefinierte Kündigungsrichtlinie dabei, zu verhindern, dass Ihre Amazon EC2 Auto Scaling Scaling-Gruppe bestimmte EC2-Instances beendet. Fehlerhafte Instances können unabhängig von Ihrer benutzerdefinierten Kündigungsrichtlinie trotzdem beendet werden. 

 Ihre Auto Scaling Scaling-Gruppe verwendet eine Standard-Kündigungsrichtlinie, um zu bestimmen, welche Amazon EC2 EC2-Instances sie zuerst beendet. Wenn Sie mehr Kontrolle darüber haben möchten, welche Instances zuerst beendet werden, können Sie mithilfe einer Lambda-Funktion eine benutzerdefinierte Kündigungsrichtlinie implementieren. Auto Scaling ruft diese Funktion immer dann auf, wenn es eine Instanz zum Beenden auswählen muss, und beendet nur Instances, die die Funktion zurückgibt. Wenn bei der Funktion ein Fehler auftritt, ein Timeout auftritt oder eine leere Liste zurückgegeben wird, beendet Auto Scaling keine Instances, es sei denn, die Instance ist fehlerhaft. 

 Eine benutzerdefinierte Kündigungsrichtlinie ist nützlich, wenn Ihre Anwendung erkennen kann, welche Instances inaktiv sind oder welche sicher beendet werden können. Dies erfordert in der Regel eine Kontrollebene, die die Arbeitslast in der gesamten Gruppe verfolgt. 

 Weitere Informationen finden Sie unter [Eine benutzerdefinierte Beendigungsrichtlinie mit Lambda erstellen](lambda-custom-termination-policy.md). 

## Richtlinie für den Instanzlebenszyklus
<a name="gracefully-handle-instance-termination-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. 

 Wenn Auto Scaling eine Instance zum Beenden auswählt, werden Ihre konfigurierten Terminierungs-Lifecycle-Hooks aufgerufen und Ihre Anwendung beginnt mit ordnungsgemäßem Herunterfahren. Wenn die Aktionen im Lebenszyklus der Kündigung erfolgreich abgeschlossen werden`CONTINUE`, wird die Instance normal beendet. Wenn jedoch eine Aktion zum Beenden des Lebenszyklus aus irgendeinem Grund abgebrochen wird, versetzt die Instance-Lebenszyklus-Richtlinie die Instance in einen beibehaltenen Zustand, anstatt sie zu beenden. Beibehaltene Instances werden nicht auf die gewünschte Kapazität Ihrer Auto Scaling Scaling-Gruppe angerechnet, sodass Ersatz-Instances automatisch gestartet werden. Es fallen Standardgebühren von Amazon EC2 sowohl für die beibehaltene Instance als auch für ihren Ersatz an, bis Sie die beibehaltene Instance manuell mithilfe der [ TerminateInstanceInAutoScalingGroup](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_TerminateInstanceInAutoScalingGroup.html)API beenden. 

 Um diese Funktion nutzen zu können, müssen Sie sowohl eine Instance-Lebenszyklus-Richtlinie mit aktiviertem `TerminateHookAbandon` Aufbewahrungs-Trigger als auch mindestens einen Terminierungs-Lifecycle-Hook konfigurieren. `retain` Da für zurückbehaltene Instances laufende Amazon EC2 EC2-Kosten anfallen und manuelle Maßnahmen erforderlich sind, ist die Überwachung von entscheidender Bedeutung. Sie sollten CloudWatch Metriken wie aktivieren `GroupTerminatingRetainedInstances` und CloudWatch Alarme einrichten, um Sie zu benachrichtigen, wenn Instances in den Status „Beibehalten“ wechseln. 

 Weitere Informationen finden Sie unter [Steuern Sie die Aufbewahrung von Instances mit Richtlinien für den Instance-Lebenszyklus](instance-lifecycle-policy.md). 

## Kündigungen insgesamt aussetzen
<a name="gracefully-handle-instance-termination-suspend-terminate"></a>

 Wenn Sie die vollständige Kontrolle über alle EC2-Instance-Kündigungen innerhalb Ihrer Amazon EC2 Auto Scaling Scaling-Gruppe benötigen, unterbrechen Sie den Vorgang. `Terminate` Wir empfehlen, diese Option nur zu verwenden, wenn Ihnen die oben genannten Optionen nicht die Kontrolle bieten, die Sie für Ihren Service benötigen. Indem Sie aufrufen, [ SuspendProcesses](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_SuspendProcesses.html)um den `Terminate` Prozess zu unterbrechen, verhindern Sie, dass Auto Scaling versucht, aus irgendeinem Grund zu beenden, es sei denn, es handelt sich um solche, die durch eine Benutzeranfrage an die [ TerminateInstanceInAutoScalingGroup](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_TerminateInstanceInAutoScalingGroup.html)API ausgelöst wurden. 

 Weitere Informationen finden Sie unter [Amazon EC2 Auto Scaling Scaling-Prozesse aussetzen und fortsetzen](as-suspend-resume-processes.md). 

## Einschränkungen
<a name="gracefully-handle-instance-termination-limitations"></a>

**Wichtig**  
 Wenn Sie Ihre Anwendung auf Amazon EC2 Auto Scaling so entwerfen, dass sie Instance-Kündigungen ordnungsgemäß verarbeitet, sollten Sie die folgenden Einschränkungen berücksichtigen. 

### Ungesunde Instances umgehen einige Schutzmaßnahmen
<a name="gracefully-handle-instance-termination-unhealthy-bypass"></a>

 Wenn eine Instance fehlerhaft ist, beginnt Amazon EC2 Auto Scaling damit, sie zu beenden, auch wenn Sie über benutzerdefinierte Kündigungsrichtlinien oder einen Scale-In-Schutz verfügen. Die einzige Möglichkeit, zu verhindern, dass fehlerhafte Instances durch Auto Scaling ersetzt werden, besteht darin`HealthCheck`, den`ReplaceUnhealthy`, `Terminate` or-Prozess auszusetzen. Sie können Lifecycle-Hooks und eine Instance-Lifecycle-Richtlinie verwenden, um es der Anwendung zu ermöglichen, ordnungsgemäß herunterzufahren oder alle Daten zu kopieren, die Sie wiederherstellen müssen, bevor die fehlerhafte Instance beendet wird. 


| Feature | Steuert fehlerfreie Instanzen | Steuert fehlerhafte Instanzen | 
| --- | --- | --- | 
| Benutzerdefinierte Kündigungsrichtlinien | ![\[alt text not found\]](http://docs.aws.amazon.com/de_de/autoscaling/ec2/userguide/images/success_icon.svg) Ja | ![\[alt text not found\]](http://docs.aws.amazon.com/de_de/autoscaling/ec2/userguide/images/negative_icon.svg) Nein | 
| Abskalierungsschutz | ![\[alt text not found\]](http://docs.aws.amazon.com/de_de/autoscaling/ec2/userguide/images/success_icon.svg) Ja | ![\[alt text not found\]](http://docs.aws.amazon.com/de_de/autoscaling/ec2/userguide/images/negative_icon.svg) Nein | 
|  HealthCheckReplaceUnhealthyAussetzen oder Terminate verarbeiten  | ![\[alt text not found\]](http://docs.aws.amazon.com/de_de/autoscaling/ec2/userguide/images/success_icon.svg) Ja | ![\[alt text not found\]](http://docs.aws.amazon.com/de_de/autoscaling/ec2/userguide/images/success_icon.svg) Ja | 
| Lebenszyklus-Hooks | ![\[alt text not found\]](http://docs.aws.amazon.com/de_de/autoscaling/ec2/userguide/images/success_icon.svg) Ja | ![\[alt text not found\]](http://docs.aws.amazon.com/de_de/autoscaling/ec2/userguide/images/success_icon.svg) Ja | 
| Richtlinie für den Instanzlebenszyklus | ![\[alt text not found\]](http://docs.aws.amazon.com/de_de/autoscaling/ec2/userguide/images/success_icon.svg) Ja | ![\[alt text not found\]](http://docs.aws.amazon.com/de_de/autoscaling/ec2/userguide/images/success_icon.svg) Ja | 

### Lifecycle-Hooks allein garantieren noch kein ordnungsgemäßes Herunterfahren
<a name="gracefully-handle-instance-termination-hooks-no-guarantee"></a>

 Standardmäßig werden Termination-Lifecycle-Hooks nach bestem Wissen und Gewissen ausgeführt. Wenn eine Aktion zum Beenden des Lebenszyklus abgebrochen wird, fährt Amazon EC2 Auto Scaling mit der sofortigen Beendigung der Instance fort. Sie können Terminierungs-Lifecycle-Hooks mit einer Instance-Lifecycle-Richtlinie kombinieren, um Instances beizubehalten, wenn die Aktionen zur Kündigung des Lebenszyklus abgebrochen werden. Mit dieser Kombination: 
+  Ihre Termination Lifecycle-Hooks versuchen, Ihre Anwendung ordnungsgemäß herunterzufahren, nachdem Auto Scaling eine Instance-Kündigung ausgelöst hat und die Entladung aller konfigurierten Elastic Load Balancing Balancing-Load Balancer abgeschlossen ist. 
+  Wenn eine Aktion zum Beenden des Lebenszyklus aus irgendeinem Grund abgebrochen wird, wechselt die Instance in den Status „Beibehalten“, anstatt beendet zu werden. 
+  Die beibehaltene Instance verbleibt in ihrem aktuellen Amazon EC2 EC2-Status, sodass Sie Ihre Shutdown-Verfahren manuell abschließen oder den Fehler untersuchen können. 
+  Sie können die gespeicherten Instances manuell beenden, indem Sie die [ TerminateInstanceInAutoScalingGroup](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_TerminateInstanceInAutoScalingGroup.html)API aufrufen, nachdem Sie die erforderlichen Aktionen abgeschlossen haben. 

 Weitere Informationen finden Sie unter [Steuern Sie die Aufbewahrung von Instances mit Richtlinien für den Instance-Lebenszyklus](instance-lifecycle-policy.md). 

### Bestimmte Optionen im Instance-Markt können mit begrenzter Vorankündigung unterbrochen werden
<a name="gracefully-handle-instance-termination-spot-interruptions"></a>

 Wenn Sie Instance-Marktoptionen wie Spot-Instances und unterbrechbare Kapazitätsreservierungen in Ihrer Auto Scaling Scaling-Gruppe verwenden, kann Amazon EC2 Ihre Instances jederzeit unterbrechen und zurückfordern. Diese Unterbrechungen umgehen alle Amazon EC2 Auto Scaling Scaling-Schutzmechanismen, einschließlich: 
+ Beendigungs-Lebenszyklus-Hooks
+ Instance-Abskalierungsschutz
+ Benutzerdefinierte Kündigungsrichtlinien
+ Richtlinien für den Lebenszyklus von Instanzen
+ Ausgesetzte Prozesse

 Wenn eine Spot-Instance eine Benachrichtigung über eine Unterbrechung erhält, haben Sie etwa zwei Minuten Zeit, um Aufgaben zum ordnungsgemäßen Herunterfahren durchzuführen. Sie können zwar Termination Lifecycle-Hooks verwenden, um auf Unterbrechungen der Spot-Instance zu reagieren, aber die Instance wird am Ende des zweiminütigen Zeitfensters zwangsweise beendet, auch wenn der Lifecycle-Hook noch läuft. Richtlinien für den Instance-Lebenszyklus können auch Unterbrechungen von Spot-Instances nicht verhindern. 

 Weitere Informationen zum Umgang mit Spot-Instance-Unterbrechungen finden Sie unter [Spot-Instance-Unterbrechungen](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-interruptions.html) und [Best Practices für Amazon EC2 Spot](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-best-practices.html) im *Amazon EC2 EC2-Benutzerhandbuch*. 

### Direkte Amazon EC2 EC2-Kündigungen umgehen alle Schutzmaßnahmen
<a name="gracefully-handle-instance-termination-direct-ec2-api"></a>

 Wenn Sie eine Instance in Ihrer Auto Scaling Scaling-Gruppe direkt mit der Amazon [ TerminateInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_TerminateInstances.html)EC2-API beenden, umgeht die Kündigung alle Amazon EC2 Auto Scaling-Schutzmechanismen. 

 Verwenden Sie stattdessen die [ TerminateInstanceInAutoScalingGroup](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_TerminateInstanceInAutoScalingGroup.html)API, um Instances in Ihrer Auto Scaling Scaling-Gruppe zu beenden und dabei Ihre konfigurierten Schutzmaßnahmen zu respektieren. 

## Beispielszenarien
<a name="gracefully-handle-instance-termination-examples"></a>

 Wenn Sie Amazon EC2 Auto Scaling verwenden, können Sie wählen, wie viel Flottenmanagement Auto Scaling in Ihrem Namen übernimmt und wie viel direkte Kontrolle Sie über Entscheidungen zur Kündigung von EC2-Instances behalten. Je sensibler Ihre Arbeitslast auf Instance-Kündigungen reagiert, desto mehr Kontrolle möchten Sie möglicherweise behalten. In den folgenden Beispielen werden Workloads mit unterschiedlichen Toleranzstufen und die empfohlenen Konfigurationen beschrieben: 

### Beispiel 1: Verteilte Datenbankknoten (niedrige Toleranz)
<a name="gracefully-handle-instance-termination-example-database"></a>

 Sie führen eine verteilte Datenbank aus, in der jede EC2-Instance eine Partition Ihrer Daten mit einem Replikationsfaktor von 3 enthält. Der Verlust mehrerer Instances, die Replikate derselben Partition enthalten, kann zu Datenverlust führen oder dazu führen, dass diese Partition nicht verfügbar ist. 

 **Herausforderung:** Auto Scaling beendet Instances möglicherweise schneller, als Daten erneut auf andere Knoten repliziert werden können, und Terminierungen könnten Ihre Kapazität unter das reduzieren, was zur Aufrechterhaltung Ihres Replikationsfaktors erforderlich ist. 

Ziehen Sie die folgenden Konfigurationen in Betracht:
+  Aktivieren Sie den [Instanz-Scale-In-Schutz](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-instance-protection.html) für alle Datenbankinstanzen. Entfernen Sie ihn programmgesteuert erst, nachdem Sie sich vergewissert haben, dass die Daten sicher an anderer Stelle repliziert wurden. 
+  Konfigurieren Sie [Terminierungs-Lifecycle-Hooks](https://docs.aws.amazon.com/autoscaling/ec2/userguide/lifecycle-hooks.html) mit verlängerten Timeouts in Kombination mit einer Instance-Lebenszyklus-Richtlinie, damit die Datenübertragung abgeschlossen werden kann. 
+  Legen Sie eine [Richtlinie für die Instanzwartung](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-instance-maintenance-policy.html) fest, die einen Mindestwert von 100% vorsieht, um die erforderliche Kapazität aufrechtzuerhalten. 

### Beispiel 2: Auftragsverarbeitung mit langer Laufzeit (mittlere Toleranz)
<a name="gracefully-handle-instance-termination-example-job-processing"></a>

 Sie haben eine Amazon SQS SQS-Warteschlange, die eingehende Nachrichten für Aufträge mit langer Laufzeit sammelt. Wenn eine neue Nachricht eingeht, ruft eine EC2-Instance die Nachricht ab und startet einen Job, dessen Verarbeitung 3 Stunden dauert. Wenn die Warteschlange wächst, fügt Auto Scaling Instances auf der Grundlage Ihrer Skalierungsrichtlinien hinzu. Wenn die Warteschlange schrumpft, beendet Auto Scaling die Instances. 

 **Herausforderung:** Auto Scaling beendet möglicherweise eine Instance, die 3 Stunden nach der Verarbeitung eines Jobs hinter sich hat, und nicht eine Instance im Leerlauf. Der Job kann auf einer anderen Instance neu gestartet werden, aber Sie verlieren erhebliche Fortschritte. 

Betrachten Sie die folgenden Konfigurationen:
+  Konfigurieren Sie eine [benutzerdefinierte Kündigungsrichtlinie](https://docs.aws.amazon.com/autoscaling/ec2/userguide/lambda-custom-termination-policy.html), bei der das Beenden inaktiver Instanzen zuerst priorisiert wird. 
+  Verwenden Sie [Terminierungs-Lifecycle-Hooks](https://docs.aws.amazon.com/autoscaling/ec2/userguide/lifecycle-hooks.html), damit laufende Jobs abgeschlossen werden können. 
+  Aktivieren Sie den [Instance Scale-In Protection](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-instance-protection.html) programmgesteuert, wenn eine Instance einen Job startet, und entfernen Sie ihn, wenn der Job abgeschlossen ist. 

### Beispiel 3: Mitarbeiterflotte für Testumgebungen (hohe Toleranz)
<a name="gracefully-handle-instance-termination-example-test"></a>

 Sie führen eine Flotte von EC2-Instances aus, die automatisierte Tests, CI/CD Pipeline-Jobs oder Entwicklungs-Workloads ausführen. Diese Worker-Instances rufen Aufgaben aus einer Warteschlange ab, und die Testergebnisse können neu generiert werden, wenn ein Job fehlschlägt. 

 **Herausforderung:** Testaufträge können bei Scale-In-Ereignissen unterbrochen werden, aber da Tests ohne Auswirkungen wiederholt werden können, sollten Sie bei der Optimierung eher auf Kosten und Einfachheit achten als auf eine unterbrechungsfreie Verfügbarkeit. 

Betrachten Sie die folgenden Konfigurationen:
+  Verwenden Sie [Termination Lifecycle-Hooks](https://docs.aws.amazon.com/autoscaling/ec2/userguide/lifecycle-hooks.html), damit Anfragen während der Bearbeitung abgeschlossen werden können. 
+  Erwägen Sie die Verwendung von [Spot-Instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-spot-instances.html) mit einer kapazitätsoptimierten Zuweisungsstrategie, um die Kosten weiter zu senken. 