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

スポットインスタンス リクエスト

スポットインスタンス を使用するには、インスタンスの数、インスタンスタイプ、アベイラビリティーゾーン、インスタンス時間当たりに支払える上限価格 (入札価格) を含む スポットインスタンス リクエストを作成します。時間あたりの上限料金が現在のスポット料金を超える場合で、容量がご利用可能な場合、Amazon EC2 は即時にお客様のリクエストを受理します。それ以外の場合、Amazon EC2 は、リクエストが受理できるようになるか、お客様がリクエストをキャンセルするまで待機します。

次の図に、スポットリクエストのしくみを示します。 スポットインスタンス の中断に対する操作はリクエストのタイプ (ワンタイムまたは永続) と中断の動作 (休止または削除) によって決まります。リクエストが永続リクエストの場合、スポットインスタンス の終了後、リクエストが再度実行されます。

 スポットのライフサイクル

スポットインスタンス リクエストの状態

スポットインスタンス リクエストは、次に示す状態のいずれかになります。

  • open – リクエストは受理されるまで待機状態です。

  • active – リクエストは受理された状態であり、関連付けられたスポットインスタンスが存在します。

  • failed – リクエストの 1 つ以上のパラメータが正しくありません。

  • closed – スポットインスタンス は中断または終了されました。

  • cancelled – お客様がリクエストをキャンセルしたか、リクエストの有効期限が切れました。

次の図は、リクエストの状態の遷移を示しています。遷移はリクエストのタイプ (ワンタイムまたは永続) によって異なります。

 スポットリクエストの状態

ワンタイム スポットインスタンス リクエストは、Amazon EC2 が スポットインスタンス を起動するか、リクエストの有効期限が切れるか、またはお客様がリクエストをキャンセルするまでアクティブ状態です。スポット料金が上限価格を上回った場合または容量が利用できない場合、スポットインスタンス は終了し、スポットインスタンス リクエストはクローズされます。

永続 スポットインスタンス リクエストは、リクエストが受理されても、リクエストの有効期限が切れるか、お客様がリクエストをキャンセルするまでアクティブ状態です。スポット料金が上限価格を上回った場合または容量が利用できない場合、スポットインスタンス は中断されます。インスタンスが中断された後、上限料金がスポット料金を超えるか、容量が再び利用可能になると、スポットインスタンス が開始されるか(停止している場合)、スポットインスタンス が再開されるか(休止状態の場合)、または スポットインスタンス リクエストが再び開かれ、Amazon EC2 が新しい スポットインスタンス を開始します(終了している場合)。

スポットインスタンス リクエストのステータスと、入札ステータスによって起動された スポットインスタンス のステータスを追跡できます。詳細については、「スポットリクエストステータス」を参照してください。

スポットインスタンス の継続期間の指定

Amazon EC2 では、継続期間 (スポットブロックとも呼ばれます) を指定した スポットインスタンス は、スポット料金が変動しても終了されません。このようなインスタンスは、バッチ処理、エンコードとレンダリング、モデリングと解析、継続的な統合など、完了までに一定の時間のかかるジョブに最適です。

1、2、3、4、5、または 6 時間の継続期間を指定できます。支払い額はこの指定した継続期間によって決まります。1 時間または 6 時間の継続期間の現在の価格を確認するには、スポットインスタンス の料金表ページを参照してください。これらの価格を使用して 2、3、4、5 時間の継続期間のコストを見積もることができます。継続期間を指定したリクエストが履行されると、スポットインスタンス の価格は固定され、インスタンスの終了時まで有効なままになります。インスタンスが実行している時間 (または 1 時間未満) ごとに、この価格で請求されます。インスタンスの実行時間が 1 時間未満でも、1 時間として請求されます。

スポットリクエストで継続期間を指定すると、各スポットインスタンスではインスタンス ID が割り当てられるとすぐに継続期間が開始されます。スポットインスタンス は手動終了されるか継続期間が終了するまで実行されます。継続期間の終了時、Amazon EC2 では スポットインスタンス が終了対象としてマークされ、スポットインスタンス の終了通知が表示されます。それにより、インスタンスの終了前に 2 分の警告期間が与えられます。

