Aggiungi gli hook del ciclo di vita al tuo gruppo Auto Scaling - Amazon EC2 Auto Scaling

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à.

Aggiungi gli hook del ciclo di vita al tuo gruppo Auto Scaling

Per mettere le istanze Auto Scaling in uno stato di attesa ed eseguire operazioni personalizzate su di esse, puoi aggiungere hook del ciclo di vita al gruppo con scalabilità automatica. Le operazioni personalizzate vengono eseguite all'avvio o prima della fine delle istanze. Le istanze rimarranno in stato di attesa finché non avrai completato l'operazione del ciclo di vita oppure finché il periodo di timeout non sarà terminato.

Dopo aver creato un gruppo Auto Scaling da AWS Management Console, è possibile aggiungervi uno o più hook del ciclo di vita, fino a un totale di 50 hook del ciclo di vita. Puoi anche utilizzare AWS CLI AWS CloudFormation, o un SDK per aggiungere gli hook del ciclo di vita a un gruppo Auto Scaling durante la creazione.

Per impostazione predefinita, quando aggiungi un hook del ciclo di vita nella console, Amazon EC2 Auto Scaling invia notifiche sugli eventi del ciclo di vita ad Amazon. EventBridge L'utilizzo EventBridge o di uno script di dati utente è una best practice consigliata. Per creare un hook del ciclo di vita che invii notifiche direttamente ad Amazon SNS o Amazon SQS, puoi utilizzare put-lifecycle-hookil comando, come mostrato negli esempi in questo argomento.

Come aggiungere hook del ciclo di vita (console)

Per aggiungere un hook del ciclo di vita a un gruppo con dimensionamento automatico, segui questa procedura. Per aggiungere hook del ciclo di vita per il dimensionamento orizzontale (avvio delle istanze) o il dimensionamento verticale (terminazione delle istanze o restituzione a un pool caldo), devi creare due hook separati.

Prima di iniziare, assicurati di avere impostato un'operazione personalizzata, a seconda delle necessità, come descritto in Preparazione all'aggiunta di un hook del ciclo di vita al gruppo con scalabilità automatica.

Per aggiungere un hook del ciclo di vita per il dimensionamento orizzontale
  1. Apri la console Amazon EC2 all'indirizzo https://console.aws.amazon.com/ec2/ e scegli Gruppi con dimensionamento automatico dal pannello di navigazione.

  2. Seleziona la casella di controllo accanto al gruppo con dimensionamento automatico. Si aprirà un riquadro diviso nella parte inferiore della pagina.

  3. Nella scheda Instance management (Gestione istanze) in Lifecycle hooks (Hook del ciclo di vita), scegliere Create lifecycle hook (Crea hook del ciclo di vita).

  4. Per definire un hook del ciclo di vita per il dimensionamento orizzontale (avvio delle istanze), procedi come descritto di seguito:

    1. Per Lifecycle hook name (Nome hook del ciclo di vita) specificare un nome per l'hook del ciclo di vita.

    2. In Lifecycle transition (Transizione ciclo di vita), scegli Instance launch (Avvia istanza).

    3. Per Timeout heartbeat, specifica quanto a lungo, in secondi, le istanze debbano rimanere in uno stato di attesa durante il dimensionamento orizzontale prima che l'hook scada. L'intervallo è tra 30 e 7200 secondi. L'impostazione di un periodo di timeout esteso fornisce più tempo per il completamento dell'operazione personalizzata. Quindi, se finisci prima della fine del periodo di timeout, invia il complete-lifecycle-actioncomando per consentire all'istanza di passare allo stato successivo.

    4. Per Default result (Risultato di default), specifica l'operazione da intraprendere quando gli hook del ciclo di vita scadono o si verifica un errore imprevisto. Puoi scegliere di CONTINUARE o ABBANDONARE.

      • Se scegli CONTINUA, il gruppo con dimensionamento automatico può procedere con qualsiasi altro hook del ciclo di vita e quindi mettere l'istanza in servizio.

      • Se scegli ABBANDONA, il gruppo con dimensionamento automatico arresta tutte le operazioni rimanenti e termina l'istanza immediatamente.

    5. (Facoltativo) In Metadati delle notifiche, specifica le altre informazioni che desideri includere ogni volta che Dimensionamento automatico Amazon EC2 invia un messaggio alla destinazione di notifica.

  5. Scegli Crea.

