スポットインスタンスの中断通知
スポットインスタンスの中断通知は、Amazon EC2 がスポットインスタンスを停止または終了する 2 分前に発行される警告です。中断動作として休止状態を指定した場合は、中断通知が表示されますが、休止状態プロセスはすぐに開始されるため、2 分間の警告は表示されません。
スポットインスタンスの中断を適切に処理する最善の方法は、耐障害性のあるアプリケーションを設計することです。これを実現するには、スポットインスタンスの中断通知を活用します。中断通知は 5 秒ごとに確認することをお勧めします。
この中断通知は、EventBridge イベントとして、またスポットインスタンス上のインスタンスメタデータの項目として使用できます。中断通知は、ベストエフォートベースで出力されます。
EC2 Spot Instance interruption notice
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-2
:123456789012
:instance/i-1234567890abcdef0
"],
"detail": {
"instance-id": "i-1234567890abcdef0
",
"instance-action": "action
"
}
}
instance-action
Amazon EC2 が、スポットインスタンスを停止または終了のためにマークした場合、インスタンスメタデータ内に instance-action
項目が含まれるようになります。そうでない場合、これは存在しません。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
は以下のように取得できます。
termination-time
項目は、インスタンスがシャットダウン信号を受信するおよその時刻 (UTC) を指定します。以下は出力例です。
2015-01-05T18:02:00Z
Amazon EC2 がインスタンスを終了する準備をしていない場合や、ユーザーがスポットインスタンスを終了した場合には、termination-time
項目はインスタンスメタデータ内に存在しない (この場合、HTTP 404 エラーが出力されます) か、時刻値以外の値が含まれます。
Amazon EC2 がインスタンスの終了に失敗した場合は、リクエストステータスが fulfilled
に設定されます。termination-time
値は、元のおよその時刻のまま (過去の時刻になっていますが)、インスタンスのメタデータに残ります。