継続期間を指定した スポットインスタンス をコンソールで起動するには

適切なリクエストタイプを選択します。詳細については、「スポットインスタンス リクエストを作成する」を参照してください。

継続期間を指定した スポットインスタンス を AWS CLI で起動するには

スポットインスタンス の継続期間を指定するには、--block-duration-minutes を付けて request-spot-instances コマンドを実行します。たとえば、以下のコマンドでは、継続期間が 2 時間の スポットインスタンス を起動するスポットリクエストが作成されます。

aws ec2 request-spot-instances --instance-count 5 --block-duration-minutes 120 --type "one-time" --launch-specification file://specification.json

継続期間を指定した スポットインスタンス のコストを AWS CLI で取得するには

継続期間を指定した スポットインスタンス の固定費を取得するには、describe-spot-instance-requests コマンドを使用します。この情報は actualBlockHourlyPrice フィールドにあります。

スポットインスタンス のテナンシーの指定

スポットインスタンス は、シングルテナントのハードウェアで実行できます。ハードウェア専有 スポットインスタンス は、他の AWS アカウントに属するインスタンスから物理的に分離されます。詳細については、ハードウェア専有インスタンス および Amazon EC2 ハードウェア専有インスタンス の製品ページを参照してください。

ハードウェア専有 スポットインスタンス を実行するには、次のいずれかを実行します。

  • スポットインスタンス のリクエストを作成するときに、dedicatedのテナントを指定します。詳細については、「スポットインスタンス リクエストを作成する」を参照してください。

  • dedicated のインスタンスのテナントを持つ VPC の スポットインスタンス をリクエストします。詳細については、「インスタンスのテナント属性が専有である VPC を作成する」を参照してください。dedicated のインスタンスのテナントを使用して VPC でインスタンスをリクエストすると、default のテナントで スポットインスタンス をリクエストすることができません。

次のインスタンスタイプは、ハードウェア専有 スポットインスタンス をサポートします。

現行世代

  • c4.8xlarge

  • d2.8xlarge

  • i3.16xlarge

  • m4.10xlarge

  • m4.16xlarge

  • p2.16xlarge

  • r4.16xlarge

  • x1.32xlarge

前の世代

  • c3.8xlarge

  • cc2.8xlarge

  • cr1.8xlarge

  • g2.8xlarge

  • i2.8xlarge

  • r3.8xlarge

スポットインスタンス リクエストのサービスにリンクされたロール

スポットインスタンス をリクエストすると、Amazon EC2 はサービスにリンクされたロールを作成します。サービスにリンクされたロールには、Amazon EC2 がユーザーに代わって他の AWS サービスを呼び出すために必要なすべての権限が含まれます。詳細については、『IAM ユーザーガイド』の「サービスにリンクされたロールの使用」を参照してください。

Amazon EC2 は、[AWSServiceRoleForEC2Spot] というサービスにリンクされたロールを使用して、次のアクションを実行します。

  • ec2:DescribeInstances - スポットインスタンス を説明

  • ec2:StopInstances - スポットインスタンス を停止

  • ec2:StartInstances - スポットインスタンス を 開始

スポットインスタンス に暗号化された EBS スナップショットを指定し、暗号化にカスタマー管理 CMK を使用する場合、Amazon EC2 が スポットインスタンス を起動できるように、[AWSServiceRoleForEC2Spot] ロールにこれらの CMK へのアクセスを許可する必要があります。プリンシパルは [AWSServiceRoleForEC2Spot] ロールのAmazon リソースネーム (ARN) です。詳細については、「AWS KMS でのキーポリシーの使用」を参照してください。

Amazon EC2 がこのサービスにリンクされたロールのサポートを開始した 2017 年 10 月以前にアクティブな スポットインスタンス リクエストを行った場合は、Amazon EC2 が AWS アカウントで [AWSServiceRoleForEC2Spot] ロールを作成しています。詳細については、IAM ユーザーガイドの「アカウントに新しいロールが表示される」を参照してください。

スポットインスタンス を使用する必要がなくなった場合は、[AWSServiceRoleForEC2Spot] ロールを削除することをお勧めします。このロールがアカウントから削除された後で、スポットインスタンス をリクエストすると、Amazon EC2 はロールを再度作成します。

