メニュー
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 では個々のスポットインスタンスリクエストが作成され、各リクエストのステータスを個別に追跡できます。スポットリクエストの追跡については、「スポット入札ステータス」を参照してください。

前提条件

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

To create a Spot instance request using the console

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

  2. On the navigation pane, choose Spot Requests.

  3. If you are new to Spot instances, you see a welcome page; choose Get started. Otherwise, choose Request Spot Instances.

  4. On the Find instance types page, do the following:

    1. For Request type, the default is a one-time Spot request created using a Spot fleet. For more information, see スポット群リクエスト. To use Spot blocks instead, select Reserve for duration.

    2. For Target capacity, enter the number of units to request. You can choose instances or performance characteristics that are important to your application workload, such as vCPUs, memory, and storage.

    3. [Spot block] For Reserved duration, select the number of hours for the job to complete.

    4. For AMI, choose one of the basic Amazon Machine Images (AMI) provided by AWS, or choose Use custom AMI to specify your own AMI.

    5. For Instance type(s), choose Select. Select the instance types that have the minimum hardware specifications that you need (vCPUs, memory, and storage).

    6. [Spot fleet] For Allocation strategy, choose the strategy that meets your needs. For more information, see スポットのフリートの配分戦略.

    7. For Network, your account supports either the EC2-Classic and EC2-VPC platforms, or the EC2-VPC platform only. To find out which platforms your account supports, see サポートされているプラットフォーム.

      • [Existing VPC] Select the VPC.

      • [New VPC] Select Create new VPC to go the Amazon VPC console. When you are done, return to the wizard and refresh the list.

      • [EC2-Classic] Select EC2-Classic.

    8. (Optional) For Availability Zones, the default is to let AWS choose the Availability Zones for your Spot instances. If you prefer specific Availability Zones, do the following:

      • [EC2-VPC] Select one or more Availability Zones. If you have more than one subnet in an Availability Zone, select the appropriate subnet from Subnet. To add subnets, select Create new subnet to go to the Amazon VPC console. When you are done, return to the wizard and refresh the list.

      • [EC2-Classic] Select Select specific zone/subnet, and then select one or more Availability Zones.

    9. [Spot fleet] For Maximum price, you can use automated bidding or specify a bid price. Your Spot instances are not launched if your bid price is lower than the Spot price for the instance types that you selected.

    10. Choose Next.

  5. On the Configure page, do the following:

    1. (Optional) If you need additional storage, you can specify instance store volumes or EBS volumes, depending on the instance type.

    2. (Optional) If you need to run a Dedicated Spot instance, choose Dedicated for Tenancy.

    3. (Optional) If you need to connect to your instances, specify your key pair using Key pair name.

    4. (Optional) If you need to launch your Spot instances with an IAM role, specify the role using IAM instance profile.

    5. (Optional) If you have any start-up scripts to run, specify them using User data.

    6. For Security groups, choose one or more security groups.

    7. [EC2-VPC] If you need to connect to your instances in a VPC, you can enable Auto-assign Public IP.

    8. By default, the request remains in effect until it is fulfilled or you cancel it. To create a request that is valid only during a specific time period, edit Request valid from and Request valid to.

    9. [Spot fleet] By default, we terminate your Spot instances when the request expires. To keep them running after your request expires, clear Terminate instances at expiration.

    10. Choose Review.

  6. On the Review page, verify the launch configuration. To make changes, choose Previous. To download a copy of the launch configuration for use with the AWS CLI, choose JSON config. When you are ready, choose Launch.

  7. On the confirmation page, choose OK.

    [Spot fleet] The request type is fleet. When the request is fulfilled, requests of type instance are added, where the state is active and the status is fulfilled.

    [Spot block] The request type is block and the initial state is open. When the request is fulfilled, the state is active and the status is 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

起動仕様ファイルの例については、「スポットリクエストの起動仕様の例」を参照してください。

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

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

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

Amazon EC2 は、スポット料金が入札価格を下回る場合、スポットインスタンスを起動します。 スポットインスタンスは、その入札価格がスポット料金を上回ることができなくなるまで、またはお客様がご自分でスポットインスタンスを終了するまで実行されます (入札価格がスポット料金と厳密に等しい場合、需要に応じて、スポットインスタンスは実行されたままとなる可能性があります)。

To find running Spot instances using the console

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

  2. In the navigation pane, choose Spot Requests.

    You can see both Spot instance requests and Spot fleet requests. If a Spot instance request has been fulfilled, Capacity is the ID of the Spot instance. For a Spot fleet, Capacity indicates how much of the requested capacity has been fulfilled. To view the IDs of the instances in a Spot fleet, choose the expand arrow, or select the fleet and then select the Instances tab.

  3. Alternatively, in the navigation pane, choose Instances. In the top right corner, choose the Show/Hide icon, and then select Lifecycle. For each instance, Lifecycle is either normal, spot, or 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 リソースにタグ付けするのと同じ方法で行います。詳細については、「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 状態に戻ります。永続スポットリクエストをキャンセルして、スポットインスタンスを終了するには、最初にスポットリクエストをキャンセルし、次にスポットインスタンスを終了する必要があります。そうしないと、スポットリクエストによって新しいインスタンスが起動される場合があります。

To cancel a Spot instance request using the console

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

  2. In the navigation pane, choose Spot Requests, and then select the Spot request.

  3. Choose Actions, and then choose Cancel spot request.

  4. (Optional) If you are finished with the associated Spot instances, you can terminate them. In the navigation pane, choose Instances, select the instance, choose Actions, choose Instance State, and then choose 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