スポットインスタンスリクエスト - Amazon Elastic Compute Cloud

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

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

次の図にスポットインスタンスリクエストが動作する様子を示します。Amazon EC2がスポットインスタンスを中断した場合、あるいはユーザーがスポットインスタンスを停止した場合に、リクエストが再度開かれるかどうかは、リクエストタイプ (ワンタイムまたは永続) によって決定されることに注意してください 。リクエストが永続リクエストの場合、スポットインスタンスの中断後、リクエストが再度開かれます。リクエストが永続的で、スポットインスタンスがユーザーにより停止された場合、リクエストはスポットインスタンスが開始されるまでは開かれません。


				スポットインスタンスリクエストの仕組み

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

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

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

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

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

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

  • disabled – スポットインスタンスがユーザーにより停止されました。

  • cancelled – このリクエストはユーザーによりキャンセルされたか、リクエストの有効期限が切れました。

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


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

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

永続スポットインスタンスリクエストは、リクエストが受理された後も、リクエストの有効期限が切れるかユーザーによりキャンセルされるまで、アクティブ状態を維持します。スポット料金が上限価格を上回った場合、または利用できる容量がなくなった場合には、スポットインスタンスは中断されます。インスタンスが中断された後にスポット料金が上限価格以下になるか、容量が再び利用可能になると、スポットインスタンスが開始 (停止している場合)、あるいは再開 (休止状態の場合)されます。キャパシティーが利用可能で、上限価格が現在のスポット料金より高い場合は、停止したスポットインスタンスを再起動できます。スポットインスタンスが (停止状態にあるか実行状態にあるかに関係なく) 終了した場合には、スポットインスタンスリクエストが再び開かれ、Amazon EC2 により新しいスポットインスタンスが起動されます。詳細については、「スポットインスタンスを停止する」、「スポットインスタンスを開始する」、および「スポットインスタンスを終了する」を参照してください。

スポットインスタンスリクエストの状態と、起動済みのスポットインスタンスのステータスを追跡することができます。詳細については、「スポットリクエストステータス」を参照してください。

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

期間が定義されたスポットインスタンス (スポットブロックとも呼ばれます) は、2021 年 7 月 1 日以降の新規のお客様は、ご利用いただけません。既に、期間が指定されたスポットインスタンスを使用した経験をお持ちのお客様については、2022 年 12 月 31 日まで、この機能を引き続きサポートいたします。

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

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

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

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

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

T インスタンスを除くすべてのインスタンスファミリーが、Dedicated スポットインスタンス をサポートしています。対象となるインスタンスファミリーにおいて、最大のインスタンスサイズまたはメタルサイズのみが、Dedicated スポットインスタンス をサポートします。

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

Amazon EC2 は、ユーザーに代わって AWS の他のサービスを呼び出すために必要なアクセス許可のために、サービスにリンクされたロールを使用します。サービスにリンクされたロールは、AWS のサービスに直接リンクされた一意のタイプの IAM ロールです。サービスにリンクされたロールは、AWS のサービスにアクセス許可を委任するためのセキュアな方法を提供します。これは、リンクされたサービスのみが、サービスにリンクされたロールを引き受けることができるためです。詳細については、IAM ユーザーガイドの「サービスにリンクされたロールの使用」を参照してください。

Amazon EC2 は、AWSServiceRoleForEC2Spot という、サービスにリンクされたロールを使用して、ユーザーの代わりに スポットインスタンス を起動して管理します。

AWSServiceRoleForEC2Spot によって付与されるアクセス許可

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

  • ec2:DescribeInstances – スポットインスタンスの記述

  • ec2:StopInstances – スポットインスタンスの停止

  • ec2:StartInstances – スポットインスタンスの開始

サービスにリンクされたロールの作成

ほとんどの状況では、サービスにリンクされたロールを手動で作成する必要はありません。Amazon EC2 は、ユーザーがコンソールを使用して初めてスポットインスタンスをリクエストした際に、サービスにリンクされたロール AWSServiceRoleForEC2Spot を作成します。

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

AWS CLI または API を使用してスポットインスタンスをリクエストするには、まずこのロールが存在していることを確認する必要があります。