スポットインスタンス リクエストを作成する

スポットインスタンス をリクエストするプロセスは、オンデマンドインスタンス を起動するプロセスに似ています。リクエストを送信した後で、上限料金などのスポットリクエストのパラメータを変更することはできません。

一度に複数の スポットインスタンス をリクエストした場合、Amazon EC2 では個々の スポットインスタンス リクエストが作成され、各リクエストのステータスを個別に追跡できます。スポットリクエストの追跡については、「スポットリクエストステータス」を参照してください。

前提条件

開始する前に、上限価格、必要な スポットインスタンス の数、使用するインスタンスタイプを決定します。スポット料金の傾向を確認するには、「スポットインスタンス の価格設定履歴」を参照してください。

コンソールを使用して スポットインスタンス リクエストを作成するには

  1. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。

  2. ナビゲーションペインで、[Spot Requests] を選択します。

  3. スポットインスタンス を初めて使用する場合は、ウェルカムページが表示されるので、そこで [Get started] を選択します。それ以外の場合は、[スポットインスタンス のリクエスト] を選択します。

  4. [Request type] のデフォルトは [Request] です (スポット群 を使用して作成されたワンタイムスポットリクエストを指定します)。代わりにスポットブロックを使用するには、[Reserved duration] を選択して、完了するジョブの時間数を選択します。

    [Request and Maintain] の使用を希望する場合は、「スポット群 リクエストを作成する」を参照してください。

  5. [Target capacity] に、リクエストの単位数を入力します。アプリケーションのワークロードに重要なインスタンスまたはパフォーマンスのプロパティ (vCPU、メモリ、ストレージなど) を選択できます。

  6. [Requirements] で、以下を実行します

    1. [スポット群] (オプション) [Launch template] で、起動テンプレートを選択します。起動テンプレートでは Amazon Machine Image (AMI) を指定する必要があります。起動テンプレートを指定した場合、スポット群 を使用して AMI を上書きできないためです。

    2. [AMI] で、AWS に用意されている基本的な AMI のいずれかを選択するか、[Use custom AMI] を選択して独自の AMI を指定します。

    3. [Instance type(s)] で [Select] を選択します。必要最小限のハードウェア仕様 (vCPU、メモリ、ストレージ) でインスタンスタイプを選択します。

    4. [Network] の場合、アカウントでサポートされるのは EC2-Classic および EC2-VPC プラットフォーム、または EC2-VPC プラットフォームのみです。アカウントでサポートされるプラットフォームを調べるには、「サポートされているプラットフォーム」を参照してください。

      [既存の VPC] VPC を選択します。

      [新しい VPC] [新しい VPC の作成] を選択して Amazon VPC コンソールにアクセスします。完了したら、ウィザードに戻ってリストを更新します。

      [EC2-Classic] [EC2-Classic] を選択します。

    5. (オプション) [Availability Zones] には、デフォルトでは AWS により スポットインスタンス のアベイラビリティーゾーンが選択されます。希望する場合には、特定のアベイラビリティーゾーンを設定できます。

      [EC2-VPC] 1 つ以上のアベイラビリティーゾーンを選択します。アベイラビリティーゾーンに複数のサブネットがある場合、[Subnet] から適切なサブネットを選択します。サブネットを追加するには、[Create new subnet] を選択して Amazon VPC にアクセスします。完了したら、ウィザードに戻ってリストを更新します。

      [EC2-Classic] [特定のゾーン/サブネットを選択] を選択し、1 つ以上のアベイラビリティーゾーンを選択します。

    6. (オプション) ストレージを追加するには、インスタンスタイプに応じて追加のインスタンスストアボリュームまたは EBS ボリュームを指定します。さらに、EBS 最適化を有効にできます。

    7. (オプション) デフォルトでは、インスタンスに対して基本モニタリングが有効になります。詳細モニタリングを有効にするには、[CloudWatch 詳細モニタリングを有効化] を選択します。

    8. (オプション) ハードウェア専有 スポットインスタンス を実行するには、[テナンシー] で [専有 - ハードウェア専有インスタンスの実行] を選択します。

    9. [Security groups] で、1 つまたは複数のセキュリティグループを選択します。

    10. [EC2-VPC] VPC 内のインスタンスに接続するには、[Auto-assign IPv4 Public IP] を有効にすることができます。

    11. (オプション) インスタンスに接続するには、[Key pair name] でキーペアを指定します。

    12. (オプション) IAM ロールを指定して スポットインスタンス を起動するには、[IAM インスタンスプロファイル] でロールを指定します。

    13. (オプション) 起動スクリプトを実行するには、スクリプトを [User data] にコピーします。

    14. [スポット群] タグを追加するには、[Add new tag] を選択し、そのタグのキーと値を入力します。各タグについて、これを繰り返します。

  7. [Spot request fulfillment] で、以下を実行します。

    1. [スポット群] [Allocation strategy] で、お客様のニーズに合った戦略を選択します。詳細については、「スポット群 配分戦略」を参照してください。

    2. [スポット群] [Maximum price (上限価格)] では、デフォルトの上限料金 (オンデマンド料金) を使用するか、支払う予定の上限料金を指定することができます。上限価格が選択したインスタンスタイプのスポット料金より低い場合、スポットインスタンス は起動されません。

    3. (オプション) 特定の期間中のみ有効なリクエストを作成するには、[リクエスト有効期間の開始] および [リクエスト有効期間の終了] の値を編集します。

    4. [スポット群] デフォルトでは、リクエストの有効期限が切れると スポットインスタンス が終了されます。リクエストの有効期限が切れた後も実行し続ける場合、[Terminate instances at expiration] をオフにします。

  8. (オプション) ロードバランサーを使用する スポットインスタンス を登録するには、[ひとつまたは複数のロードバランサーからトラフィックを受信する] を選択して、1 つ以上の クラシックロードバランサー またはターゲットグループを選択します。

  9. (オプション) AWS CLI で使用される起動設定のコピーをダウンロードするには、[JSON config] を選択します。

  10. [Launch] を選択します。

    [スポット群] リクエストタイプは fleet です。リクエストが実行されると、タイプ instance のリクエストが追加されます。このとき、状態は active になり、ステータスは fulfilled になります。

    [スポットブロック] リクエストタイプは block で、初期状態は open です。リクエストが実行されると、状態は active になり、ステータスは fulfilled になります。

