スポットインスタンスリクエストでオプションで指定するパラメータです。 - Amazon Elastic Compute Cloud

スポットインスタンスリクエストでオプションで指定するパラメータです。

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

次の図に、スポットリクエストのしくみを示します。リクエストタイプ (ワンタイムまたは永続) によって、Amazon EC2 がスポットインスタンスを中断したとき、またはお客様がスポットインスタンスを停止した場合に、リクエストが再度開かれるかどうかが決まります 。リクエストが永続リクエストの場合、スポットインスタンスの中断後、リクエストが再度開かれます。リクエストが永続的で、お客様が スポットインスタンス を停止した場合、リクエストは スポットインスタンス を起動した後にのみ開かれます。


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

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

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

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

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

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

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

  • disabled – お客様がスポットインスタンスを停止しました。

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

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


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

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

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

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

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

継続期間 (スポットブロックとも呼ばれます) が定義された スポットインスタンス は、中断されることがなく、選択した期間にわたって継続して実行されます。このようなインスタンスは、バッチ処理、エンコードとレンダリング、モデリングと解析、継続的な統合など、完了までに一定の時間のかかるジョブに最適です。

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

スポットリクエストで継続期間を定義すると、各 スポットインスタンス にインスタンス ID が割り当てられると同時に継続期間が開始されます。スポットインスタンス は手動終了されるか継続期間が終了するまで実行されます。継続期間の終了時、Amazon EC2 では スポットインスタンス が終了対象としてマークされ、スポットインスタンス の終了通知が表示されます。それにより、インスタンスの終了前に 2 分の警告期間が与えられます。まれに Amazon EC2 のキャパシティーの都合でスポットブロックの中断が発生する場合があります。この場合、インスタンスを削除する前に 2 分間の警告が与えられ、使用した場合でも、削除したインスタンスについては課金されません。

新しいアカウントや AWS での請求履歴のないアカウントは、期間が定義されている (スポットブロックとも呼ばれます) スポットインスタンス では対象外です。

期間が定義された スポットインスタンス を起動するには (コンソール)

スポットフリート リクエストの作成」の手順に従います。期間が定義された スポットインスタンス を起動するには、[アプリケーションまたはタスクのニーズについてお知らせください] で、[定義された期間のワークロード] をクリックします。

継続期間が定義された スポットインスタンス を起動するには (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 のテナントを指定します。詳細については、「スポットインスタンス リクエストの作成」を参照してください。

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

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

現行世代

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

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

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

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

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

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

  • ec2:StartInstances – スポットインスタンス を起動

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

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

Amazon EC2 がこのサービスにリンクされたロールのサポートを開始した 2017 年 10 月以前にアクティブな スポットインスタンス リクエストを行った場合は、Amazon EC2 が AWS アカウントで [AWSServiceRoleForEC2Spot] ロールを作成しています。詳細については、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. 次のページで、[Next:Review (次の手順: 確認)] を選択します。

  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 スナップショット用の CMK へのアクセス権の付与

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

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

CMK を使用するアクセス許可を AWSServiceRoleForEC2Spot ロールに付与するには

  • create-grant コマンドを使用して CMK に付与を追加し、プリンシパル (サービスにリンクされたロール AWSServiceRoleForEC2Spot) を指定します。このプリンシパルには、付与が許可するオペレーションを実行するためのアクセス許可が提供されます。CMK を指定するには、key-id パラメータと CMK の 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 コマンドを使用して、スポットインスタンス と オンデマンドインスタンス を同じ呼び出しで起動することはできません。

前提条件

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

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

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

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

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

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

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

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

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

      注記

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

    • (オプション) アプリケーションでの需要に対応するために適切な数のインスタンスを確実に維持するには、[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 ファイルに指定するデータ構造は次のとおりです。BlockDurationMinutesValidUntilInstanceInterruptionBehavior を指定することもできます。データ構造でフィールドを指定しないと、デフォルト値が使用されます。この例では、one-time リクエストを作成し、スポットインスタンス に支払う上限価格として 0.02 を指定します。

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

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

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

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

  1. https://console.aws.amazon.com/ec2/ で Amazon 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 リソースのタグ付け」を参照してください。

前提条件

リソースにタグ付けするアクセス許可を 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 リソースを評価しません。

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

したがって、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. タグを追加するには、[タグの追加] ページで [タグの追加] をクリックし、タグのキーと値を入力します。追加するタグごとに [別のタグを追加] をクリックします。

    タグごとに、スポットインスタンス リクエスト、スポットインスタンス、ボリュームに同じタグを付けることができます。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-fleet-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. https://console.aws.amazon.com/ec2/ で Amazon EC2 コンソールを開きます。

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

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

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

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

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

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

スポットインスタンス の停止

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

注記

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

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

の制限事項

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

新しいコンソール

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

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

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

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

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

古いコンソール

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

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

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

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

AWS CLI

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

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

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

スポットインスタンス の起動

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

前提条件

スポットインスタンスを起動できるのは、次の場合のみです。

  • スポットインスタンスが手動で停止された。

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

  • スポットインスタンスキャパシティーが利用可能である。

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

の制限事項

  • スポットインスタンスは、それがフリートまたは起動グループ、アベイラビリティーゾーングループ、またはスポットブロックの一部である場合、起動できません。

新しいコンソール

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

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

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

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

古いコンソール

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

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

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

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

AWS CLI

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

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

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

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

スポットインスタンスリクエストが active で、関連付けられているスポットインスタンスが実行されている場合、またはスポットインスタンスリクエストが disabled で、関連付けられているスポットインスタンスが停止している場合、リクエストをキャンセルしてもインスタンスは終了しません。実行中のスポットインスタンスを手動で終了する必要があります。

永続スポットリクエストによって起動された実行中または停止中のスポットインスタンスを終了する場合、新しいスポットインスタンスが起動できるように、スポットリクエストは open 状態に戻ります。永続スポットリクエストをキャンセルして、スポットインスタンス を終了するには、まずスポットリクエストをキャンセルしてから スポットインスタンス を終了する必要があります。そうしないと、永続スポットリクエストによって新しいインスタンスが起動される場合があります。スポットインスタンスリクエストのキャンセルの詳細については、「スポットインスタンス リクエストのキャンセル」を参照してください。

新しいコンソール

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

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

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

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

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

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

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

古いコンソール

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

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

  2. https://console.aws.amazon.com/ec2/ で Amazon 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