Avvisi di interruzione dell'istanza spot - Amazon Elastic Compute Cloud

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

Avvisi di interruzione dell'istanza spot

Una notifica di interruzione di istanza spot è un avviso che viene emesso due minuti prima che Amazon EC2 arresti o termini l'istanza spot. Se si specifica l'ibernazione come comportamento di interruzione, si riceve un avviso di interruzione ma senza i due minuti di preavviso perché il processo di ibernazione comincia immediatamente.

Il modo migliore per gestire nel modo appropriato le interruzioni delle istanze spot è progettare l'applicazione affinché sia tollerante ai guasti. A tale scopo, puoi sfruttare gli avvisi di interruzione dell'istanza spot. Si consiglia di controllare queste notifiche di interruzione ogni 5 secondi.

Gli avvisi di interruzione sono resi disponibili come EventBridge evento e come elementi nei metadati dell'istanza sull'istanza Spot. Gli avvisi di interruzione vengono emessi in base al miglior sforzo possibile.

Evento EC2 Spot Instance Interruption Warning.

Quando Amazon EC2 sta per interrompere l'istanza spot, emette un evento due minuti prima dell'interruzione effettiva (tranne che per l'ibernazione, che riceve l'avviso di interruzione ma non con due minuti di anticipo, perché l'ibernazione inizia immediatamente). Questo evento può essere rilevato da Amazon EventBridge. Per ulteriori informazioni sugli EventBridge eventi, consulta la Amazon EventBridge User Guide. Per un esempio dettagliato che illustra come creare e utilizzare le regole degli eventi, consulta Taking Advantage of Amazon EC2 Spot Instance Interruption Notices.

Di seguito è illustrato un esempio dell'evento di interruzione dell'istanza spot. I valori possibili per instance-action sono hibernate, stop e terminate.

{ "version": "0", "id": "12345678-1234-1234-1234-123456789012", "detail-type": "EC2 Spot Instance Interruption Warning", "source": "aws.ec2", "account": "123456789012", "time": "yyyy-mm-ddThh:mm:ssZ", "region": "us-east-2", "resources": ["arn:aws:ec2:us-east-2a:instance/i-1234567890abcdef0"], "detail": { "instance-id": "i-1234567890abcdef0", "instance-action": "action" } }
Nota

Il formato dell'ARN dell'interruzione dell'istanza spot è arn:aws:ec2:availability-zone:instance/instance-id. Questo formato è diverso dal formato dell'ARN delle risorse EC2.

instance-action

La voce instance-action specifica l'azione e l'orario indicativo, in UTC, in cui si verificherà l'azione.

Se l'istanza spot è contrassegnata per essere arrestata o terminata dal Amazon EC2, nei metadati dell'istanza è presente la voce instance-action. In caso contrario, non è presente. Puoi recuperare instance-action utilizzando Instance Metadata Service versione 2 (IMDSv2) come segue.

Linux
TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \ && curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/spot/instance-action
Windows
[string]$token = Invoke-RestMethod ` -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} ` -Method PUT -Uri http://169.254.169.254/latest/meta-data/spot/instance-action

L'esempio seguente indica l'orario in cui questa istanza verrà arrestata.

{"action": "stop", "time": "2017-09-18T08:22:00Z"}

L'esempio seguente indica l'orario in cui questa istanza verrà terminata.

{"action": "terminate", "time": "2017-09-18T08:22:00Z"}

Se Amazon EC2 non si sta preparando ad arrestare o terminare l'istanza o se l'istanza è stata terminata dall'utente stesso, instance-action non è presente nei metadati dell'istanza e viene restituito un errore HTTP 404 quando si cerca di recuperarla.

termination-time

L'elemento termination-time specifica l'orario indicativo, in UTC, in cui l'istanza riceve il segnale di arresto.

Nota

Questa voce viene mantenuta per la compatibilità con le versioni precedenti; è necessario utilizzare instance-action.

Se la tua istanza spot è contrassegnata per la terminazione da Amazon EC2 (a causa di un'interruzione dell'istanza spot in cui il comportamento di interruzione è impostato su terminate o a causa dell'annullamento di una richiesta persistente di istanza spot), l'elemento termination-time è presente nei metadati dell'istanza. In caso contrario, non è presente. È possibile recuperare l'termination-timeutilizzo IMDSv2 come segue.

Linux
TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` if curl -H "X-aws-ec2-metadata-token: $TOKEN" -s http://169.254.169.254/latest/meta-data/spot/termination-time | grep -q .*T.*Z; then echo termination_scheduled; fi
Windows
[string]$token = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} -Method PUT -Uri http://169.254.169.254/latest/meta-data/spot/termination-time

Di seguito è riportato un output di esempio.

2015-01-05T18:02:00Z

Se Amazon EC2 non si sta preparando a terminare l'istanza (perché non c'è un'interruzione dell'istanza spot o perché il comportamento di interruzione è impostato su stop o hibernate) o se hai terminato l'istanza spot, l'elemento termination-time non è presente nei metadati dell'istanza (quindi riceve un errore HTTP 404) o contiene un valore che non è un valore temporale.

Se Amazon EC2 non riesce a terminare l'istanza, lo stato della richiesta viene impostato su fulfilled. I valore termination-time rimane nei metadati di istanza con l'orario indicativo originario, che ora è in passato.