Per aggiungere un hook del ciclo di vita per il dimensionamento verticale
  1. Scegli Crea hook del ciclo di vita per continuare da dove avevi interrotto dopo aver creato un hook del ciclo di vita per il dimensionamento orizzontale.

  2. Per definire un hook del ciclo di vita per il dimensionamento (istanze che terminano o ritornano a un pool caldo), procedi come segue:

    1. Per Lifecycle hook name (Nome hook del ciclo di vita) specificare un nome per l'hook del ciclo di vita.

    2. In Lifecycle transition (Transizione ciclo di vita) scegli Instance terminate (Terminazione istanza).

    3. Per Timeout heartbeat, specifica quanto a lungo, in secondi, le istanze debbano rimanere in uno stato di attesa durante il dimensionamento orizzontale prima che l'hook scada. Ti consigliamo un breve periodo di timeout, 30 da 1 a 120 2 secondi, a seconda del tempo necessario per eseguire le attività finali, come ad esempio estrarre i log EC2. CloudWatch

    4. In Default result (Risultato di default), specifica l'operazione che il gruppo con scalabilità automatica deve intraprendere una volta scaduto il timeout o se si verifica un errore imprevisto. Sia ABANDON (ABBANDONA) sia CONTINUE (CONTINUA) permettono all'istanza di terminare.

      • Se scegli CONTINUE (CONTINUA), il gruppo con scalabilità automatica può procedere con qualsiasi operazione restante, ad esempio altri hook del ciclo di vita, prima della terminazione.

      • Se scegli ABBANDONA, il gruppo con dimensionamento automatico termina l'istanza immediatamente.

    5. (Facoltativo) In Metadati delle notifiche, specifica le altre informazioni che desideri includere ogni volta che Dimensionamento automatico Amazon EC2 invia un messaggio alla destinazione di notifica.

  3. Scegli Crea.

Aggiunta di hook del ciclo di vita (AWS CLI)

Crea e aggiorna gli hook del ciclo di vita utilizzando il comando. put-lifecycle-hook

Per eseguire un'operazione di aumento orizzontale, utilizza il comando seguente.

aws autoscaling put-lifecycle-hook --lifecycle-hook-name my-launch-hook \ --auto-scaling-group-name my-asg \ --lifecycle-transition autoscaling:EC2_INSTANCE_LAUNCHING

Per eseguire un'operazione di riduzione orizzontale, utilizza invece il comando seguente.

aws autoscaling put-lifecycle-hook --lifecycle-hook-name my-termination-hook \ --auto-scaling-group-name my-asg \ --lifecycle-transition autoscaling:EC2_INSTANCE_TERMINATING

Per ricevere notifiche utilizzando Amazon SNS o Amazon SQS, aggiungi le opzioni --notification-target-arn e --role-arn.

Nell'esempio seguente viene creato un hook del ciclo di vita che specifica un argomento SNS denominato my-sns-topic come destinazione di notifica.

aws autoscaling put-lifecycle-hook --lifecycle-hook-name my-termination-hook \ --auto-scaling-group-name my-asg \ --lifecycle-transition autoscaling:EC2_INSTANCE_TERMINATING \ --notification-target-arn arn:aws:sns:region:123456789012:my-sns-topic \ --role-arn arn:aws:iam::123456789012:role/my-notification-role

L'argomento riceve una notifica di test con la seguente coppia chiave-valore:

"Event": "autoscaling:TEST_NOTIFICATION"

Per impostazione predefinita, il put-lifecycle-hookcomando crea un hook del ciclo di vita con un timeout del battito cardiaco di secondi (un'ora). 3600

Per modificare il timeout dell'heartbeat per un hook del ciclo di vita esistente, aggiungere l'opzione --heartbeat-timeout, come mostrato nell'esempio seguente.

aws autoscaling put-lifecycle-hook --lifecycle-hook-name my-termination-hook \ --auto-scaling-group-name my-asg --heartbeat-timeout 120

Se un'istanza è già in stato di attesa, puoi impedire il timeout del lifecycle hook registrando un heartbeat, utilizzando il comando CLI. record-lifecycle-action-heartbeat Ciò estende il periodo di timeout del valore di timeout specificato al momento della creazione dell'hook del ciclo di vita. Se finisci prima della fine del periodo di timeout, puoi inviare il comando complete-lifecycle-actionCLI per consentire all'istanza di passare allo stato successivo. Per maggiori informazioni ed esempi, consulta Completa un'azione del ciclo di vita in un gruppo Auto Scaling.