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

Un avviso di interruzione dell'istanza Spot è un avviso che viene emesso due minuti prima che Amazon EC2 interrompa o chiuda 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 interrompe un'istanza Spot, emette un evento due minuti prima dell'interruzione effettiva (ad eccezione dell'ibernazione, che riceve l'avviso di interruzione, ma non due minuti prima, poiché 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 ARN formato dell'evento di interruzione dell'istanza Spot è. arn:aws:ec2:availability-zone:instance/instance-id Questo formato è diverso dal formato delle EC2risorse ARN.

instance-action

L'instance-actionelemento specifica l'azione e l'ora approssimativa, inUTC, in cui si verificherà l'azione.

Se la tua istanza Spot è contrassegnata come interrotta o terminata da AmazonEC2, l'instance-actionelemento è presente nei metadati dell'istanza. In caso contrario, non è presente. Puoi recuperare l'instance-actionutilizzo del servizio di metadati dell'istanza versione 2 () IMDSv2 come segue.

cURL
[ec2-user ~]$ 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
PowerShell
PS C:\> [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 non EC2 si prepara a fermare o terminare l'istanza, o se l'istanza è stata terminata tu stesso, non instance-action è presente nei metadati dell'istanza e ricevi un errore HTTP 404 quando tenti di recuperarla.

termination-time

L'termination-timeelemento specifica l'ora approssimativa in UTC cui l'istanza riceverà il segnale di spegnimento.

Nota

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

Se la tua istanza Spot è contrassegnata per la chiusura da Amazon EC2 (a causa di un'interruzione dell'istanza Spot su cui è impostato il comportamento di interruzione o a terminate causa dell'annullamento di una richiesta persistente di istanza Spot), l'termination-timeelemento è presente nei metadati dell'istanza. In caso contrario, non è presente. Puoi recuperare l'utilizzo come segue. termination-time IMDSv2

cURL
[ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` [ec2-user ~]$ 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
PowerShell
PS C:\> [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 prepara a terminare l'istanza (o perché non vi è alcuna interruzione dell'istanza Spot o perché il comportamento di interruzione è impostato su stop ohibernate), o se l'istanza Spot è stata terminata tu stesso, l'termination-timeelemento non è presente nei metadati dell'istanza (quindi ricevi 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 è impostato fulfilled su. I valore termination-time rimane nei metadati di istanza con l'orario indicativo originario, che ora è in passato.