Odświeżanie instancji i haki cyklu życia
Stopniowo wdrożą nowy szablon uruchamiania za pomocą odświeżania instancji oraz użyją haków cyklu życia do uruchamiania niestandardowej logiki przed uruchomieniem lub zakończeniem instancji.
Odświeżanie instancji i haki cyklu życia to bezpłatna lekcja AWS Solutions Architect na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej AWS Solutions Architect, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AWS Solutions Architect zawiera 4 lekcji w sumie.
Problem z aktualizowaniem instancji metodą rolling update
Po zaktualizowaniu Launch Template (nowy AMI, nowe dane użytkownika lub nowy typ instancji) istniejące instancje działające w ASG nie są automatycznie zastępowane — nadal działają ze starą konfiguracją. Aby propagować zmiany, należy zastąpić instancje. Ręczne kończenie i ponowne uruchamianie instancji jest ryzykowne i podatne na błędy. Instance Refresh automatyzuje ten proces za pomocą konfigurowalnych mechanizmów bezpieczeństwa.
Instance Refresh: jak działa
Instance Refresh zastępuje instancje ASG partiami, metodą rolling update. Na każdym etapie kończy działanie partii starych instancji, czeka, aż nowe instancje przejdą testy sprawności, a następnie przechodzi do kolejnej partii. Tempo można kontrolować za pomocą parametru MinHealthyPercentage (minimalny procent pojemności, który musi pozostać sprawny podczas odświeżania) oraz opcjonalnego czasu InstanceWarmup.
aws autoscaling start-instance-refresh \
--auto-scaling-group-name 'MyAppASG' \
--preferences '{
"MinHealthyPercentage": 80,
"InstanceWarmup": 300,
"CheckpointPercentages": [20, 50, 100],
"CheckpointDelay": 600
}'MinHealthyPercentage i rozmiar partii
MinHealthyPercentage określa minimalny poziom sprawnej pojemności podczas odświeżania. Ustawienie wartości 90% oznacza, że jednocześnie zastępowane jest tylko 10% floty — wolniej, ale bezpieczniej. Wartość 50% oznacza jednoczesne zastąpienie połowy floty — szybciej, ale z mniejszą nadmiarowością. ASG automatycznie oblicza rozmiary partii na podstawie tego procentu i bieżącej pożądanej pojemności. W przypadku obciążeń produkcyjnych należy wybrać wyższą wartość procentową, aby utrzymać dostępność.
Punkty kontrolne dla wdrożeń typu canary
Checkpoints umożliwiają wstrzymanie Instance Refresh na wcześniej zdefiniowanych progach procentowych. Można na przykład odświeżyć 20% instancji, wstrzymać proces na 10 minut w celu przeprowadzenia testów dymnych, a następnie go wznowić. Jeśli na dowolnym punkcie kontrolnym zostanie wykryty problem, można anulować odświeżanie — ASG przestanie zastępować kolejne instancje, ale pozostawi już zastąpione instancje działające (korzystają one już z nowego szablonu). Jest to w praktyce wzorzec wdrożenia canary dla EC2.
Anulowanie i monitorowanie Instance Refresh
Trwające Instance Refresh można w dowolnym momencie anulować; zatrzyma to dalsze zastępowanie instancji, ale nie wycofa zakończonych zastąpień. Polecenia describe-instance-refreshes należy używać do sprawdzania stanu, procentowego postępu oraz instancji, których nie udało się uruchomić. Instance Refresh można zintegrować z potokiem CI/CD, aby automatycznie uruchamiać odświeżanie po przesłaniu nowego AMI do Launch Template, uzyskując w pełni zautomatyzowane wdrożenie w stylu blue/green.
aws autoscaling describe-instance-refreshes \
--auto-scaling-group-name 'MyAppASG'
# Cancel a running refresh
aws autoscaling cancel-instance-refresh \
--auto-scaling-group-name 'MyAppASG'Wprowadzenie do Lifecycle Hooks
Lifecycle Hooks wstrzymują przejścia instancji ASG w kluczowych momentach, aby można było wykonać własną logikę przed aktywowaniem instancji lub przed jej zakończeniem. Dostępne są dwa punkty obsługi: EC2_INSTANCE_LAUNCHING (po uruchomieniu, przed umieszczeniem instancji w stanie InService) oraz EC2_INSTANCE_TERMINATING (po podjęciu decyzji o zakończeniu, przed faktycznym zakończeniem instancji). Podczas działania haka instancja znajduje się w stanie Pending:Wait lub Terminating:Wait.
Zastosowania haków cyklu życia podczas uruchamiania
Hak uruchamiania idealnie nadaje się do zadań, które muszą zostać ukończone, zanim instancja zacznie obsługiwać ruch: instalowania dodatkowego oprogramowania, pobierania konfiguracji z Parameter Store, rejestrowania w rejestrze wykrywania usług lub uruchamiania testów integracyjnych. ASG nie doda instancji do grupy docelowej modułu równoważenia obciążenia, dopóki hak nie zakończy działania (lub nie upłynie limit czasu). Zapobiega to kierowaniu ruchu do niekompletnie skonfigurowanej instancji.
aws autoscaling put-lifecycle-hook \
--auto-scaling-group-name 'MyAppASG' \
--lifecycle-hook-name 'AppInit' \
--lifecycle-transition EC2_INSTANCE_LAUNCHING \
--default-result ABANDON \
--heartbeat-timeout 300Zastosowania haków cyklu życia podczas kończenia
Hak kończenia działa przed faktycznym zakończeniem instancji. Przykładowe zastosowania to: opróżnienie kolejki na poziomie aplikacji z obsługiwanych żądań, zapisanie danych z pamięci podręcznej w trwałym magazynie, wyrejestrowanie z rejestru usług lub skopiowanie plików dzienników do S3. Bez haka kończenia praca wykonywana przez instancję, która ma zostać zakończona, może zostać utracona. Hak zapewnia do 2 godzin (limit czasu heartbeat) na ukończenie zadań związanych z kontrolowanym zamknięciem.
aws autoscaling put-lifecycle-hook \
--auto-scaling-group-name 'MyAppASG' \
--lifecycle-hook-name 'GracefulShutdown' \
--lifecycle-transition EC2_INSTANCE_TERMINATING \
--default-result CONTINUE \
--heartbeat-timeout 120Kończenie działania haka cyklu życia
Własna logika uruchomiona na instancji lub przez nią wyzwolona musi poinformować hak o zakończeniu działania. Należy użyć complete-lifecycle-action z wartością CONTINUE (normalna kontynuacja) lub ABANDON (w przypadku haka uruchamiania zakończenie instancji; w przypadku haka kończenia zignorowanie i kontynuowanie). Limit czasu haka można również przedłużać, wysyłając heartbeat w każdym odstępie, aż do osiągnięcia maksymalnego czasu trwania. Jeśli limit czasu haka zostanie przekroczony, zastosowana zostanie wartość DefaultResult.
# 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'Wyzwalanie logiki za pomocą EventBridge
Najczystszym sposobem reagowania na haki cyklu życia jest użycie Amazon EventBridge. Po uruchomieniu haka cyklu życia ASG wysyła zdarzenie do EventBridge. Reguła EventBridge przekazuje to zdarzenie do funkcji Lambda, która wykonuje wymaganą pracę, a następnie wywołuje complete-lifecycle-action. Ta architektura jest w pełni bezserwerowa, nie wymaga odpytywania i skaluje się automatycznie. Powiadomienia SQS i SNS są starszymi alternatywami, ale w nowych projektach preferowane jest EventBridge.
Integracja Instance Refresh z Lifecycle Hooks
Gdy Instance Refresh zastępuje instancję, nadal uruchamiane są oba haki cyklu życia: hak kończenia dla starej instancji oraz hak uruchamiania dla nowej. Oznacza to, że logika kontrolowanego zamykania i inicjalizacji jest automatycznie wykonywana podczas aktualizacji metodą rolling update, a nie tylko podczas zwykłych zdarzeń skalowania. Przed wdrożeniem produkcyjnym należy zawsze przetestować logikę haków cyklu życia podczas etapowego Instance Refresh, aby zweryfikować jej prawidłowe działanie.
Szybkie sprawdzenie
Sprawdź swoją znajomość zagadnień AWS Solutions Architect (SAA-C03) omówionych w tej lekcji.
Podsumowanie lekcji
W tej lekcji poznali Państwo: Instance Refresh zastępuje instancje ASG partiami, kontrolowanymi przez MinHealthyPercentage i opcjonalne punkty kontrolne umożliwiające walidację w stylu canary; Lifecycle Hooks wstrzymują przejścia instancji podczas uruchamiania lub kończenia, aby wykonać własną logikę inicjalizacji albo kontrolowanego zamykania; natomiast EventBridge + Lambda to zalecany wzorzec reagowania na zdarzenia haków cyklu życia bez odpytywania. Następnie omówimy funkcje AWS Lambda, środowiska uruchomieniowe, wyzwalacze i handlery.
Często zadawane pytania
Czy lekcja „Odświeżanie instancji i haki cyklu życia” jest bezpłatna?
Tak — pełny tekst „Odświeżanie instancji i haki cyklu życia” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu AWS Solutions Architect, przejdź na CoddyKit PRO. Kurs AWS Solutions Architect zawiera 4 lekcji w sumie.
Co nauczysz się w „Odświeżanie instancji i haki cyklu życia”?
Stopniowo wdrożą nowy szablon uruchamiania za pomocą odświeżania instancji oraz użyją haków cyklu życia do uruchamiania niestandardowej logiki przed uruchomieniem lub zakończeniem instancji. Ćwiczysz AWS Solutions Architect z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć AWS Solutions Architect?
Nie wymagamy żadnego doświadczenia. AWS Solutions Architect w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Odświeżanie instancji i haki cyklu życia”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji AWS Solutions Architect?
Tak. Każda lekcja AWS Solutions Architect zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Szablony uruchamiania i konfiguracja ASG
- Zasady skalowania: śledzenie celu i skalowanie krokowe
- Skalowanie zaplanowane i predykcyjne
- Odświeżanie instancji i haki cyklu życia