AWS CLI を使用して スポットインスタンス リクエストを作成するには

ワンタイムリクエストを作成するには、以下の request-spot-instances コマンドを使用します。

aws ec2 request-spot-instances --instance-count 5 --type "one-time" --launch-specification file://specification.json

永続リクエストを作成するには、以下の request-spot-instances を使用します。

aws ec2 request-spot-instances --instance-count 5 --type "persistent" --launch-specification file://specification.json

以下のコマンドで使用する起動仕様ファイルの例については、「スポットリクエストの起動仕様の例」を参照してください。コンソールから起動仕様ファイルをダウンロードする場合、request-spot-fleet コマンドを使用する必要があります (コンソールは、スポット群 を使用してスポットリクエストを指定します)。

上限料金がスポット料金を超え、容量が利用可能な場合、Amazon EC2 は スポットインスタンス を起動します。スポットインスタンス は中断されるか手動終了されるまで実行されます。スポットインスタンス のリクエストを監視するには、以下の describe-spot-instance-requests コマンドを使用します。

aws ec2 describe-spot-instance-requests --spot-instance-request-ids sir-08b93456

実行中の スポットインスタンス の検索

上限料金がスポット料金を超え、容量が利用可能な場合、Amazon EC2 は スポットインスタンス を起動します。スポットインスタンス は中断されるか手動終了されるまで実行されます。 (上限価格がスポット料金と厳密に等しい場合、需要に応じて、スポットインスタンス は実行されたままとなる可能性があります)。

