Utilizzare un hook del ciclo di vita con un warm pool - Dimensionamento automatico Amazon EC2

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Utilizzare un hook del ciclo di vita con un warm pool

Le istanze di un warm pool mantengono il proprio ciclo di vita indipendente per facilitare la creazione delle operazioni personalizzate appropriate per ogni transizione. Questo ciclo di vita è progettato per aiutarti a richiamare operazioni in un servizio di destinazione (ad esempio, una funzione Lambda) mentre un'istanza viene inizializzata e prima che venga messa in esecuzione.

Nota

Le operazioni API utilizzate per aggiungere e gestire gli hook del ciclo di vita e le operazioni complete del ciclo di vita non vengono modificate. Viene modificato solo il ciclo di vita dell'istanza.

Per ulteriori informazioni sull'aggiunta di un hook del ciclo di vita, consulta Aggiungere un hook del ciclo di vita. Per ulteriori informazioni sul completamento di un'operazione del ciclo di vita, consulta Completare un'operazione del ciclo di vita.

Per le istanze che entrano nel warm pool, potrebbe essere necessario un hook del ciclo di vita per uno dei seguenti motivi:

  • È consigliabile avviare istanze EC2 da un'AMI che richiede molto tempo per terminare l'inizializzazione.

  • È consigliabile eseguire script di dati utente per avviare le istanze EC2.

Per le istanze che escono dal warm pool, potrebbe essere necessario un hook del ciclo di vita per uno dei seguenti motivi:

  • Puoi utilizzare un periodo di tempo aggiuntivo per preparare le istanze EC2 per l'uso. Ad esempio, puoi disporre di servizi da eseguire al riavvio di un'istanza prima che l'applicazione funzioni correttamente.

  • È consigliabile compilare precedentemente i dati della cache, in modo che un nuovo server non venga avviato con una cache vuota.

  • È consigliabile registrare le nuove istanze come istanze gestite con il servizio di gestione della configurazione.

Transizioni dello stato del ciclo di vita delle istanze in un warm pool

Un'istanza Auto Scaling può passare attraverso molti stati nel corso del ciclo di vita.

Il diagramma seguente mostra la transizione tra gli stati Auto Scaling quando utilizzi un warm pool:

Le transizioni dello stato del ciclo di vita delle istanze in un warm pool.

¹ Questo stato varia in base all'impostazione dello stato del warm pool. Se lo stato del pool è impostato su Running, in tal caso è Warmed:Running. Se lo stato del pool è impostato su Hibernated, in tal caso è Warmed:Hibernated.

Quando aggiungi gli hook del ciclo di vita, considera quanto segue:

  • Quando un hook del ciclo di vita è configurato per l'azione autoscaling:EC2_INSTANCE_LAUNCHING del ciclo di vita, un'istanza appena avviata viene sospesa per eseguire un'azione personalizzata quando raggiunge lo stato Warmed:Pending:Wait, quindi nuovamente quando viene riavviata e raggiunge lo stato Pending:Wait.

  • Quando un hook del ciclo di vita è configurato per l'opzione EC2_INSTANCE_TERMINATING, un'istanza in fase di terminazione viene sospesa per eseguire un'azione personalizzata quando raggiunge lo stato Terminating:Wait. Tuttavia, se specifichi una policy di riutilizzo delle istanze per restituire le istanze al warm pool su scala interna anziché terminarle, un'istanza che sta tornando al warm pool viene sospesa per eseguire un'azione personalizzata nello stato Warmed:Pending:Wait per l'operazione EC2_INSTANCE_TERMINATING del ciclo di vita.

  • Se la domanda sulla tua applicazione esaurisce il warm pool, Dimensionamento automatico Amazon EC2 può avviare le istanze direttamente nel gruppo con scalabilità automatica finché il gruppo non raggiunge la sua capacità massima. Se le istanze vengono avviate direttamente nel gruppo, vengono sospese solo per eseguire un'operazione personalizzata nello stato Pending:Wait.

  • Per controllare per quanto tempo un'istanza rimane in uno stato di attesa prima di passare allo stato successivo, configura l'azione personalizzata per utilizzare il comando complete-lifecycle-action. Con gli hook del ciclo di vita, le istanze rimangono in stato di attesa finché non si notifica a Dimensionamento automatico Amazon EC2 che l'operazione del ciclo di vita specificata è completa o fino alla fine del periodo di timeout (un'ora per impostazione predefinita).

Di seguito viene riepilogato il flusso per un evento di aumento orizzontale.

Un diagramma a flusso di un evento di aumento orizzontale.

Quando le istanze raggiungono uno stato di attesa, Dimensionamento automatico Amazon EC2 invia una notifica. Esempi di queste notifiche sono disponibili nella EventBridge sezione di questa guida. Per ulteriori informazioni, consulta Esempi di eventi e modelli relativi al pool caldo.

Destinazioni di notifica supportate

Dimensionamento automatico Amazon EC2 fornisce supporto per la definizione di una delle seguenti destinazioni di notifica per le notifiche del ciclo di vita:

  • EventBridge regole

  • Argomenti di Amazon SNS

  • Code Amazon SQS

Importante

Ricorda che, se disponi di uno script di dati utente (cloud-init) nel modello di avvio o nella configurazione di avvio che configura le istanze al momento dell'avvio, non è necessario ricevere una notifica per eseguire operazioni personalizzate sulle istanze in fase di avvio o riavvio.

Le sezioni seguenti contengono collegamenti alla documentazione che descrive come configurare le destinazioni di notifica:

EventBridge regole: per eseguire il codice quando Amazon EC2 Auto Scaling mette un'istanza in uno stato di attesa, puoi creare una regola e specificare EventBridge una funzione Lambda come destinazione. Per richiamare diverse funzioni Lambda basate su notifiche del ciclo di vita diverse, puoi creare più regole e associare ciascuna regola a uno specifico modello di eventi e a una funzione Lambda. Per ulteriori informazioni, consulta Crea EventBridge regole per eventi in piscina riscaldata.

Argomenti di Amazon SNS: per ricevere una notifica quando un'istanza viene inserita in uno stato di attesa, crei un argomento Amazon SNS e quindi imposti il filtro messaggi Amazon SNS per inviare le notifiche del ciclo di vita in modo diverso in base a un attributo del messaggio. Per ulteriori informazioni, consulta Ricezione di notifiche tramite Amazon SNS.

Code Amazon SQS: per impostare un punto di consegna per le notifiche del ciclo di vita in cui un consumer pertinente può prenderle ed elaborarle, puoi creare una coda Amazon SQS e una coda di tipo consumer che elabora i messaggi dalla coda SQS. Se desideri che la coda di tipo consumer elabori le notifiche del ciclo di vita in modo diverso in base a un attributo del messaggio, devi impostarla in modo che analizzi e agisca sul messaggio quando un attributo specifico corrisponde al valore desiderato. Per ulteriori informazioni, consulta Ricezione di notifiche tramite Amazon SQS.