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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

永続スポットインスタンスリクエストは、リクエストが受理されても、リクエストの有効期限が切れるか、お客様がリクエストをキャンセルするまでアクティブ状態です。たとえば、スポット料金が 0.25 USD のときに 1 つのインスタンスに対して永続スポットインスタンスリクエストを作成したとします。お客様の入札価格が 0.25 USD を上回る場合は、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 時間のスポットインスタンスを起動するスポットリクエストが作成されます。

Copy
aws ec2 request-spot-instances --spot-price "0.050" --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 のテナントでスポットインスタンスをリクエストすることができないことに注意してください。

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

現行世代

  • c3.8xlarge

  • c4.8xlarge

  • d2.8xlarge

  • g2.8xlarge

  • i2.8xlarge

  • m4.10xlarge

  • m4.16xlarge

  • p2.16xlarge

  • r3.8xlarge

  • r4.16xlarge

  • x1.32xlarge

前の世代

  • cc2.8xlarge

  • cg1.4xlarge

  • cr1.8xlarge

  • hi1.4xlarge

スポットインスタンスリクエストの作成

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

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

前提条件

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

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

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

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

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

  4. [Find instance types] ページで、以下の操作を実行します。

    1. [Request type] のデフォルトは [Request] です (スポットフリートを使用して作成されたワンタイムスポットリクエストを指定します)。代わりにスポットブロックを使用するには、[Reserve for duration] を選択します。

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

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

    3. [スポットブロック] [Reserved duration] では、完了するジョブの時間数を選択します。

    4. [AMI] で、AWS によって提供される基本的な Amazon マシンイメージ (AMI) のいずれかを選択するか、[Use custom AMI] を選択して独自の AMI を指定します。

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

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

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

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

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

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

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

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

      [EC2-Classic] [Select specific zone/subnet] を選択し、1 つ以上のアベイラビリティーゾーンを選択します。

    9. [スポットフリート] [Maximum price] では、自動入札を使用するか、入札価格を指定できます。入札価格が、選択したインスタンスタイプのスポット料金より低い場合、スポットインスタンスは起動されません。

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

  5. [Configure] ページで以下の操作を実行します。

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

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

    3. (オプション) ハードウェア専有スポットインスタンスを実行するには、[Tenancy] の [Dedicated - run a dedicated instance] を選択します。

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

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

    6. (オプション) インスタンスに接続する必要がある場合は、[Key pair name] を使用してキーペアを指定します。

    7. (オプション) IAM ロールを指定してスポットインスタンスを起動するには、[IAM instance profile] を使用してそのロールを指定します。

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

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

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

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

    12. [Review] を選択します。

  6. [Review] ページで、起動設定を確認します。設定を変更するには、[Previous] を選択します。AWS CLI で使用される起動設定のコピーをダウンロードするには、[JSON config] を選択します。準備ができたら、[Launch] を選択します。

  7. 確認ページで、[OK] を選択します。

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

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

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

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

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

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

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

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

Amazon EC2 では、スポット料金が入札価格を下回っていると、スポットインスタンスが起動されます。スポットインスタンスは中断されるか手動終了されるまで実行されます。スポットインスタンスのリクエストを監視するには、以下の describe-spot-instance-requests コマンドを使用します。

Copy
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 コマンドを実行します。

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

出力例を次に示します。

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

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

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

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

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

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

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

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

Copy
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 コマンドを使用します。

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

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

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