0Pricing
AWS Solutions Architect · Lektion

Instance Refresh und Lifecycle Hooks

Führen Sie ein neues Launch Template mit Instance Refresh schrittweise ein und verwenden Sie Lifecycle Hooks, um benutzerdefinierte Logik vor dem Start oder der Beendigung von Instances auszuführen.

Instance Refresh und Lifecycle Hooks ist eine kostenlose AWS Solutions Architect-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des AWS Solutions Architect-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der AWS Solutions Architect-Kurs umfasst insgesamt 4 Lektionen.

Das Problem rollierender Instance-Aktualisierungen

Wenn Sie ein Launch Template aktualisieren (neue AMI, neue User-Daten oder neuer Instance-Typ), erhalten bereits ausgeführte Instances in der ASG diese Änderungen nicht automatisch – sie laufen mit der alten Konfiguration weiter. Um die Änderungen zu übernehmen, müssen Sie die Instances ersetzen. Das manuelle Beenden und erneute Starten von Instances ist riskant und fehleranfällig. Instance Refresh automatisiert diesen Prozess mit konfigurierbaren Sicherheitskontrollen.

Instance Refresh: Funktionsweise

Instance Refresh ersetzt Instances einer ASG in rollierenden Batches. Bei jedem Schritt beendet der Vorgang einen Batch alter Instances, wartet, bis die neuen Instances die Zustandsprüfungen bestehen, und fährt dann mit dem nächsten Batch fort. Sie steuern das Tempo mit einem MinHealthyPercentage (dem Mindestprozentsatz der Kapazität, der während des Refreshs gesund bleiben muss) und einer optionalen InstanceWarmup-Zeit.

aws autoscaling start-instance-refresh \
  --auto-scaling-group-name 'MyAppASG' \
  --preferences '{
    "MinHealthyPercentage": 80,
    "InstanceWarmup": 300,
    "CheckpointPercentages": [20, 50, 100],
    "CheckpointDelay": 600
  }'

MinHealthyPercentage und Batchgröße

MinHealthyPercentage definiert die Untergrenze der gesunden Kapazität während des Refreshs. Wenn Sie den Wert auf 90 % setzen, werden jeweils nur 10 % der Flotte ersetzt – langsamer, aber sicherer. Ein Wert von 50 % ersetzt die Hälfte der Flotte auf einmal – schneller, jedoch mit weniger Redundanz. Die ASG berechnet die Batchgrößen automatisch auf Grundlage dieses Prozentsatzes und Ihrer aktuellen gewünschten Kapazität. Wählen Sie für Produktions-Workloads einen höheren Prozentsatz, um die Verfügbarkeit aufrechtzuerhalten.

Checkpoints für Rollouts im Canary-Stil

Checkpoints ermöglichen es Ihnen, Instance Refresh bei vordefinierten prozentualen Meilensteinen zu pausieren. Sie können beispielsweise 20 % der Instances aktualisieren, 10 Minuten für Smoke-Tests pausieren und anschließend fortfahren. Wenn Sie an einem Checkpoint ein Problem erkennen, können Sie den Refresh abbrechen. Die ASG beendet dann das Ersetzen weiterer Instances, lässt die bereits ersetzten Instances jedoch weiterlaufen (sie verwenden bereits das neue Template). Dies entspricht im Wesentlichen einem Canary-Deployment-Muster für EC2.

Instance Refresh abbrechen und überwachen

Sie können einen laufenden Instance Refresh jederzeit abbrechen. Dadurch werden weitere Ersetzungen gestoppt, bereits abgeschlossene Ersetzungen jedoch nicht zurückgesetzt. Verwenden Sie describe-instance-refreshes, um Status, Fortschritt in Prozent und Instances zu prüfen, deren Start fehlgeschlagen ist. Integrieren Sie Instance Refresh in Ihre CI/CD-Pipeline, um nach dem Übertragen einer neuen AMI in das Launch Template automatisch einen Refresh auszulösen und so eine vollständig automatisierte Bereitstellung im Blue/Green-Stil abzuschließen.

aws autoscaling describe-instance-refreshes \
  --auto-scaling-group-name 'MyAppASG'

# Cancel a running refresh
aws autoscaling cancel-instance-refresh \
  --auto-scaling-group-name 'MyAppASG'

Lifecycle Hooks im Überblick

Lifecycle Hooks pausieren Zustandsübergänge von ASG-Instances an wichtigen Zeitpunkten, damit Sie benutzerdefinierte Logik ausführen können, bevor eine Instance aktiv wird oder beendet wird. Es gibt zwei Hook-Punkte: EC2_INSTANCE_LAUNCHING (nach dem Start, bevor die Instance in InService versetzt wird) und EC2_INSTANCE_TERMINATING (nach der Beendigungsentscheidung, bevor die Instance tatsächlich beendet wird). Während eines Hooks befindet sich die Instance im Zustand Pending:Wait oder Terminating:Wait.

Anwendungsfälle für Launch-Lifecycle-Hooks

Der Launching-Hook eignet sich ideal für Aufgaben, die abgeschlossen sein müssen, bevor eine Instance Datenverkehr verarbeitet: zusätzliche Software installieren, Konfiguration aus dem Parameter Store abrufen, die Instance bei einer Service-Discovery-Registry registrieren oder Integrationstests ausführen. Die ASG fügt die Instance erst dann der Target-Gruppe des Load Balancers hinzu, wenn der Hook abgeschlossen ist (oder ein Timeout auftritt). Dadurch wird verhindert, dass Datenverkehr eine unvollständig konfigurierte Instance erreicht.

