Knowledge Center Monthly Newsletter - March 2025
Stay up to date with the latest from the Knowledge Center. See all new and updated Knowledge Center articles published in the last month and re:Post’s top contributors.
Come posso ritardare l’interruzione di un'istanza Amazon EC2 non integra in modo da poter risolvere i problemi?
La mia istanza Amazon Elastic Compute Cloud (Amazon EC2) non è integra ed è stata interrotta prima che determinassi la causa del problema.
Breve descrizione
Per risolvere i problemi di un'istanza EC2 non integra prima della terminazione, aggiungi un hook del ciclo di vita di Amazon EC2 Auto Scaling per spostare lo stato dell'istanza da Terminating a Terminating:Wait.
Per impostazione predefinita, un'istanza rimane nello stato In attesa di chiusura per 3,600 secondi (1 ora). Per aumentare il tempo, usa il parametro ** heartbeat-timeout** nella chiamata API put-lifecycle-hook. Il tempo massimo in cui è possibile mantenere un'istanza nello stato In attesa di chiusura è di 48 ore o 100 volte il timeout dell'heartbeat, in base a quale dei due valori è inferiore.
Risoluzione
Usa l'interfaccia a riga di comando di AWS (AWS CLI) per configurare un hook del ciclo di vita.
Nota: se visualizzi dei messaggi di errore quando esegui i comandi dell'interfaccia della linea di comando AWS, consulta la sezione Risolvere gli errori AWS CLI. Inoltre, assicurati diutilizzare la versione più recente di AWS CLI.
Creare un argomento Amazon SNS
Per creare un argomento Amazon Simple Notification Service (Amazon SNS), completa i seguenti passaggi:
-
Crea un argomento SNS in cui il gruppo EC2 Auto Scaling invia notifiche sul ciclo di vita. Per esempio il comando create-topic per creare l'argomento ASNotifications:
$ aws sns create-topic --name ASNotifications
L'output restituisce un ARN simile al seguente:
"TopicArn": "arn:aws:sns:us-west-2:123456789012:ASNotifications"
-
Crea una sottoscrizione all'argomento. È necessario disporre di un abbonamento per ricevere il LifecycleActionToken necessario per estendere il timeout di heartbeat dello stato in attesa di chiusura o completare l'azione del ciclo di vita. L'esempio seguente utilizza il comando abbonati per creare un abbonamento che utilizza il protocollo e-mail (SMTP) con l'indirizzo e-mail dell'endpoint user@amazon.com:
$ aws sns subscribe --topic-arn arn:aws:sns:us-west-2:123456789012:ASNotifications --protocol email --notification-endpoint user@amazon.com
Configurare le autorizzazioni IAM
Configura un ruolo AWS Identity and Access Management (IAM) che conceda al servizio di gruppo EC2 Auto Scaling le autorizzazioni per l'invio all'argomento SNS. Per completare questa operazione, crea un documento di testo con la normativa appropriata. Quindi, fai riferimento al file nel comando create-role.
-
Usa un editor di testo (come vi) per creare il documento di testo:
$ sudo vi assume-role.txt
-
Inserisci le seguenti informazioni nel file di testo, quindi salva il file:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "autoscaling.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
Usa il comando aws iam create-role per creare il ruolo IAM AS-Lifecycle-hook-role dalla policy salvata in assume-role.txt:
$ aws iam create-role --role-name AS-Lifecycle-Hook-Role --assume-role-policy-document file://assume-role.txt
L'output contiene l'ARN del ruolo. Nota l'ARN sia del ruolo IAM che dell'argomento SNS.
-
Aggiungi autorizzazioni al ruolo per consentire a EC2 Auto Scaling di inviare notifiche SNS quando si verifica un evento hook del ciclo di vita. Il seguente esempio utilizza il comando attach-role-policy per collegare la policy gestita AutoScalingNotificationAccessRole al ruolo IAM as-Lifecycle-hook-role:
$ aws iam attach-role-policy --role-name AS-Lifecycle-Hook-Role --policy-arn arn:aws:iam::aws:policy/service-role/AutoScalingNotificationAccessRole
Questa politica gestita concede le seguenti autorizzazioni:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Resource": "*", "Action": [ "sqs:SendMessage", "sqs:GetQueueUrl", "sns:Publish" ] } ] }
**Importante:**la policy gestita di AWS AutoScalingNotificationAccessRole consente a EC2 Auto Scaling di effettuare chiamate a tutti gli argomenti e le code SNS. Per limitare l'accesso di EC2 Auto Scaling solo ad argomenti o code SNS specifici, utilizza come esempio la seguente policy.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Resource": "arn:aws:sns:us-west-2:123456789012:ASNotifications", "Action": [ "sqs:SendMessage", "sqs:GetQueueUrl", "sns:Publish" ] } ] }
Configurare l’hook del ciclo di vita
Quindi, usa il comando put-lifecycle-hook per configurare il ciclo di vita:
aws autoscaling put-lifecycle-hook --lifecycle-hook-name AStroubleshoot --auto-scaling-group-name MyASGroup --lifecycle-transition autoscaling:EC2_INSTANCE_TERMINATING --notification-target-arn arn:aws:sns:us-west-2:123456789012:ASNotifications --role-arn arn:aws:iam::123456789012:role/AS-Lifecycle-Hook-Role
**Nota:**sostituisci i valori di esempio con il nome del tuo gruppo EC2 Auto Scaling, l'ARN di destinazione SNS e l'ARN del ruolo IAM.
Il comando put-lifecycle-hook completa le seguenti funzioni:
- Assegna un nome all’hook del ciclo di vita (aStroubleshoot)
- Identifica il gruppo EC2 Auto Scaling associato al lifecycle hook (MyASGroup)
- Configura l'hook per la fase del ciclo di vita della terminazione dell'istanza (EC2\ _INSTANCE\ _TERMINATING)
- Specifica l'ARN dell'argomento SNS (arn:aws:sns:us-west- 2:123456789012:asNotifications)
- Specifica l'ARN del ruolo IAM (arn:aws:iam: :123456789012:role/as-lifecycle-hook-role)
Testare l’hook del ciclo di vita
Per testare l'hook del ciclo di vita, scegli prima un'istanza. Nell'interfaccia della linea di comando AWS, esegui il comando terminate-instance-in-auto-scaling-group per terminare l'istanza. Dopo che l'istanza è passata allo stato Terminating:Wait, esegui il comando record-lifecycle-action-heartbeat per mantenere l'istanza in questo stato. Oppure, esegui il comando complete-lifecycle-action per completare la terminazione:
aws autoscaling complete-lifecycle-action --lifecycle-hook-name my-lifecycle-hook --auto-scaling-group-name MyASGroup --lifecycle-action-result CONTINUE --instance-id i-0e7380909ffaab747
Informazioni correlate
Amazon EC2 Auto Scaling lifecycle hooks

Contenuto pertinente
- In che modo posso risolvere i problemi di connessione alla mia istanza Linux Amazon EC2 tramite SSH?AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 3 anni fa
- AWS UFFICIALEAggiornata un anno fa