メニュー
Amazon Elastic Compute Cloud
Linux インスタンス用ユーザーガイド

スポットインスタンスの中断

スポットインスタンスに対する需要は刻一刻と大幅に変化する可能性があります。また、スポットインスタンスの可用性も利用可能な未使用の EC2 インスタンスの数に応じて大きく変化する可能性があります。 さらに、どれほど高い価格で入札しても、スポットインスタンスが中断される可能性があります。したがって、アプリケーションでスポットインスタンスの中断に対して準備する必要があります。中断できないアプリケーションについては、スポットインスタンスを使用しないことを強くお勧めします。

Amazon EC2 がスポットインスタンスを終了する理由として、次のような理由が考えられます。

  • 価格 – スポット料金が入札価格を上回っています。

  • 容量 – スポットインスタンスの需要を満たすのに十分な未使用の EC2 インスタンスがない場合、Amazon EC2 は、入札価格が最も低いインスタンスから順にスポットインスタンスを終了します。 同じ入札価格で複数のスポットインスタンスが存在する場合、インスタンスを終了する順序はランダムに決定されます。

  • 制約 – リクエストに起動グループやアベイラビリティーゾーングループなど制約が含まれている場合、制約条件が満たされなくなったときに、そのスポットインスタンスはグループとして終了されます。

中断に対する準備

スポットインスタンスを使用する場合のベストプラクティスを以下に示します。

  • 合理的な入札価格を選択します。入札価格は、リクエストが受理されやすくなるように十分に高くする必要がありますが、支払える金額よりも高くしないでください。供給が長期間にわたって低い場合、スポット料金は最も高額の入札価格に基づいており、その期間中、スポット料金が高いままになる可能性があるため、このことは重要です。 オンデマンドインスタンスの価格を上回る価格を入札しないことを強くお勧めします。

  • 必要なソフトウェア設定を含む Amazon Machine Image (AMI) を使用することにより、リクエストが受理されたらすぐにインスタンスを実行できるように、準備が完了していることを確認します。また、ユーザーデータを使用して起動時にコマンドを実行することもできます。

  • スポットインスタンスの終了の影響を受けない場所に、定期的に重要なデータを保存します。 たとえば、Amazon S3、Amazon EBS、または DynamoDB を使用できます。

  • 作業を頻繁に保存できるように、作業を (Grid、Hadoop、キューベースのアーキテクチャを使用して) 細かいタスクに分割するか、チェックポイントを使用します。

  • スポットインスタンスの終了の通知を使用して、スポットインスタンスのステータスをモニタリングします。

  • アプリケーションをテストして、予期しないインスタンスの終了をアプリケーションが適切に処理できることを確認します。オンデマンドインスタンスを使用してアプリケーションを実行し、オンデマンドインスタンスを自分で終了することでこれを確認できます。

スポットインスタンスの終了の通知

スポットインスタンスの中断から保護する最善の方法は、アプリケーションを耐障害性のある設計にすることです。さらに、スポットインスタンスの終了の通知を活用できます。これによって、Amazon EC2 がスポットインスタンスを終了する 2 分前に警告が提供されます。

この警告は、インスタンスメタデータの項目を使用して、スポットインスタンス上のアプリケーションで使用できます。たとえば、次のクエリを使用して、インスタンスメタデータ内にこの警告があるかどうかを定期的に (5 秒ごとをお勧めします) 確認できます。

Copy
$ if curl -s http://169.254.169.254/latest/meta-data/spot/termination-time | grep -q .*T.*Z; then echo terminated; fi

インスタンスメタデータを取得するためのその他の方法については、「インスタンスメタデータの取得」を参照してください。

Amazon EC2 によってスポットインスタンスに終了のマークが付けられている場合、termination-time 項目が存在し、インスタンスがシャットダウン信号を受け取るおよその時間が UTC で示されます。 (例:

Copy
2015-01-05T18:02:00Z

Amazon EC2 がインスタンスを終了する準備をしていない場合や、お客様が自分でスポットインスタンスを終了した場合、termination-time 項目は存在しない (この場合、HTTP 404 エラーが出力されます) か、時刻値以外の値が含まれます。

Amazon EC2 によってスポットインスタンスに終了のマークが付けられた時点でこの警告を提供するように努めていますが、Amazon EC2 がこの警告を利用できる前に、スポットインスタンスが終了される可能性があります。 そのため、スポットインスタンスの終了の通知を確認している場合でも、予期しないスポットインスタンスの中断を処理できるようにアプリケーションで準備しておく必要があります。

Amazon EC2 がインスタンスの終了に失敗した場合は、スポット入札ステータスが fulfilled に設定されます。termination-time が元のおよその時刻のまま (過去の時刻になっていますが)、インスタンスのメタデータに残ることに注意してください。