Aggiornamento delle istanze e lifecycle hook
Distribuirete gradualmente un nuovo launch template con l'instance refresh e userete i lifecycle hook per eseguire logica personalizzata prima dell'avvio o della terminazione delle istanze.
Aggiornamento delle istanze e lifecycle hook è una lezione AWS Solutions Architect gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento AWS Solutions Architect, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso AWS Solutions Architect include 4 lezioni in totale.
Il problema degli aggiornamenti rolling delle istanze
Quando aggiorna un Launch Template (nuova AMI, nuovi dati utente, nuovo tipo di istanza), le istanze già in esecuzione nell'ASG non vengono sostituite automaticamente: continuano a usare la vecchia configurazione. Per propagare le modifiche, deve sostituire le istanze. Terminare e riavviare manualmente le istanze è rischioso e soggetto a errori. Instance Refresh automatizza questo processo con controlli di sicurezza configurabili.
Instance Refresh: funzionamento
Instance Refresh sostituisce le istanze dell'ASG in batch progressivi. A ogni passaggio termina un batch di istanze obsolete, attende che le nuove istanze superino i controlli dello stato di salute, quindi passa al batch successivo. Può controllare il ritmo con MinHealthyPercentage (la percentuale minima di capacità che deve rimanere integra durante il refresh) e con un tempo InstanceWarmup facoltativo.
aws autoscaling start-instance-refresh \
--auto-scaling-group-name 'MyAppASG' \
--preferences '{
"MinHealthyPercentage": 80,
"InstanceWarmup": 300,
"CheckpointPercentages": [20, 50, 100],
"CheckpointDelay": 600
}'MinHealthyPercentage e dimensione dei batch
MinHealthyPercentage definisce il limite minimo della capacità integra durante il refresh. Se lo imposta al 90%, viene sostituito alla volta solo il 10% della flotta: il processo è più lento ma più sicuro. Un valore del 50% sostituisce metà della flotta in una sola volta: il processo è più rapido, ma con meno ridondanza. L'ASG calcola automaticamente le dimensioni dei batch in base a questa percentuale e alla capacità desiderata attuale. Scelga una percentuale più alta per i carichi di lavoro di produzione, così da mantenere la disponibilità.
Checkpoint per distribuzioni in stile canary
I checkpoint consentono di mettere in pausa Instance Refresh a percentuali predefinite. Ad esempio, può aggiornare il 20% delle istanze, mettere in pausa il processo per 10 minuti per eseguire smoke test, quindi continuare. Se rileva un problema a un checkpoint, può annullare il refresh: l'ASG interrompe la sostituzione delle istanze aggiuntive, lasciando in esecuzione quelle già sostituite (che usano già il nuovo template). Si tratta, di fatto, di un modello di canary deployment per EC2.
Annullamento e monitoraggio di Instance Refresh
Può annullare un Instance Refresh in corso in qualsiasi momento: l'operazione interrompe le sostituzioni successive, ma non esegue il rollback di quelle completate. Usi describe-instance-refreshes per controllare lo stato, la percentuale di avanzamento e le eventuali istanze che non sono riuscite ad avviarsi. Integri Instance Refresh nella pipeline CI/CD per attivare automaticamente un refresh dopo aver inserito una nuova AMI nel Launch Template, completando una distribuzione completamente automatizzata in stile 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'Introduzione ai Lifecycle Hooks
I Lifecycle Hooks mettono in pausa le transizioni delle istanze dell'ASG in momenti fondamentali, consentendo di eseguire una logica personalizzata prima che un'istanza diventi attiva o prima che venga terminata. Esistono due punti di hook: EC2_INSTANCE_LAUNCHING (dopo l'avvio, prima che l'istanza venga impostata su InService) e EC2_INSTANCE_TERMINATING (dopo la decisione di terminazione, prima che l'istanza venga effettivamente terminata). Durante un hook, l'istanza si trova nello stato Pending:Wait o Terminating:Wait.
Casi d'uso dei Lifecycle Hooks di avvio
Il launching hook è ideale per le attività che devono essere completate prima che un'istanza possa gestire il traffico: installare software aggiuntivo, recuperare la configurazione da Parameter Store, registrarsi in un registro di service discovery o eseguire test di integrazione. L'ASG non aggiungerà l'istanza al gruppo di destinazione del load balancer finché l'hook non sarà completato (o non sarà scaduto). In questo modo si impedisce che il traffico raggiunga un'istanza configurata solo parzialmente.
aws autoscaling put-lifecycle-hook \
--auto-scaling-group-name 'MyAppASG' \
--lifecycle-hook-name 'AppInit' \
--lifecycle-transition EC2_INSTANCE_LAUNCHING \
--default-result ABANDON \
--heartbeat-timeout 300Casi d'uso dei Lifecycle Hooks di terminazione
Il termination hook viene eseguito prima che un'istanza venga effettivamente terminata. Tra i casi d'uso figurano il completamento delle richieste in corso da una coda a livello applicativo, il trasferimento dei dati memorizzati nella cache a un archivio persistente, la rimozione della registrazione da un registro di servizi o la copia dei file di log in S3. Senza un termination hook, il lavoro in corso su un'istanza in fase di terminazione potrebbe andare perso. L'hook Le concede fino a 2 ore (timeout dell'heartbeat) per completare le attività di arresto controllato.
aws autoscaling put-lifecycle-hook \
--auto-scaling-group-name 'MyAppASG' \
--lifecycle-hook-name 'GracefulShutdown' \
--lifecycle-transition EC2_INSTANCE_TERMINATING \
--default-result CONTINUE \
--heartbeat-timeout 120Completamento di un Lifecycle Hook
La logica personalizzata eseguita sull'istanza (o attivata da essa) deve segnalare il completamento dell'hook. Usi complete-lifecycle-action con CONTINUE (per procedere normalmente) oppure ABANDON (con un launching hook, termina l'istanza; con un terminating hook, ignora l'azione e procede). È inoltre possibile estendere il timeout dell'hook inviando un heartbeat a ogni intervallo, fino alla durata massima. Se l'hook scade, viene applicato 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'Attivazione della logica con EventBridge
Il modo più semplice per rispondere ai Lifecycle Hooks è usare Amazon EventBridge. Quando si attiva un Lifecycle Hook, l'ASG invia un evento a EventBridge. Una regola di EventBridge inoltra questo evento a una funzione Lambda che esegue il lavoro richiesto e quindi chiama complete-lifecycle-action. Questa architettura è completamente serverless, non richiede polling e si adatta automaticamente alla scalabilità. Le notifiche SQS e SNS sono alternative meno recenti, ma EventBridge è la scelta preferita per i nuovi progetti.
Instance Refresh si integra con i Lifecycle Hooks
Quando Instance Refresh sostituisce un'istanza, si attivano comunque entrambi i Lifecycle Hooks: il termination hook sull'istanza obsoleta e il launching hook su quella nuova. Ciò significa che la logica di arresto controllato e di inizializzazione viene eseguita automaticamente durante un aggiornamento rolling, non solo durante i normali eventi di scaling. Verifichi sempre la logica dei Lifecycle Hooks durante un Instance Refresh in fasi prima di una distribuzione in produzione, per accertarsi che il comportamento sia corretto.
Verifica rapida
Verifichi la Sua comprensione dei concetti AWS Solutions Architect (SAA-C03) trattati in questa lezione.
Riepilogo della lezione
In questa lezione ha imparato che Instance Refresh sostituisce le istanze dell'ASG in batch progressivi controllati da MinHealthyPercentage e da checkpoint facoltativi per la validazione in stile canary; i Lifecycle Hooks mettono in pausa le transizioni delle istanze durante l'avvio o la terminazione per eseguire la logica personalizzata di inizializzazione o di arresto controllato; e EventBridge + Lambda è il modello consigliato per rispondere agli eventi dei Lifecycle Hooks senza ricorrere al polling. Nel prossimo argomento esamineremo le funzioni AWS Lambda, i runtime, i trigger e gli handler.
Domande Frequenti
La lezione «Aggiornamento delle istanze e lifecycle hook» è gratuita?
Sì — il testo completo di «Aggiornamento delle istanze e lifecycle hook» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso AWS Solutions Architect, passa a CoddyKit PRO. Il corso AWS Solutions Architect include 4 lezioni in totale.
Cosa imparerò in «Aggiornamento delle istanze e lifecycle hook»?
Distribuirete gradualmente un nuovo launch template con l'instance refresh e userete i lifecycle hook per eseguire logica personalizzata prima dell'avvio o della terminazione delle istanze. Eserciti AWS Solutions Architect con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare AWS Solutions Architect?
Non è richiesta alcuna esperienza precedente. AWS Solutions Architect su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Aggiornamento delle istanze e lifecycle hook»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione AWS Solutions Architect?
Sì. Ogni lezione AWS Solutions Architect include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Launch template e configurazione ASG
- Policy di scaling: target tracking e step scaling
- Scaling pianificato e predittivo
- Aggiornamento delle istanze e lifecycle hook