コンソールを使用して AWSServiceRoleForEC2Spot を作成するには

  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. ナビゲーションペインで [Roles (ロール) ] を選択します。

  3. [ロールの作成] を選択します。

  4. [Select type of trusted entity (信頼されたエンティティのタイプを選択)] ページで、[EC2]、[EC2 - Spot Instances (EC2 - スポットインスタンス)]、[Next: Permissions (次の手順: アクセス許可)] の順に選択します。

  5. 次のページで、[次へ: 確認] を選択します。

  6. [確認] ページで、[ロールの作成] を選択します。

AWS CLI を使用して AWSServiceRoleForEC2Spot を作成するには

次のように、create-service-linked-role コマンドを使用します。

aws iam create-service-linked-role --aws-service-name spot.amazonaws.com

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

暗号化された AMI および EBS スナップショット用のカスタマーマネージド型キーへのアクセス権限の付与

スポットインスタンス のために暗号化された AMI または暗号化された Amazon EBS スナップショットを指定しており、カスタマーマネージド型キーを暗号化に使用する場合は、Amazon EC2 がユーザーに代わってスポットインスタンスを起動できるようにするために、カスタマーマネージド型キーを使用する許可を AWSServiceRoleForEC2Spot ロールにより付与する必要があります。これを行うには、次の手順で示すように、カスタマーマネージド型キーに対し付与を追加する必要があります。

アクセス権限を設定するときは、付与がキーポリシーの代わりになります。詳細については、AWS Key Management Service デベロッパーガイドの「付与の使用」と「AWS KMS でのキーポリシーの使用」を参照してください。

カスタマーマネージド型キーを使用するために AWSServiceRoleForEC2Spot ロールによるアクセス許可を付与するには

  • create-grant コマンドを使用してカスタマーマネージド型キーに付与を追加し、プリンシパル (サービスにリンクされたロールの AWSServiceRoleForEC2Spot) を指定します。このプリンシパルには、付与が許可するオペレーションを実行するためのアクセス許可が含まれています。カスタマーマネージド型キーは、key-id パラメータと、そのカスタマーマネージド型キーの ARN により指定します。プリンシパルを指定するには、grantee-principal パラメータとサービスにリンクされたロール AWSServiceRoleForEC2Spot の ARN を使用します。

    aws kms create-grant \ --region us-east-1 \ --key-id arn:aws:kms:us-east-1:444455556666:key/1234abcd-12ab-34cd-56ef-1234567890ab \ --grantee-principal arn:aws:iam::111122223333:role/AWSServiceRoleForEC2Spot \ --operations "Decrypt" "Encrypt" "GenerateDataKey" "GenerateDataKeyWithoutPlaintext" "CreateGrant" "DescribeKey" "ReEncryptFrom" "ReEncryptTo"

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

スポットインスタンスをリクエストする手順は、オンデマンドインスタンスを起動する手順と類似しています。スポットインスタンスは、以下に示す方法でリクエストできます。

スポットインスタンスリクエストを送信した後は、そのリクエストのパラメータを変更することはできません。つまり、支払う上限価格を変更することはできなくなります。

一度に複数のスポットインスタンスをリクエストした場合、 Amazon EC2 により個別のスポットインスタンスに対するリクエストが作成されるので、各リクエストのステータスを単独で追跡することが可能です。スポットインスタンスリクエストの追跡については、「スポットリクエストステータス」を参照してください。

スポットインスタンス と オンデマンドインスタンス を含むフリートを起動するには、「スポットフリートリクエストを作成します。」を参照してください。

注記

インスタンス起動ウィザードまたは run-instances コマンドを使用して、スポットインスタンスとオンデマンドインスタンスを同じ呼び出しで起動することはできません。

Prerequisites

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

