스팟 인스턴스 중단 공지 - Amazon Elastic Compute Cloud

스팟 인스턴스 중단 공지

스팟 인스턴스 중단 공지는 Amazon EC2가 스팟 인스턴스를 중지 또는 종료하기 2분 전에 생성되는 경고입니다. 최대 절전을 중지 행동으로 지정할 경우 중지 공지를 수신하지만, 최대 절전 과정은 즉시 시작되므로 2분 경고를 받지 않습니다.

스팟 인스턴스 중단을 정상적으로 처리하는 가장 좋은 방법은 내결함성이 있도록 애플리케이션을 설계하는 것입니다. 이를 위해 스팟 인스턴스 중단 공지를 활용할 수 있습니다. 5초마다 이러한 중단 공지를 확인하는 것이 좋습니다.

중단 공지는 EventBridge 이벤트 및 스팟 인스턴스의 인스턴스 메타데이터 항목으로 제공됩니다. 중단 알림은 최선의 노력을 한 후 발송됩니다.

EC2 Spot Instance interruption notice

Amazon EC2에서는 스팟 인스턴스를 중단할 때 실제 중단 2분 전에 이벤트를 전송합니다(최대 절전 모드는 즉시 시작하기 때문에 중단 공지를 2분 전에 받지 않는 최대 절전 모드는 제외). 이 이벤트는 Amazon EventBridge에서 감지할 수 있습니다. EventBridge 이벤트에 대한 자세한 내용은 Amazon EventBridge User Guidehttps://docs.aws.amazon.com/eventbridge/latest/userguide/를 참조하세요. 이벤트 규칙을 생성하고 사용하는 방법을 안내하는 자세한 예제는 Amazon EC2 스팟 인스턴스 중단 공지 활용을 참조하세요.

다음은 스팟 인스턴스 중단 이벤트의 예제입니다. 가능한 instance-action 값은 hibernate, stop 또는 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" } }
참고

스팟 인스턴스 중단 이벤트의 ARN 형식은 arn:aws:ec2:availability-zone:instance/instance-id입니다. 이 형식은 EC2 리소스 ARN 형식과 다릅니다.

instance-action

스팟 인스턴스가 Amazon EC2에 의해 중지되거나 종료되도록 표시된 경우 인스턴스 메타데이터instance-action 항목이 있습니다. 표시하지 않은 경우에는 이 항목이 없습니다. 인스턴스 메타데이터 서비스 버전 2(IMDSv2)를 사용하여 다음과 같이 instance-action을 검색할 수 있습니다.

[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

instance-action 항목은 해당 작업과 작업이 이루어지는 대략적 시간(UTC 기준)을 지정합니다.

다음 예시 출력에서는 이 인스턴스가 중지될 시간을 알려줍니다.

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

다음 예시 출력에서는 이 인스턴스가 종료될 시간을 알려줍니다.

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

Amazon EC2가 인스턴스를 중지 또는 종료할 준비가 되지 않거나 사용자가 인스턴스를 직접 종료한 경우 instance-action 항목이 인스턴스 메타데이터에 없고 사용자가 이를 검색하려 하면 HTTP 404 오류를 수신하게 됩니다.

termination-time

이 항목은 이전 버전과의 호환성을 위해 보존되며, 그 대신 instance-action을 사용해야 합니다.

스팟 인스턴스가 Amazon EC2의 종료 대상으로 표시된 경우 인스턴스 메타데이터termination-time 항목이 있습니다. 표시하지 않은 경우에는 이 항목이 없습니다. 다음과 같이 IMDSv2를 사용하여 termination-time을 검색할 수 있습니다.

[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 terminated; fi

termination-time 항목은 인스턴스가 종료 신호를 받게 될 대략의 시간(UTC 기준)을 지정합니다. 출력의 예제는 다음과 같습니다.

2015-01-05T18:02:00Z

Amazon EC2가 인스턴스를 종료할 준비가 되지 않거나 사용자가 스팟 인스턴스를 직접 종료한 경우 termination-time 항목이 인스턴스 메타데이터에 없거나(HTTP 404 오류 수신) 이 항목에 시간 값이 아닌 값이 포함됩니다.

Amazon EC2에서 인스턴스를 종료하지 않으면 요청 상태가 fulfilled로 설정됩니다. termination-time 값은 과거 시점인 원래 예상 시간과 함께 인스턴스 메타데이터에 남습니다.