スポットインスタンスの中断通知
スポットインスタンスの中断通知は、Amazon EC2 がスポットインスタンスを停止または終了する 2 分前に発行される警告です。中断動作として休止状態を指定した場合は、中断通知が表示されますが、休止状態プロセスはすぐに開始されるため、2 分間の警告は表示されません。
スポットインスタンスの中断を適切に処理する最善の方法は、耐障害性のあるアプリケーションを設計することです。これを実現するには、スポットインスタンスの中断通知を活用します。中断通知は 5 秒ごとに確認することをお勧めします。
この中断通知は、EventBridge イベントとして、またスポットインスタンス上のインスタンスメタデータの項目として使用できます。中断通知は、ベストエフォートベースで出力されます。
EC2 Spot Instance Interruption Warning イベント
Amazon EC2 がスポットインスタンスを中断しようとすると、実際の中断が起こる 2 分前にイベントが発生します (休止の場合は、即時的にその状態に移行するため、中断通知は発行されますが 2 分前には提供されず、このイベントの対象にはなりません)。このイベントは Amazon EventBridge で検出できます。EventBridge イベントの詳細については、「Amazon EventBridge ユーザーガイド」を参照してください。イベントルールの作成および使用方法の詳細な例については、「Taking Advantage of Amazon EC2 スポットインスタンスInterruption Notices
以下に、スポットインスタンスでの中断イベントの例を示します。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
-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
"
}
}
注記
スポットインスタンスでの中断イベントの ARN 形式は arn:aws:ec2:
です。この形式は、EC2 リソース ARN 形式とは異なります。availability-zone
:instance/instance-id
instance-action
instance-action
項目は、アクションおよびアクションのおよその発生時刻 (UTC) を指定します。
Amazon EC2 が、スポットインスタンスを停止または終了のためにマークした場合、インスタンスメタデータ内に instance-action
項目が含まれるようになります。そうでない場合、これは存在しません。次のように、インスタンスメタデータサービスバージョン 2 (IMDSv2) を使用して、instance-action
を取得できます。
次の出力例では、このインスタンスの停止時刻を示します。
{"action": "stop", "time": "2017-09-18T08:22:00Z"}
次の出力例では、このインスタンスの終了時刻を示します。
{"action": "terminate", "time": "2017-09-18T08:22:00Z"}
Amazon EC2 がインスタンスを停止または終了する準備をしていない場合や、お客様が自分でインスタンスを終了した場合、instance-action
はインスタンスメタデータ内に存在せず、取得しようとした場合、HTTP 404 エラーが出力されます。
termination-time
termination-time
項目は、インスタンスがシャットダウン信号を受信するだいたいの時刻 (UTC) を指定します。
注記
この項目は下位互換性のために維持されています。代わりに instance-action
を使用してください。
スポットインスタンスに、Amazon EC2 によって (中断動作が terminate
に設定されているスポットインスタンスの中断により、または永続的なスポットインスタンスリクエストのキャンセルにより) 終了のマークが付けられた場合、termination-time
の項目は、インスタンスのメタデータに含まれています。そうでない場合、これは存在しません。次のように、IMDSv2 を使用して termination-time
を取得できます。
以下は出力例です。
2015-01-05T18:02:00Z
Amazon EC2 がインスタンスを終了する準備をしていない場合 (スポットインスタンスの中断がない、または中断動作が stop
または hibernate
に設定されているため)、またはユーザーがスポットインスタンスを終了した場合には、termination-time
項目はインスタンスメタデータ内に存在しないか (この場合、HTTP 404 エラーが出力されます)、時刻値以外の値が含まれます。
Amazon EC2 がインスタンスの終了に失敗した場合は、リクエストステータスが fulfilled
に設定されます。termination-time
値は、元のおよその時刻のまま (過去の時刻になっていますが)、インスタンスのメタデータに残ります。