コンソールを使用して実行中の スポットインスタンス を検索するには

  1. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。

  2. ナビゲーションペインで、[Spot Requests] を選択します。

    スポットインスタンス リクエストと スポット群 リクエストの両方を参照することができます。スポットインスタンス リクエストが実行された場合、[Capacity] は スポットインスタンス の ID です。スポット群 の場合、[Capacity] はリクエスト容量のうち受理された量を示しています。スポット群 のインスタンスの ID を表示するには、拡張矢印を選択するか、フリートを選択して [Instances] タブを選択します。

  3. または、ナビゲーションペインで [Instances] を選択します。右上隅にある [Show/Hide] アイコンを選択し、[Lifecycle] を選択します。各インスタンスの [Lifecycle] は、normalspot、または scheduled のいずれかです。

AWS CLI を使用して実行中の スポットインスタンス を検索するには

スポットインスタンス を一覧表示するには、以下のように --query オプションを指定して describe-spot-instance-requests コマンドを実行します。

aws ec2 describe-spot-instance-requests --query SpotInstanceRequests[*].{ID:InstanceId}

出力例を次に示します。

[ { "ID": "i-1234567890abcdef0" }, { "ID": "i-0598c7d356eba48d7" } ]

または、以下のように --filters オプションを指定して describe-instances コマンドを実行しても、スポットインスタンス を一覧表示できます。

aws ec2 describe-instances --filters "Name=instance-lifecycle,Values=spot"

スポットインスタンス リクエストのタグ付け

スポットインスタンス リクエストを分類および管理しやすくするため、任意のメタデータでタグ付けすることができます。詳細については、「Amazon EC2 リソースにタグを付ける」を参照してください。

タグは、作成後に スポットインスタンス リクエストに割り当てることができます。スポットインスタンス リクエストに作成するタグは、そのリクエストにのみ適用されます。これらのタグは、リクエストを受理するためにスポットサービスが起動する スポットインスタンス には自動的に追加されません。スポットインスタンス が起動された後、スポットインスタンス に自分でタグを追加する必要があります。

AWS CLI を使用して スポットインスタンス リクエストや スポットインスタンス にタグを追加するには

リソースにタグを追加するには、以下の create-tags コマンドを使用します。

aws ec2 create-tags --resources sir-08b93456 i-1234567890abcdef0 --tags Key=purpose,Value=test

スポットインスタンス のキャンセル

スポットリクエストが不要になった場合には、それをキャンセルすることができます。お客様は open または active 状態のスポットインスタンスリクエストのみキャンセルできます。リクエストがまだ受理されておらず、インスタンスが起動されていない場合、スポットリクエストは open 状態にあります。リクエストが受理され、結果として スポットインスタンス が起動された場合、スポットリクエストは active 状態にあります。スポットリクエストが active 状態にあり、そのスポットリクエストに関連付けられた実行中の スポットインスタンス がある場合、リクエストをキャンセルしてもインスタンスは終了しません。実行中の スポットインスタンス は手動で終了する必要があります。

スポットリクエストが永続スポットリクエストの場合、新しい スポットインスタンス が起動できるように、リクエストは open 状態に戻ります。永続スポットリクエストをキャンセルして、スポットインスタンス を終了するには、まずスポットリクエストをキャンセルしてから スポットインスタンス を終了する必要があります。そうしないと、スポットリクエストによって新しいインスタンスが起動される場合があります。

コンソールを使用して スポットインスタンス リクエストをキャンセルするには

  1. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。

  2. ナビゲーションペインで、[Spot Requests] を選択し、スポットリクエストを選択します。

  3. [Actions]、[Cancel spot request] の順に選択します。

  4. (オプション) 関連付けられたスポットインスタンスを使い終わったら、スポットインスタンス を終了できます。ナビゲーションペインで、[Instances] を選択し、インスタンスを選択した後で、[Actions]、[Instance State]、[Terminate] の順に選択します。

AWS CLI を使用して スポットインスタンス をキャンセルするには

指定したスポットリクエストをキャンセルするには、以下の cancel-spot-instance-requests コマンドを使用します。

aws ec2 cancel-spot-instance-requests --spot-instance-request-ids sir-08b93456

関連付けられている スポットインスタンス を終了する場合は、以下の terminate-instances コマンドを使用して、それらのインスタンスを手動で終了できます。

aws ec2 terminate-instances --instance-ids i-1234567890abcdef0 i-0598c7d356eba48d7