スポットインスタンスリクエストを作成するには(コンソール)

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

  2. 画面上部のナビゲーションバーで、リージョンを選択します。

  3. Amazon EC2 コンソールダッシュボードで、[Launch Instance] を選択します。

  4. [Amazon マシンイメージ (AMI)] ページで、AMI を選択します。詳細については、「ステップ 1: Amazon Machine Image (AMI) を選択する」を参照してください。

  5. [インスタンスタイプの選択] ページで、起動するインスタンスのハードウェア設定とサイズを選択し、[次の手順: インスタンスの詳細の設定] をクリックします。詳細については、「ステップ 2: インスタンスタイプを選択する」を参照してください。

  6. [インスタンスの詳細の設定] ページで、スポットインスタンスリクエストを次のように設定します。

    • [Number of instances]: 起動するインスタンスの数を入力します。

      注記

      Amazon EC2 が、スポットインスタンスごとに個別のリクエストを作成します。

    • (オプション) アプリケーションで需要を処理するためにインスタンスの正しい数を確実に維持するには、[Launch into Auto Scaling Group (Auto Scaling グループに作成する)] を選択して起動設定と Auto Scaling グループを作成します。Auto Scaling によって、指定どおりにグループのインスタンス数がスケーリングされます。詳細については、「Amazon EC2 Auto Scaling ユーザーガイド」を参照してください。

    • [購入のオプション]: [スポットインスタンスのリクエスト] を選択してスポットインスタンスを起動します。このオプションを選択すると、次のフィールドが表示されます。

    • 現在の価格: 選択したインスタンスタイプについて、各アベイラビリティーゾーンの現在のスポット料金が表示されます。

    • (オプション) 最高料金: このフィールドは空のままにするか、支払う上限額を指定できます。

      • このフィールドを空のままにすると、最高料金は現在のオンデマンド料金にデフォルト設定されます。スポットインスタンスは、オンデマンド料金を超えない、現在のスポット料金で起動します。

      • 現在のスポット料金より高い上限価格を指定した場合は、スポットインスタンスは現在のスポット料金で起動し課金されます。

      • スポット料金よりも低い上限価格を指定している場合は、スポットインスタンスは起動されません。

    • [永続リクエスト]: スポットインスタンスが中断された場合に、スポットインスタンスリクエストを再送信するには、永続リクエストを選択します。

    • [中断動作]: デフォルトでは、スポットサービスは中断されたスポットインスタンスを終了します。永続リクエストを選択している場合は、中断されたスポットインスタンスをスポットサービスが停止するか休止するかを指定できます。詳細については、「中断動作」を参照してください。

    • (オプション) リクエスト有効期間: スポットインスタンスリクエストの有効期限を指定するには、[編集] を選択します。

    スポットインスタンスの設定の詳細については、「ステップ 3: インスタンスの詳細を設定する」を参照してください。

  7. 選択した AMI には、ルートデバイスボリュームを含む、1 つまたは複数のストレージボリュームが含まれます。[Add Storage] ページで、[Add New Volume] を選択することにより、インスタンスにアタッチする追加ボリュームを指定できます。詳細については、「ステップ 4: ストレージを追加する」を参照してください。

  8. [Add Tags] ページで、キーと値の組み合わせをタグとして指定します。詳細については、「ステップ 5: タグの追加」を参照してください。

  9. [Configure Security Group] ページで、セキュリティグループを使用してインスタンスのファイアウォールルールを定義します このルールでは、どの着信ネットワークトラフィックをインスタンスに配信するかを指定します。他のトラフィックはすべて無視されます。(セキュリティグループの詳細については、「Linux インスタンス用の Amazon EC2 セキュリティグループ」を参照してください)。セキュリティグループを選択または作成して、[確認して起動] をクリックします。詳細については、「ステップ 6: セキュリティグループを設定する」を参照してください。

  10. [Review Instance Launch] ページで、インスタンスの詳細をチェックし、適切な [Edit] リンクを選択して必要な変更を加えます。準備ができたら、[Launch] を選択します。詳細については、「ステップ 7: インスタンスの起動を確認し、キーペアを選択する」を参照してください。

  11. [Select an existing key pair or create a new key pair] ダイアログボックスで、既存のキーペアを選択するか、新しいキーペアを作成できます。例えば、[既存のキーペアの選択] をクリックし、セットアップ中に作成したキーペアを選択します。詳細については、「Amazon EC2 のキーペアと Linux インスタンス」を参照してください。

    重要

    [Proceed without key pair] オプションを選択した場合、ユーザーが別の方法でログインすることを許可するように設定された AMI を選択した場合でなければ、インスタンスに接続できなくなります。

  12. インスタンスを起動するには、確認のチェックボックスをオンにし、続いて [Launch Instances] を選択します。

    インスタンスが起動しないか、状態が terminated ではなくすぐに running になる場合は、「インスタンスの起動に関する問題のトラブルシューティング」を参照してください。

