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

스팟 인스턴스 중단 공지

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

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

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

EC2 Spot Instance interruption notice

Amazon EC2에서는 스팟 인스턴스를 중단할 때 실제 중단 2분 전에 이벤트를 전송합니다(최대 절전 모드는 즉시 시작하기 때문에 중단 공지를 2분 전에 받지 않는 최대 절전 모드는 제외). 이 이벤트는 Amazon CloudWatch Events를 통해 감지될 수 있습니다. CloudWatch Events에 대한 자세한 내용은 Amazon CloudWatch Events 사용 설명서를 참조하세요. 이벤트 규칙을 생성하고 사용하는 방법을 안내하는 자세한 예제는 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-2:123456789012:instance/i-1234567890abcdef0"], "detail": { "instance-id": "i-1234567890abcdef0", "instance-action": "action" } }

instance-action

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

IMDSv2
[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" -v http://169.254.169.254/latest/meta-data/spot/instance-action
IMDSv1
[ec2-user ~]$ curl 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 항목이 있습니다. 표시하지 않은 경우에는 이 항목이 없습니다. 다음과 같이 termination-time을 검색할 수 있습니다.

IMDSv2
[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
IMDSv1
[ec2-user ~]$ if curl -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 값은 과거 시점인 원래 예상 시간과 함께 인스턴스 메타데이터에 남습니다.