Abrufen des Ziellebenszyklus-Status durch Instance-Metadaten - Amazon EC2 Auto Scaling

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

Abrufen des Ziellebenszyklus-Status durch Instance-Metadaten

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 undWarmed: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 auf Instance-Metadaten von einer ausgeführten Instance mit einer von zwei Methoden zugreifen: Instance Metadata Service Version 1 (IMDSv1) oder Instance Metadata Service Version 2 (IMDSv2). IMDSv2 verwendet sitzungsorientierte Anfragen und mildert verschiedene Arten von Sicherheitsschwachstellen, über die versucht werden kann, auf die Instance-Metadaten zuzugreifen. Einzelheiten zu diesen beiden Methoden finden Sie unter Verwenden von IMDSv2 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 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.

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.