aws autoscaling put-lifecycle-hook \
  --auto-scaling-group-name 'MyAppASG' \
  --lifecycle-hook-name 'AppInit' \
  --lifecycle-transition EC2_INSTANCE_LAUNCHING \
  --default-result ABANDON \
  --heartbeat-timeout 300

Anwendungsfälle für Termination-Lifecycle-Hooks

Der Termination-Hook wird ausgeführt, bevor eine Instance tatsächlich beendet wird. Zu den Anwendungsfällen gehören das Abarbeiten laufender Anfragen aus einer anwendungsspezifischen Warteschlange, das Schreiben zwischengespeicherter Daten in einen persistenten Speicher, das Entfernen der Registrierung aus einer Service-Registry oder das Kopieren von Protokolldateien nach S3. Ohne einen Termination-Hook können laufende Arbeiten auf einer zu beendenden Instance verloren gehen. Der Hook bietet Ihnen bis zu 2 Stunden (Heartbeat-Timeout), um Aufgaben für ein ordnungsgemäßes Herunterfahren abzuschließen.

aws autoscaling put-lifecycle-hook \
  --auto-scaling-group-name 'MyAppASG' \
  --lifecycle-hook-name 'GracefulShutdown' \
  --lifecycle-transition EC2_INSTANCE_TERMINATING \
  --default-result CONTINUE \
  --heartbeat-timeout 120

Einen Lifecycle Hook abschließen

Die benutzerdefinierte Logik, die auf der Instance ausgeführt oder von ihr ausgelöst wird, muss dem Hook signalisieren, sobald sie abgeschlossen ist. Verwenden Sie complete-lifecycle-action mit entweder CONTINUE (normal fortfahren) oder ABANDON (bei einem Launching-Hook die Instance beenden; bei einem Termination-Hook ignorieren und fortfahren). Sie können das Timeout des Hooks außerdem verlängern, indem Sie in regelmäßigen Abständen bis zur maximalen Dauer einen Heartbeat senden. Wenn das Timeout des Hooks abläuft, wird DefaultResult angewendet.

# From inside the instance or a Lambda triggered by EventBridge
aws autoscaling complete-lifecycle-action \
  --auto-scaling-group-name 'MyAppASG' \
  --lifecycle-hook-name 'AppInit' \
  --lifecycle-action-result CONTINUE \
  --instance-id 'i-0abc123def456'

Logik mit EventBridge auslösen

Die sauberste Möglichkeit, auf Lifecycle Hooks zu reagieren, ist Amazon EventBridge. Wenn ein Lifecycle Hook ausgelöst wird, sendet die ASG ein Ereignis an EventBridge. Eine EventBridge-Regel leitet dieses Ereignis an eine Lambda-Funktion weiter, die die erforderlichen Aufgaben ausführt und anschließend complete-lifecycle-action aufruft. Diese Architektur ist vollständig serverlos, benötigt kein Polling und skaliert automatisch. SQS- und SNS-Benachrichtigungen sind ältere Alternativen, für neue Designs wird jedoch EventBridge bevorzugt.

Instance Refresh und Lifecycle Hooks

Wenn Instance Refresh eine Instance ersetzt, werden beide Lifecycle Hooks weiterhin ausgelöst: der Termination-Hook für die alte Instance und der Launching-Hook für die neue. Dadurch wird Ihre Logik für das ordnungsgemäße Herunterfahren und die Initialisierung während einer rollierenden Aktualisierung automatisch ausgeführt – nicht nur bei normalen Skalierungsereignissen. Testen Sie Ihre Lifecycle-Hook-Logik während eines gestaffelten Instance Refresh immer vor einem Rollout in der Produktion, um die korrekte Funktionsweise zu überprüfen.

Schnelltest

Testen Sie Ihr Verständnis der AWS-Solutions-Architect-Konzepte (SAA-C03) aus dieser Lektion.

Zusammenfassung der Lektion

In dieser Lektion haben Sie gelernt: Instance Refresh ersetzt ASG-Instances in rollierenden Batches, die durch MinHealthyPercentage und optionale Checkpoints zur Validierung im Canary-Stil gesteuert werden. Lifecycle Hooks pausieren Zustandsübergänge beim Start oder bei der Beendigung einer Instance, um benutzerdefinierte Initialisierungs- oder Logik für ein ordnungsgemäßes Herunterfahren auszuführen. EventBridge + Lambda ist das empfohlene Muster, um ohne Polling auf Lifecycle-Hook-Ereignisse zu reagieren. Als Nächstes untersuchen wir AWS-Lambda-Funktionen, Runtimes, Trigger und Handler.

Häufig gestellte Fragen

Ist die Lektion „Instance Refresh und Lifecycle Hooks“ kostenlos?

Ja — der vollständige Text von „Instance Refresh und Lifecycle Hooks“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des AWS Solutions Architect-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der AWS Solutions Architect-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Instance Refresh und Lifecycle Hooks“?

Führen Sie ein neues Launch Template mit Instance Refresh schrittweise ein und verwenden Sie Lifecycle Hooks, um benutzerdefinierte Logik vor dem Start oder der Beendigung von Instances auszuführen. Du übst AWS Solutions Architect mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um AWS Solutions Architect zu starten?

Keine Vorkenntnisse erforderlich. AWS Solutions Architect auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „Instance Refresh und Lifecycle Hooks“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser AWS Solutions Architect-Lektion Code schreiben und ausführen?

Ja. Jede AWS Solutions Architect-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Launch Templates und ASG-Konfiguration
  2. Skalierungsrichtlinien: Target Tracking und Step Scaling
  3. Geplante und prädiktive Skalierung
  4. Instance Refresh und Lifecycle Hooks
← Zurück zu AWS Solutions Architect