Avisos de interrupción de instancias de spot.
Un aviso de interrupción de instancia de spot es una advertencia que se emite dos minutos antes de que Amazon EC2 termine o detenga una instancia de spot. Si especifica la hibernación como comportamiento de interrupción, recibe un aviso de interrupción, pero no recibe una advertencia de dos minutos, ya que el proceso de hibernación comienza de inmediato.
La mejor manera de gestionar las interrupciones de instancias de spot correctamente es diseñar su aplicación para que sea tolerante a errores. Para lograrlo, puede aprovechar los avisos de interrupción de instancias de spot. Le recomendamos que compruebe estos avisos de interrupción cada 5 segundos.
Los avisos de interrupción están disponibles como CloudWatch Events y como elementos en los metadatos de instancia en la instancia de spot. Los avisos de interrupción se emiten en la medida de lo posible.
EC2 Spot Instance Interruption Warning event
Cuando Amazon EC2 va a interrumpir su instancia de spot, emite un evento dos minutos antes de la interrupción real (excepto en los casos en los que hay hibernación, que recibe el aviso de interrupción, pero no con dos minutos de antelación porque la hibernación comienza de inmediato). Amazon EventBridge puede detectar este evento. Para obtener más información, consulte los Eventos de Amazon EventBridge en la Guía del usuario de Amazon EventBridge. Para obtener un ejemplo detallado que le explica cómo crear y utilizar reglas de eventos, consulte Aprovechamiento de los avisos de interrupción de instancias de spot de Amazon EC2
El siguiente es un ejemplo de evento de interrupción de una instancia de spot. Los valores posibles de instance-action
son hibernate
, stop
, o terminate
.
{
"version": "0",
"id": "12345678-1234-1234-1234-123456789012
",
"detail-type": "EC2 Spot Instance Interruption Warning",
"source": "aws.ec2",
"account": "123456789012
",
"time": "yyyy
-mm
-dd
Thh
:mm
:ss
Z",
"region": "us-east-2
",
"resources": ["arn:aws:ec2:us-east-2a
:instance/i-1234567890abcdef0
"],
"detail": {
"instance-id": "i-1234567890abcdef0
",
"instance-action": "action
"
}
}
nota
El formato del ARN del evento de interrupción de la instancia de spot es arn:aws:ec2:
. Este formato es distinto del formato del ARN del recurso de EC2.availability-zone
:instance/instance-id
instance-action
El elemento instance-action
especifica la acción (parar o terminar) y la hora aproximada en UTC a la que se producirá.
Si Amazon EC2 ha marcado una instancia de spot para detenerla o terminarla, el elemento instance-action
está presente en los metadatos de la instancia. De lo contrario, no está presente. Puede recuperar la instance-action
mediante el Servicio de metadatos de instancia, versión 2 (IMDSv2) de la siguiente manera.
En el siguiente ejemplo de salida, se indica la hora a la que se detendrá esta instancia.
{"action": "stop", "time": "2017-09-18T08:22:00Z"}
En el siguiente ejemplo de salida, se indica la hora a la que terminará esta instancia.
{"action": "terminate", "time": "2017-09-18T08:22:00Z"}
Si Amazon EC2 no está preparándose para detener o terminar la instancia o si terminó la instancia usted mismo, instance-action
no está presente en los metadatos de la instancia y recibe un mensaje de error HTTP 404 cuando intenta recuperarlo.
termination-time
El elemento termination-time
especifica la hora aproximada, en UTC, a la que la instancia recibirá la señal de cierre.
nota
Este elemento se conserva para ofrecer compatibilidad con versiones anteriores. En su lugar, utilice instance-action
.
Si Amazon EC2 marca su instancia de spot para la finalización (ya sea debido a una interrupción de la instancia de spot en la que el comportamiento de interrupción está establecido como terminate
o debido a la cancelación de una solicitud de instancia de spot persistente), el elemento termination-time
está presente en los metadatos de la instancia. De lo contrario, no está presente. Puede recuperar termination-time
mediante el IMDSv2 de la siguiente manera.
A continuación, se muestra un ejemplo del resultado.
2015-01-05T18:02:00Z
Si Amazon EC2 no está preparándose para finalizar la instancia (ya sea porque no hay ninguna interrupción de la instancia de spot o porque el comportamiento de interrupción está establecido como stop
o hibernate
) o si finalizó la instancia de spot usted mismo, el elemento termination-time
no está presente en los metadatos de la instancia (por lo que recibe un mensaje de error HTTP 404) o contiene un valor que no es un valor de hora.
Si Amazon EC2 no es capaz de terminar la instancia, el estado de la solicitud se establece en fulfilled
. El valor termination-time
permanece en los metadatos de la instancia con la hora aproximada original, que ahora ya está en el pasado.