request-spot-instances を使用してスポットインスタンスリクエストを作成するには(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 コマンドを使用する必要があります (コンソールでは、スポットフリートを使用するスポットインスタンスリクエストを指定します)。

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

run-instances コマンドを使用し、--instance-market-options パラメータでスポットインスタンスのオプションを指定します。

aws ec2 run-instances \ --image-id ami-0abcdef1234567890 \ --instance-type t2.micro \ --count 5 \ --subnet-id subnet-08fc749671b2d077c \ --key-name MyKeyPair \ --security-group-ids sg-0b0384b66d7d692f9 \ --instance-market-options file://spot-options.json

--instance-market-options で JSON ファイルに指定するデータ構造は次のとおりです。ValidUntil、および InstanceInterruptionBehavior、を指定することもできます。データ構造でフィールドを指定しないと、デフォルト値が使用されます。この例では、one-time リクエストを作成し、スポットインスタンスに支払う上限価格として 0.02 を指定します。

{ "MarketType": "spot", "SpotOptions": { "MaxPrice": "0.02", "SpotInstanceType": "one-time" } }

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

上限価格がスポット料金より高く、容量が利用可能な場合、Amazon EC2 はスポットインスタンスを起動します。スポットインスタンスは中断されるか、ユーザーにより終了されるまで実行されます。上限価格がスポット料金と厳密に等しい場合、需要に応じて、スポットインスタンスの実行が継続する可能性があります。

実行中の スポットインスタンス を検索するには (コンソール)

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

  2. ナビゲーションペインで、[Spot Requests] を選択します。スポットインスタンスリクエストとスポットフリートリクエストの両方を表示できます。スポットインスタンスリクエストが受理された場合、[容量] がスポットインスタンスの ID となります。スポットフリートの場合、[容量] はリクエストされた容量のうち受理された量を示します。スポットフリートのインスタンスの ID を表示するには、拡張矢印を選択するか、フリートを選択した上で [インスタンス] を選択します。

    注記

    スポットフリートによって作成されたスポットインスタンスリクエストの場合、そのリクエストが属するスポットフリートを示すシステムタグはリクエストに即座にタグ付けされません。また、一定期間、スポットフリートリクエストとは別に表示されることがあります。

    または、ナビゲーションペインで [Instances] を選択します。右上隅にある設定アイコン ( ) を選択し、[Attribute (属性)] 列で [Instance lifecycle (インスタンスライフサイクル)] を選択します。各インスタンスの [Instance 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"

単一のスポットインスタンスを表示するには、--spot-instance-request-ids オプションを指定しながら describe-spot-instance-requests コマンドを使用します。

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

スポットインスタンスリクエストをタグ付けする

スポットインスタンスリクエストを分類および管理しやすくするため、カスタムメタデータでタグ付けすることができます。タグは、スポットインスタンスリクエストの作成時、またはその後に割り当てることができます。Amazon EC2 コンソールまたはコマンドラインツールを使用してタグを割り当てることができます。

スポットインスタンスリクエストにタグ付けを行っても、そのスポットインスタンスリクエストによって起動されたインスタンスやボリュームには、自動的なタグ付けは行われません。スポットインスタンスリクエストによって起動されたインスタンスやボリュームには、明示的にタグを付ける必要があります。スポットインスタンスおよびボリュームへのタグの割り当ては、起動時または起動後に行うことができます。

タグの仕組みの詳細については、「Amazon EC2 リソースのタグ付け」を参照してください。

Prerequisites

リソースにタグ付けするアクセス許可を IAM ユーザーに付与します。IAM ポリシーとサンプルポリシーの詳細については、「例: リソースのタグ付け」を参照してください。

作成する IAM ポリシーは、スポットインスタンスリクエストの作成に使用する方法によって決まります。

インスタンス起動ウィザードまたは run-instances を使用する場合にリソースにタグを付けるためのアクセス許可を IAM ユーザーに付与するには

以下を含む IAM ポリシーを作成します。

  • ec2:RunInstances アクション。これにより、インスタンスを起動するためのアクセス許可が IAM ユーザーに付与されます。

  • Resource で、spot-instances-request を指定します。これによりユーザーは、スポットインスタンスを要求するためのスポットインスタンスリクエストを作成できるようになります。

  • ec2:CreateTags アクション。これにより、タグを作成するアクセス許可が IAM ユーザーに付与されます。

  • Resource で、* を指定します。これにより、ユーザーはインスタンスの起動時に作成されるすべてのリソースにタグを付けることを許可されます。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowLaunchInstances", "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:us-east-1::image/*", "arn:aws:ec2:us-east-1:*:subnet/*", "arn:aws:ec2:us-east-1:*:network-interface/*", "arn:aws:ec2:us-east-1:*:security-group/*", "arn:aws:ec2:us-east-1:*:key-pair/*", "arn:aws:ec2:us-east-1:*:volume/*", "arn:aws:ec2:us-east-1:*:instance/*", "arn:aws:ec2:us-east-1:*:spot-instances-request/*" ] }, { "Sid": "TagSpotInstanceRequests", "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "*" } ] }
注記

RunInstances アクションを使用してスポットインスタンスリクエストを作成し、その際、リクエストにタグを付ける場合には、Amazon EC2 が RunInstances ステートメント内で spot-instances-request リソースをどのように評価するのかについて、注意を払う必要があります。

spot-instances-request リソースは、IAM ポリシーで次のように評価されます。

  • スポットインスタンスリクエストの作成時にタグを付けない場合、Amazon EC2 は RunInstances ステートメント内の spot-instances-request リソースを評価しません。

  • スポットインスタンスリクエストの作成時にタグを付けると、 RunInstances ステートメント内の spot-instances-request リソースが、Amazon EC2 により評価されます。

したがって、spot-instances-request リソースの場合、次のルールが IAM ポリシーに適用されます。

  • RunInstances を使用してスポットインスタンスリクエストを作成し、その際リクエストにタグを付けない場合は、spot-instances-request リソースを明示的に許可しなくても、その呼び出しは成功します。

  • RunInstances を使用してスポットインスタンスリクエストを作成する際に、そのリクエストにタグを付ける場合には、RunInstances の許可ステートメントに spot-instances-request リソースを含める必要があります。これがない場合は呼び出しが失敗します。

  • RunInstances を使用してスポットインスタンスリクエストを作成する際に、そのリクエストにタグを付ける場合は、許可ステートメント CreateTags で spot-instances-request リソースを指定するか、そこに * ワイルドカードを含める必要があります。これがない場合は呼び出しが失敗します。

IAM ポリシー (スポットインスタンスリクエストでサポートされていないポリシーを含む) の例については、「スポットインスタンス の操作」を参照してください。

request-spot-instances を使用する場合でリソースにタグを付けるためのアクセス許可を IAM ユーザーに付与するには

以下を含む IAM ポリシーを作成します。

  • ec2:RequestSpotInstances アクション。これにより、スポットインスタンスリクエストを作成するアクセス許可が IAM ユーザーに付与されます。

  • ec2:CreateTags アクション。これにより、タグを作成するアクセス許可が IAM ユーザーに付与されます。

  • Resource で、spot-instances-request を指定します。これにより、ユーザーはスポットインスタンスリクエストにのみタグを付けることが許可されます。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "TagSpotInstanceRequest", "Effect": "Allow", "Action": [ "ec2:RequestSpotInstances", "ec2:CreateTags" ], "Resource": "arn:aws:ec2:us-east-1:111122223333:spot-instances-request/*" }

新しいスポットインスタンスリクエストにタグを付ける

コンソールを使用して新しいスポットインスタンスリクエストにタグ付けするには

  1. スポットインスタンスリクエストを作成する」の手順に従います。

  2. タグを追加するには、[タグの追加] ページで [タグの追加] をクリックし、タグのキーと値を入力します。追加するタグごとに [別のタグを追加] をクリックします。

    1 つのタグを、スポットインスタンスリクエスト、スポットインスタンス、およびボリュームに対し同時にタグ付けすることができます。3 つすべてにタグを付けるには、[インスタンス]、[ボリューム]、[スポットインスタンスリクエスト] をそれぞれ選択します。1 つまたは 2 つにのみタグを付けるには、タグを付けるリソースを選択し、他のリソースを選択していないことを確認します。

  3. 必須フィールドにすべて入力してスポットインスタンスリクエストを作成した後、[起動] を選択します。詳細については、「スポットインスタンスリクエストを作成する」を参照してください。

AWS CLI を使用して新しいスポットインスタンスリクエストにタグ付けするには

スポットインスタンスリクエストの作成時にタグ付けするには、以下のようにスポットインスタンスリクエストを設定します。

  • --tag-specification パラメータを使用してスポットインスタンスリクエストのタグを指定します。

  • ResourceType で、spot-instances-request を指定します。別の値を指定すると、スポットインスタンスリクエストは失敗します。

  • Tags で、キーと値のペアを指定します。キーと値のペアは複数指定できます。

以下の例では、スポットインスタンスリクエストには 2 つのタグ (Environment キーと Production 値、ならびに Cost-Center キーと 123 値) が付けられています。

aws ec2 request-spot-instances \ --instance-count 5 \ --type "one-time" \ --launch-specification file://specification.json \ --tag-specification 'ResourceType=spot-instances-request,Tags=[{Key=Environment,Value=Production},{Key=Cost-Center,Value=123}]'

既存のスポットインスタンスリクエストにタグ付けをする

コンソールを使用して既存のスポットインスタンスリクエストにタグ付けするには

スポットインスタンスリクエストの作成後に、コンソールを使用してそのリクエストにタグを追加できます。

  1. スポットコンソール (https://console.aws.amazon.com/ec2spot) を開きます。

  2. スポットインスタンスリクエストを選択します。

  3. [Tags (タグ)] タブを選択してから、[タグの作成] を選択します。

コンソールを使用して既存のスポットインスタンスにタグを付けるには

スポットインスタンスリクエストによってスポットインスタンスを起動した後で、コンソールを使用して、そのインスタンスにタグを追加できます。詳細については、「個々のリソースのタグの追加および削除」を参照してください。

AWS CLI を使用して、既存のスポットインスタンスリクエストまたはスポットインスタンスにタグを付けるには

create-tags コマンドを使用して、既存のリソースにタグを付けます。次の例では、既存のスポットインスタンスリクエストとスポットインスタンスに、purpose キーと test 値のタグを付けています。

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

スポットインスタンスリクエストのタグを表示する

コンソールを使用してスポットインスタンスリクエストのタグを表示するには

  1. スポットコンソール (https://console.aws.amazon.com/ec2spot) を開きます。

  2. スポットインスタンスリクエストを選択してから、[タグ] タブを選択します。

スポットインスタンスリクエストのタグを詳細表示するには

describe-tags コマンドを使用して、指定したリソースのタグを表示します。以下の例では、指定した リクエストのタグの情報を取得します。

aws ec2 describe-tags \ --filters "Name=resource-id,Values=sir-11112222-3333-4444-5555-66666EXAMPLE"
{ "Tags": [ { "Key": "Environment", "ResourceId": "sir-11112222-3333-4444-5555-66666EXAMPLE", "ResourceType": "spot-instances-request", "Value": "Production" }, { "Key": "Another key", "ResourceId": "sir-11112222-3333-4444-5555-66666EXAMPLE", "ResourceType": "spot-instances-request", "Value": "Another value" } ] }

スポットインスタンスリクエストを詳細表示すると、そのスポットインスタンスリクエストのタグを確認することができます。

describe-spot-instance-requests コマンドを使用して、指定したスポットインスタンスリクエストの設定を表示します。この内容には、リクエストに指定されたタグがすべて含まれます。

aws ec2 describe-spot-instance-requests \ --spot-instance-request-ids sir-11112222-3333-4444-5555-66666EXAMPLE
{ "SpotInstanceRequests": [ { "CreateTime": "2020-06-24T14:22:11+00:00", "InstanceId": "i-1234567890EXAMPLE", "LaunchSpecification": { "SecurityGroups": [ { "GroupName": "launch-wizard-6", "GroupId": "sg-1234567890EXAMPLE" } ], "BlockDeviceMappings": [ { "DeviceName": "/dev/xvda", "Ebs": { "DeleteOnTermination": true, "VolumeSize": 8, "VolumeType": "gp2" } } ], "ImageId": "ami-1234567890EXAMPLE", "InstanceType": "t2.micro", "KeyName": "my-key-pair", "NetworkInterfaces": [ { "DeleteOnTermination": true, "DeviceIndex": 0, "SubnetId": "subnet-11122233" } ], "Placement": { "AvailabilityZone": "eu-west-1c", "Tenancy": "default" }, "Monitoring": { "Enabled": false } }, "LaunchedAvailabilityZone": "eu-west-1c", "ProductDescription": "Linux/UNIX", "SpotInstanceRequestId": "sir-1234567890EXAMPLE", "SpotPrice": "0.012600", "State": "active", "Status": { "Code": "fulfilled", "Message": "Your spot request is fulfilled.", "UpdateTime": "2020-06-25T18:30:21+00:00" }, "Tags": [ { "Key": "Environment", "Value": "Production" }, { "Key": "Another key", "Value": "Another value" } ], "Type": "one-time", "InstanceInterruptionBehavior": "terminate" } ] }

スポットインスタンスリクエストをキャンセルする

スポットインスタンスリクエストが不要になった場合には、それをキャンセルすることができます。openactive、または disabled のスポットインスタンスリクエストのみキャンセルできます。

  • スポットインスタンスリクエストがまだ受理されておらず、インスタンスが起動されていない段階では、そのリクエストは open 状態にあります。

  • スポットインスタンスリクエストが受理され、スポットインスタンスの起動が完了している場合、そのスポットインスタンスリクエストは active 状態になります。

  • ユーザーがスポットインスタンスを停止した場合、スポットインスタンスリクエストは disabled 状態になります。

スポットインスタンスリクエストの状態が active で、関連付けられたスポットインスタンスが実行されている場合、そのリクエストをキャンセルしても、関連するインスタンスは終了しません。スポットインスタンスの終了の詳細については、「スポットインスタンスを終了する」を参照してください。。

スポットインスタンスリクエストをキャンセルするには (コンソール)

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

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

  3. [アクション]、[リクエストのキャンセル] の順にクリックします。

  4. (オプション) 関連付けられたスポットインスタンスを使い終わったら、スポットインスタンス を終了できます。[スポットリクエストのキャンセル] ダイアログボックスで、[インスタンスの終了]、[確認] の順にクリックします。

スポットインスタンスリクエストをキャンセルするには (AWS CLI)

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

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

スポットインスタンスを停止する

今すぐスポットインスタンスは必要ないが、Amazon EBS ボリューム内に保持されているデータを失わずに後で再起動する必要がある場合は、それらを停止できます。スポットインスタンスを停止する手順は、オンデマンドインスタンスを停止する手順と似ています。

注記

スポットインスタンスが停止している間、そのインスタンスの属性の一部は変更可能ですが、インスタンスタイプを変更することはできません。

停止しているスポットインスタンスの使用料またはデータ転送料は課金されませんが、Amazon EBS ボリュームのストレージに対しては課金されます。

Limitations

  • スポットインスタンスを停止できるのは、そのインスタンスが、persistent なスポットインスタンスリクエストから起動された場合だけです。

  • 関連するスポットインスタンスリクエストがキャンセルされている場合は、スポットインスタンス を停止することはできません。スポットインスタンスリクエストがキャンセルされた場合は、スポットインスタンスを終了することのみ可能です。

  • フリート、起動グループ、またはアベイラビリティーゾーングループの一部であるスポットインスタンスは停止できません。

New console

スポットインスタンスを停止するには (コンソール)

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

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

  3. [Instance state (インスタンスの状態)]、[Stop instance (インスタンスの停止)] の順に選択します。

  4. 確認を求められたら、[Stop] を選択します。

Old console

スポットインスタンスを停止するには (コンソール)

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

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

  3. [Actions]、[Instance State]、[Stop] の順に選択します。

AWS CLI

スポットインスタンスを停止するには(AWS CLI)

  • 1 つまたは複数のスポットインスタンスを手動で停止するには、stop-instances コマンドを使用します。

    aws ec2 stop-instances --instance-ids i-1234567890abcdef0

スポットインスタンスを開始する

以前に停止したスポットインスタンスは開始することができます。スポットインスタンスを開始する手順は、オンデマンドインスタンスを開始する手順と似ています。

Prerequisites

スポットインスタンスは、次の場合にのみ開始できます。

  • スポットインスタンスを手動で停止している。

  • スポットインスタンスが EBS-backed インスタンスである。

  • スポットインスタンスに使用可能な容量がある。

  • スポット料金が上限価格より低くなっている。

Limitations

  • フリート、起動グループ、またはアベイラビリティーゾーングループの一部であるスポットインスタンスを開始することはできません。

New console

スポットインスタンスを開始するには (コンソール)

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

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

  3. [Instance state (インスタンスの状態)]、[Start instance (インスタンスの開始)] の順に選択します。

Old console

スポットインスタンスを開始するには (コンソール)

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

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

  3. [Actions]、[Instance State]、[Start] の順に選択します。

AWS CLI

スポットインスタンスを開始するには (AWS CLI)

  • start-instances コマンドを使用して、1 つまたは複数のスポットインスタンスを手動で起動します。

    aws ec2 start-instances --instance-ids i-1234567890abcdef0

スポットインスタンスを終了する

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

スポットインスタンスを実行させている active スポットインスタンスリクエストをキャンセルしても、実行中のスポットインスタンスは自動的に終了されません。スポットインスタンスは手動で終了する必要があります。

停止中のスポットインスタンスを持つ disabled スポットインスタンスリクエストをキャンセルした場合、この停止中のスポットインスタンスは、Amazon EC2 スポットサービスによって自動的に終了されます。スポットインスタンスリクエストをキャンセルしてから、スポットサービスがスポットインスタンスを終了するまでの間に、短い遅延が生じることがあります。

スポットインスタンスリクエストのキャンセルの詳細については、「スポットインスタンスリクエストをキャンセルする」を参照してください。

New console

コンソールを使用してスポットインスタンスを手動で終了するには

  1. インスタンスを終了する前に、終了時に Amazon EBS ボリュームが削除されることと、必要なデータすべてをインスタンスストアボリュームから永続的ストレージ (Amazon EBS や Amazon S3 など) にコピーしていることを確認して、データが失われないことを確認します。

  2. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  3. ナビゲーションペインで、[インスタンス] を選択します。

  4. そのインスタンスがスポットインスタンスであることを確認するには、[インスタンスライフサイクル] 列に表示されている[スポット] のチェックをオンにします。

  5. 該当インスタンスを選択し、[Actions (アクション)]、[Instance State (インスタンスの状態)]、[Terminate instance (インスタンスの終了)] の順に選択します。

  6. 確認を求めるメッセージが表示されたら、[Terminate (終了)] を選択します。

Old console

コンソールを使用してスポットインスタンスを手動で終了するには

  1. インスタンスを終了する前に、終了時に Amazon EBS ボリュームが削除されることと、必要なデータすべてをインスタンスストアボリュームから永続的ストレージ (Amazon EBS や Amazon S3 など) にコピーしていることを確認して、データが失われないことを確認します。

  2. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  3. ナビゲーションペインで、[インスタンス] を選択します。

  4. そのインスタンスがスポットインスタンスであることを確認するには、[ライフサイクル] 列に表示されている[スポット] のチェックをオンにします。

  5. 該当インスタンスを選択し、[Actions]、[Instance State]、[Terminate] の順に選択します。

  6. 確認を求めるメッセージが表示されたら、[Yes, Terminate] を選択します。

AWS CLI

AWS CLI を使用してスポットインスタンスを手動で終了するには

  • スポットインスタンス を手動で終了するには、terminate-instances コマンドを使用します。

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