

# スポットインスタンス
<a name="using-spot-instances"></a>

スポットインスタンスは休止中の EC2 キャパシティーを使用するインスタンスで、オンデマンド価格より低料金で利用できます。スポットインスタンスでは未使用の EC2 インスタンスを大幅な割引価格でリクエストできるため、Amazon EC2 のコストを大幅に削減できます スポットインスタンスの時間料金はスポット料金と呼ばれます。各アベイラビリティーゾーンにおける各インスタンスタイプのスポット料金はAmazon EC2 によって設定され、スポットインスタンス の長期的な需給に基づいて徐々に調整されます。スポットインスタンスはキャパシティが利用可能なときに、いつでも実行されます。

スポットインスタンス はアプリケーションを実行する時間に柔軟性がある場合や、アプリケーションを中断できる場合に、費用効率の高い選択肢です。例えば、スポットインスタンス はデータ分析、バッチジョブ、バックグラウンド処理、およびオプションタスクに適しています。詳細については[Amazon EC2スポットインスタンス](https://aws.amazon.com/ec2/spot/)を参照してください。

EC2 インスタンスのさまざまな購入オプションの比較については「[Amazon EC2 の請求および購入オプション](instance-purchasing-options.md)」を参照してください。

## 概念
<a name="spot-features"></a>

スポットインスタンスを使用するときは事前に以下の概念を理解しておく必要があります。
+ スポットキャパシティープール – インスタンスタイプ (`m5.large` など) とアベイラビリティーゾーンが同一で、使用されていない EC2 インスタンスのセットです。
+ *スポット料金* – スポットインスタンスの現在の料金です (時間あたり)。
+ *スポットインスタンスリクエスト* – スポットインスタンスに対するリクエストです。キャパシティーが利用可能になると、Amazon EC2 がリクエストを実行します。スポットインスタンスリクエストには*ワンタイム*と*永続*の2種類があります。リクエストに関連付けられたスポットインスタンスが中断された後、Amazon EC2 は永続的スポットインスタンスリクエストを自動的に再送信します。
+ *EC2 インスタンスの再調整に関する推奨事項* – Amazon EC2 は、スポットインスタンスにおいて中断のリスクが高まったことをユーザーに通知するために、インスタンスの再調整に関する推奨事項シグナルを送信します。このシグナルにより、スポットインスタンスで中断 2 分前の通知が発信されていなくても、ユーザーは既存の、または新しいスポットインスタンスについて、前もってワークロードを再調整することができます。
+ *スポットインスタンスの中断* – Amazon EC2 が容量を戻してもらう必要がある場合にはAmazon EC2 はスポットインスタンスを終了、停止、または休止状態にします。Amazon EC2 はスポットインスタンスが中断される 2 分前に、そのインスタンスに対し中断を警告するための通知を送信します。

## スポットインスタンスとオンデマンドインスタンスの違い
<a name="key-differences-spot-on-demand"></a>

次の表はスポットインスタンスと[オンデマンドインスタンス](ec2-on-demand-instances.md)の主な違いをまとめたものです。


|  | Spot Instances | On-Demand Instances | 
| --- | --- | --- | 
|  作成時刻  |  スポットインスタンスリクエストがアクティブであり、利用可能なキャパシティーがある場合に限り即時に起動できます。  |  手動で起動リクエストを実行し、容量が利用可能である場合に限り、即時に起動できます。  | 
|  使用可能な容量  |  利用可能なキャパシティ－がない場合、スポットインスタンスリクエストはキャパシティ－が利用可能になるまで継続して自動的に起動リクエストを実行します。  |  起動リクエストを行うときに容量が利用可能でない場合は容量不足エラー (ICE) が表示されます。  | 
|  時間料金  |  スポットインスタンスの 1 時間単位の使用料金は長期的な需要と供給に基づいて変化します。  |  オンデマンドインスタンス の時間単位の使用料金は固定です。  | 
| 再調整に関する推奨事項 | 実行中のスポットインスタンスにおいて中断のリスクが高まった場合に、Amazon EC2 はそのインスタンスに対してシグナルを発します。 | お客様はいつオンデマンドインスタンスが中断 (停止、休止、または終了) されるかを決定します。 | 
|  インスタンスの中断  |  ユーザーはAmazon EBS-backed スポットインスタンスを停止および開始することができます。さらに、キャパシティーが利用できなくなった場合、Amazon EC2 は個々のスポットインスタンスを[中断](spot-interruptions.md)することができます。  |  お客様はいつオンデマンドインスタンスが中断 (停止、休止、または終了) されるかを決定します。  | 

## 料金と削減額
<a name="spot-pricing"></a>

スポットインスタンス はスポット料金で課金されます。これは Amazon EC2 によって設定され、スポットインスタンス の長期供給と需要に基づいて徐々に調整されます｡ スポットインスタンス はお客様が自らスポットインスタンスを終了するか、容量が使用できなくなるか、[スケールイン](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-lifecycle.html#as-lifecycle-scale-in)時に Amazon EC2 Auto Scaling グループのインスタンスが削除されるまで実行されます。

ユーザー または Amazon EC2 が実行中のスポットインスタンスを中断した場合、使用しているオペレーティングシステムおよび中断したユーザーに応じて、使用した秒数または時間数の料金が請求されます (料金が発生しない場合もあります)。詳細については「[中断された スポットインスタンス の請求](billing-for-interrupted-spot-instances.md)」を参照してください。

スポットインスタンスは Savings Plans の対象外です。Savings Plans をお持ちの場合、スポットインスタンスの使用によって既に取得している割引に対する追加の割引は提供されません。さらに、スポットインスタンスへの支出ではCompute Savings Plans のコミットメントは適用されません。

### 料金の表示
<a name="spot-pricing-view-prices"></a>

AWS リージョン およびインスタンスタイプごとに、現在の (5 分ごとに更新される) 最低スポット料金を確認するには[Amazon EC2 スポットインスタンスの料金](https://aws.amazon.com/ec2/spot/pricing/)ページを参照してください。

過去 3 か月間のスポット価格の履歴を表示するにはAmazon EC2 コンソールを使用するか、 [describe-spot-price-history](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-spot-price-history.html) コマンド () を使用します。詳細については「[スポットインスタンスの料金履歴の表示](using-spot-instances-history.md)」を参照してください。

AWS アカウント ごとに、個々のアベイラビリティーゾーンがコードにマッピングされます。したがって、アカウント間で同じアベイラビリティーゾーンコード (例えば、`us-west-2a`) に対して結果が異なる場合があります。

### 削減額の表示
<a name="spot-pricing-view-savings"></a>

スポットインスタンスを 1 つの[スポットフリート](Fleets.md)またはすべてのスポットインスタンスに対して使用することで得られる節約額を確認できます。過去 1 時間または過去 3 日間の削減状況を表示でき、vCPU 時間あたりの平均コストとメモリ (GiB) 時間あたりの平均コストも確認できます。削減額が予想されますが、使用状況に対する請求の調整が含まれていないため、実際の削減額と異なる場合があります。削減額情報の表示の詳細については[スポットインスタンス 購入による削減額](spot-savings.md)を参照してください。

### 請求書の表示
<a name="spot-pricing-view-billing"></a>

請求書にはサービスの使用量に関する詳細が記載されています。詳細については*AWS Billing ユーザーガイド*の[請求書の表示](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/getting-viewing-bill.html)を参照してください。

# Amazon EC2 スポットのベストプラクティス
<a name="spot-best-practices"></a>

Amazon EC2 ではスポットインスタンスを利用して AWS クラウド にある予備の EC2 コンピューティングキャパシティにアクセスし、オンデマンド料金に比べて最大 90% のコストを節約できます。オンデマンドインスタンスとスポットインスタンスの違いはAmazon EC2 がキャパシティを再要求する必要がある場合に、Amazon EC2 がスポットインスタンスを中断できることだけです。中断の際には2 分前に通知があります。スポットインスタンスで快適なエクスペリエンスを得るにはスポットインスタンスを使用するためのベストプラクティスを理解して適用することが重要です。

スポットインスタンス はステートレスかつフォールトトレラントで、柔軟性の高いアプリケーションに適しています。例えば、 スポットインスタンス はビッグデータ、コンテナ化されたワークロード、CI/CD、ステートレスウェブサーバー、ハイパフォーマンスコンピューティング (HPC)、レンダリングワークロードに適しています。

実行中、 スポットインスタンス は オンデマンドインスタンス とまったく同じ動作をします。ただし、スポットはワークロードが完了するまで十分な期間、実行中のインスタンスが動作し続けることを保証するものではありません。また、スポットは必要としているインスタンスをすぐに取得できること、またはリクエストした総容量がいつでも取得できることを保証するものではありません。さらに、スポットインスタンスの可用性は需要と供給によって変化し、将来のパフォーマンスが過去の実績により保証されるものではないため、スポットインスタンスの容量や発生する中断は時間の経過とともに変化する可能性があります。

スポットインスタンス は柔軟性がない、ステートフル、フォールトイントレラント、またはインスタンスノード間で緊密に結合されているワークロードには適していません。また、ターゲットキャパシティが完全に使用できない期間が時折あることが許容されないワークロードにはスポットインスタンスは推奨されません。スポットのベストプラクティスに従ってインスタンスタイプとアベイラビリティーゾーンに柔軟性を持たせることで、高可用性を実現できますが、オンデマンドインスタンスの需要が急増するとスポットインスタンスのワークロードが中断される可能性があるため、容量が使用可能になる保証はありません。

こうしたワークロードにスポットインスタンスを使用したり、中断や停止期間を処理するためにオンデマンドインスタンスへのフェールオーバーを試みたりしないよう、強く勧告します。オンデマンドインスタンスにフェイルオーバーすると、他のスポットインスタンスの中断が誤って発生する可能性があります。さらに、インスタンスタイプとアベイラビリティーゾーンの組み合わせのスポットインスタンスが中断された場合、同じ組み合わせでオンデマンドインスタンスを取得することが困難になる可能性があります。

スポットの使用に慣れている場合でも、スポットインスタンスを使い始めたばかりの場合でも、スポットインスタンスの中断や可用性に関する問題が発生している場合にはスポットサービスを最大限に活用できるよう、これらのベストプラクティスに従うことをお勧めします。

**Topics**
+ [中断に備えて個々のインスタンスを準備する](#prep-instances-for-interruptions)
+ [インスタンスタイプとアベイラビリティーゾーンについて柔軟に対応する](#be-instance-type-flexible)
+ [属性ベースのインスタンスタイプの選択を使用する](#use-attribute-based-instance-type-selection)
+ [スポットプレースメントスコアを使用して最適なリージョンとアベイラビリティーゾーンを特定する](#use-spot-placement-scores-to-identify-optimal-regions-and-availability-zones)
+ [EC2 Auto Scaling グループまたは EC2 フリートを使用して総容量を管理する](#use-sf-asg-for-aggregate-capacity)
+ [価格と容量を最適化する配分戦略を使用する](#use-capacity-optimized-allocation-strategy)
+ [統合された AWS のサービスを使用して スポットインスタンス を管理する](#use-integrated-aws-services)
+ [使用すべき最適なスポットリクエスト方法はどれですか?](#which-spot-request-method-to-use)

## 中断に備えて個々のインスタンスを準備する
<a name="prep-instances-for-interruptions"></a>

スポットインスタンスの中断を適切に処理する最善の方法は耐障害性のあるアプリケーションを設計することです。これを実現するためにはEC2 インスタンスの再調整に関する推奨事項、ならびにスポットインスタンスの中断通知を利用できます。

EC2 インスタンスの再調整に関するレコメンデーションはスポットインスタンスで中断のリスクが高まった場合に通知するためのシグナルです。ユーザーはこのシグナルにより、スポットインスタンスの中断 2 分前の通知が届いていない段階で、事前にスポットインスタンスの管理を行えます。ワークロードを、中断のリスクが高くない新規または既存の スポットインスタンス に再調整することができます。このシグナルはAuto Scaling グループと EC2 フリートの容量の再分散機能を使うことで簡単に利用できます。

スポットインスタンスの中断通知はAmazon EC2 がスポットインスタンスを中断する 2 分前に発行される警告です。ワークロードに「時間の面での柔軟性」がある場合は中断が発生した際にそれを終了するのではなく、停止または休止状態になるようにスポットインスタンスを設定することができます。Amazon EC2 は中断が発生したスポットインスタンスを自動的に停止または休止状態にし、使用可能な容量が確保できた際にはそのインスタンスを自動的に再開します。

再調整に関する推奨事項と中断通知をキャプチャし、ワークロードの進行状況のチェックポイントをトリガーするか、中断を適切に処理するルールを [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/index.html) で作成することをお勧めします。詳細については[再調整に関する推奨事項シグナルのモニタリング](rebalance-recommendations.md#monitor-rebalance-recommendations)を参照してください。イベントルールの作成および使用方法の詳細な例については[Taking Advantage of Amazon EC2 スポットインスタンスInterruption Notices](https://aws.amazon.com/blogs/compute/taking-advantage-of-amazon-ec2-spot-instance-interruption-notices/)を参照してください。

詳細については[EC2 インスタンスの再調整に関する推奨事項](rebalance-recommendations.md)および[スポットインスタンスの中断。](spot-interruptions.md)を参照してください。

## インスタンスタイプとアベイラビリティーゾーンについて柔軟に対応する
<a name="be-instance-type-flexible"></a>

スポットキャパシティープールは同じインスタンスタイプ (`m5.large` など) とアベイラビリティーゾーン (us-east-1a など) を持つ、未使用の EC2 インスタンスのセットです。どのインスタンスタイプをリクエストし、どのアベイラビリティーゾーンでワークロードをデプロイするか柔軟に対応することで、スポットが必要な量のコンピューティング性能を見つけ、割り当てられる可能性が高くなります。例えば、c4、m5、m4 ファミリのラージを使用してもよいのであれば、 `c5.large` を指定する必要はないということです。

具体的なニーズに応じて、コンピューティング要件を満たすためにどのインスタンスタイプを使用できるか評価できます。ワークロードを垂直にスケーリングできる場合はより大きいインスタンスタイプ (vCPU とメモリが多い) をリクエストに含めてください。水平にしかスケーリングできない場合はオンデマンドの顧客からの需要が少ない、旧世代のインスタンスタイプを含めることをお勧めします。

一般的に、ワークロードごとに少なくとも 10 種類のインスタンスタイプに柔軟に対応できれば十分です。さらに、すべてのアベイラビリティーゾーンが VPC で使用するように設定され、ワークロード用に選択されていることを確認してください。

## 属性ベースのインスタンスタイプの選択を使用する
<a name="use-attribute-based-instance-type-selection"></a>

属性ベースのインスタンスタイプの選択では実行するワークロードに応じて vCPU、メモリ、ストレージなどのインスタンス属性を指定できます。EC2 Auto Scaling または EC2 フリートが、指定の属性に一致するインスタンスを自動的に特定して起動します。これで、特定のインスタンスタイプを手動で選択する手間が省けます。手動で選択するには各インスタンスタイプが提供するサービスについて深い知識が求められます。

また、属性ベースのインスタンスタイプの選択を使用した場合はインスタンスタイプが新規にリリースされたら自動的に使用できるようになります。これにより、ますます幅広いスポットインスタンスキャパシティにシームレスにアクセスできるようになります。

属性ベースのインスタンスタイプの選択は実行先のインスタンスタイプに柔軟に対応できるワークロードとフレームワークに理想的です。例えば、ハイパフォーマンスコンピューティング (HPC) やビッグデータワークロードなどです。

詳細については「*Amazon EC2 Auto Scaling ユーザーガイド*」の「[Create mixed instances group using attribute-based instance type selection](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-mixed-instances-group-attribute-based-instance-type-selection.html)」およびこのガイドの「[EC2 フリートまたはスポットフリートのインスタンスタイプを選択するための属性を指定する](ec2-fleet-attribute-based-instance-type-selection.md)」を参照してください。

## スポットプレースメントスコアを使用して最適なリージョンとアベイラビリティーゾーンを特定する
<a name="use-spot-placement-scores-to-identify-optimal-regions-and-availability-zones"></a>

スポットインスタンスは未使用の EC2 キャパシティであり、このキャパシティは EC2 の需要と供給に基づいて変動します。このため、特定の時間に特定の場所で必要になるスポットキャパシティをいつでも正確に取得できるとは限りません。この予測不能性を軽減するために、スポットプレースメントスコア機能を使用できます。これはスポットキャパシティのニーズを満たせるだけの十分なキャパシティがある可能性が高いリージョンまたはアベイラビリティーゾーンを推奨する機能です。そうしたロケーションで先にスポットインスタンスを起動しておく必要はありません。

スポットプレースメントスコアはインスタンスタイプとそのタイプで使用可能なリージョンやアベイラビリティーゾーンに柔軟に対応できるワークロードで使用するのに最適です。そのために必要なのは必要とするスポットキャパシティ、インスタンスタイプ要件、およびリージョンやアベイラビリティーゾーンの推奨が必要かどうかを指定することだけです。これらを指定すると、リージョンまたはアベイラビリティーゾーンごとに 1～10 のスコアが返されます。スコアはリクエストしたスポットキャパシティを目的のロケーションに正常にプロビジョニングできる可能性を示します。スコア 10 はスポットリクエストが正常に処理される可能性が非常に高いことを示します。

キャパシティは時間の経過と共に変動するため、スポットプレースメントスコアはあくまでもその時点での推奨であることに留意してください。キャパシティの可用性を保証するものでも、中断のリスクを予測するものでもありません。

スポットプレースメントスコア機能はAmazon EC2 コンソール、AWS CLI、または SDK で使用できます。詳細については「[スポットプレイスメントスコア](spot-placement-score.md)」を参照してください。

## EC2 Auto Scaling グループまたは EC2 フリートを使用して総容量を管理する
<a name="use-sf-asg-for-aggregate-capacity"></a>

スポットを使用すると、個々のインスタンスの観点からではなく、総容量 (vCPUs、メモリ、ストレージ、またはネットワークスループットなどの単位) の観点から検討することが可能になります。Auto Scaling グループと EC2 フリートはターゲットキャパシティの起動および維持のために使用できます。これにより、中断されたり手動で終了されたりしたリソースを置き換えるリソースを自動的に要求できます。Auto Scaling グループまたは EC2 フリートを設定する際にはアプリケーションのニーズに基づいてインスタンスタイプとターゲットキャパシティを指定するだけで済みます。詳細については[Amazon EC2 Auto Scaling ユーザーガイド](https://docs.aws.amazon.com/autoscaling/ec2/userguide/auto-scaling-groups.html) の *Auto Scaling グループ*およびこのユーザーガイドの [EC2 フリートの作成](create-ec2-fleet.md) をご参照ください。

## 価格と容量を最適化する配分戦略を使用する
<a name="use-capacity-optimized-allocation-strategy"></a>

Auto Scaling グループの配分戦略を使えば、予備容量を持つスポットキャパシティープールを手動で探す必要なく、ターゲット容量をプロビジョニングできます。最も安い価格で最も利用性の高いスポットキャパシティープールからインスタンスが自動的にプロビジョニングされる、`price-capacity-optimized` 戦略を使用することをお勧めします。また、EC2 フリートの `price-capacity-optimized` 配分戦略も活用できます。最適な容量を持つプールからスポットインスタンス容量が供給されるため、使用しているスポットインスタンスが再要求される可能性は低くなります。配分戦略の詳細についてはこのユーザーガイドの[ワークロードの中断コストが高い場合](ec2-fleet-allocation-strategy.md#ec2-fleet-strategy-capacity-optimized)および *Amazon EC2 Auto Scaling ユーザーガイド*の[スポットインスタンス](https://docs.aws.amazon.com/autoscaling/ec2/userguide/allocation-strategies.html)を参照してください。

## 統合された AWS のサービスを使用して スポットインスタンス を管理する
<a name="use-integrated-aws-services"></a>

他の AWS のサービスは個々のインスタンスやフリートを管理する必要なく、全体的なコンピューティングコストを削減できるよう、スポットと統合されています。該当するワークロードの場合、Amazon EMR、Amazon Elastic Container Service、AWS Batch、Amazon Elastic Kubernetes Service、Amazon SageMaker AI、AWS Elastic Beanstalk、Amazon GameLift Servers の各ソリューションを検討することをお勧めします。これらのサービスでのスポットベストプラクティスの詳細については[Amazon EC2 スポットインスタンス Workshops Website](https://ec2spotworkshops.com/) を参照してください。

## 使用すべき最適なスポットリクエスト方法はどれですか?
<a name="which-spot-request-method-to-use"></a>

次の表を使用して、スポットインスタンスをリクエストする際に使用する API を決定します。


****  

| API | どのようなときに使うか? | ユースケース | この API を使うべきか? | 
| --- | --- | --- | --- | 
|  [CreateAutoScalingGroup](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_CreateAutoScalingGroup.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/spot-best-practices.html)  |  必要な数のインスタンスを維持しながら、インスタンスのライフサイクルを管理する Auto Scaling グループを作成します。指定した最小値と最大限度の間の水平スケーリング (インスタンスの追加) をサポートします。  | はい | 
| [CreateFleet](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateFleet.html) |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/spot-best-practices.html)  |  インスタンスタイプ別、AMI 別、アベイラビリティーゾーン別、またはサブネット別で異なる、複数の起動条件を指定し、オンデマンドインスタンスとスポットインスタンス両方のフリートを 1 回のリクエストで作成します。スポットインスタンスの割り当てストラテジーのデフォルトはユニットあたりの `lowest-price` ですが、`price-capacity-optimized`、`capacity-optimized` または `diversified` に変更可能です。  |  はい - 自動スケーリングを必要としない場合は `instant` モード。  | 
| [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html) |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/spot-best-practices.html)  |  AMI と 1 つのインスタンスタイプを使用して、指定した数のインスタンスを起動します。  |  いいえ - RunInstances は1 回のリクエストで複数のインスタンスタイプを許可しないため。  | 
| [RequestSpotFleet](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RequestSpotFleet.html) |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/spot-best-practices.html)  |  使用しません。RequestSpotFleet は計画投資のないレガシー API です。  | いいえ | 
| [RequestSpotInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RequestSpotInstances.html) |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/spot-best-practices.html)  |  使用しません。RequestSpotInstances は計画投資のないレガシー API です。  | いいえ | 

# スポットインスタンス のしくみ
<a name="how-spot-instances-work"></a>

スポットインスタンスを起動するにはユーザーが*スポットインスタンスリクエスト*を作成します。またはAmazon EC2 が自動的にスポットインスタンスリクエストを作成することもできます。スポットインスタンスはスポットインスタンスリクエストが受理されると起動します。

スポットインスタンスはいくつかの異なるサービスを使用して起動できます。詳細については[Amazon EC2 スポットインスタンスの開始方法](https://aws.amazon.com/ec2/spot/getting-started/)を参照してください。このユーザーガイドではEC2 を使用してスポットインスタンスを起動する方法について説明します。
+ スポットインスタンスリクエストはAmazon EC2 コンソールの [インスタンス起動ウィザード](ec2-launch-instance-wizard.md) または [run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) コマンドを使用して作成できます。詳細については「[スポットインスタンスを管理する](using-spot-instances-request.md)」を参照してください。
+ EC2 フリートを作成して、必要な数のスポットインスタンスを指定することができます。Amazon EC2 はEC2 フリートで指定されているすべてのスポットインスタンスについて、ユーザーに代わってスポットインスタンスリクエストを作成します。詳細については[EC2 フリートの作成](create-ec2-fleet.md)を参照してください。
+ スポットフリートリクエストを作成し、必要な数のスポットインスタンスを指定することができます。Amazon EC2 はスポットフリートリクエストで指定されたスポットインスタンスごとに、ユーザーに代わってスポットインスタンスリクエストを作成します。詳細については「[スポットフリートを作成する](create-spot-fleet.md)」を参照してください。

空きキャパシティがある場合、スポットインスタンスが起動します。スポットインスタンスはユーザーにより停止または終了されるか、Amazon EC2 により中断 (*スポットインスタンスの中断*と呼ばれます) されるまで実行されます。Amazon EC2 はスポットインスタンスを中断する際に、そのインスタンスを停止、終了、または休止状態にすることができます。

スポットインスタンスを使用する場合には中断に備えておく必要があります。スポットインスタンスの需要が増加した場合や、スポットインスタンスの供給が減少した場合、Amazon EC2 がスポットインスタンスを中断する可能性があります。Amazon EC2 によりスポットインスタンスが中断される際にはスポットインスタンスの中断通知が送信されます。それによりインスタンスに対して、Amazon EC2 による中断が発生する 2 分前の警告が提供されます。スポットインスタンス の削除保護を有効にすることはできません。詳細については「[スポットインスタンスの中断。](spot-interruptions.md)」を参照してください。

**Topics**
+ [スポットインスタンスリクエストの状態](#creating-spot-request-status)
+ [起動グループでの スポットインスタンス の起動](#spot-launch-group)
+ [アベイラビリティーゾーングループでの スポットインスタンス の起動](#spot-az-group)
+ [VPC での スポットインスタンス の起動](#concepts-spot-instances-vpcs)
+ [バーストパフォーマンスインスタンスを起動する](#burstable-spot-instances)
+ [シングルテナントハードウェアで起動する](#spot-instance-tenancy)

## スポットインスタンスリクエストの状態
<a name="creating-spot-request-status"></a>

スポットインスタンスリクエストは次に示すいずれかの状態を取ります。
+ `open` – リクエストは受理されるまで待機状態です。
+ `active` – リクエストは受理されており、関連付けられたスポットインスタンスが存在します。
+ `failed` – リクエストの 1 つ以上のパラメータが正しくありません。
+ `closed` – スポットインスタンスは中断または終了されました。
+ `disabled` – スポットインスタンスがユーザーにより停止されました。
+ `cancelled` – このリクエストはユーザーによりキャンセルされたか、リクエストの有効期限が切れました。

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

![\[スポットインスタンスリクエストの状態。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/spot_request_states.png)


ワンタイムスポットインスタンスリクエストはAmazon EC2 がスポットインスタンスを起動するか、リクエストの有効期限が切れるか、またはユーザーがリクエストをキャンセルするまでアクティブ状態を維持します。利用できるキャパシティがない場合、スポットインスタンスは終了し、スポットインスタンスのリクエストは終了します。

永続スポットインスタンスリクエストはリクエストが受理された後も、リクエストの有効期限が切れるかユーザーによりキャンセルされるまで、アクティブ状態を維持します。キャパシティを利用できない場合はスポットインスタンスが中断されます。インスタンスが中断された後に、キャパシティが再び利用可能になると、スポットインスタンスが開始 (停止している場合)、あるいは再開 (休止状態の場合) されます。スポットインスタンスは停止して、キャパシティを利用できるようになったとき再び開始することができます。スポットインスタンスが (停止状態にあるか実行状態にあるかに関係なく) 終了した場合にはスポットインスタンスリクエストが再び開かれ、Amazon EC2 により新しいスポットインスタンスが起動されます。詳細については[スポットインスタンスを停止する](using-spot-instances-request.md#stopping-a-spot-instance)、[スポットインスタンスを開始する](using-spot-instances-request.md#starting-a-spot-instance)、および[スポットインスタンスを終了する](using-spot-instances-request.md#terminating-a-spot-instance)を参照してください。

スポットインスタンスリクエストの状態と、起動済みのスポットインスタンスのステータスを追跡することができます。詳細については「[スポットインスタンスリクエストのステータスを取得する](spot-request-status.md)」を参照してください。

## 起動グループでの スポットインスタンス の起動
<a name="spot-launch-group"></a>

スポットインスタンスリクエストで起動グループを指定することによって、一連のスポットインスタンスのすべてが起動可能な場合にのみ、それらを起動するよう、Amazon EC2 に指示することができます。また、スポットサービスで、起動グループ内のインスタンスのいずれかを終了する必要がある場合、すべてのインスタンスを終了することが必要となります。ただし、お客様が起動グループ内の 1 つ以上のインスタンスを終了する場合、Amazon EC2 は起動グループ内のその他のインスタンスを終了しません。

このオプションは便利な場合もありますが、この制約を追加することによって、スポットインスタンスリクエストが受理される可能性は低くなるので、スポットインスタンスが終了される可能性が高まります。例えば、起動グループに複数のアベイラビリティーゾーンのインスタンスが含まれるとします。これらのアベイラビリティーゾーンのいずれかのキャパシティーが減少して使用できなくなった場合、Amazon EC2 は起動グループのすべてのインスタンスを終了します。

以前に成功したリクエストと同じ (既存の) 起動グループを指定することで、新たに正常なスポットインスタンスリクエストを作成する場合には新しいインスタンスがこの起動グループに追加されます。したがって、この起動グループ内のインスタンスが終了されると、起動グループ内のすべてのインスタンスが終了します。これには最初のリクエストと 2 番目リクエストによって起動されたすべてのインスタンスが含まれます。

## アベイラビリティーゾーングループでの スポットインスタンス の起動
<a name="spot-az-group"></a>

スポットインスタンスリクエストでアベイラビリティーゾーングループを指定し、そのアベイラビリティーゾーン内で一連のスポットインスタンスを起動するように Amazon EC2 に指示します。Amazon EC2 はアベイラビリティーゾーングループのすべてのインスタンスを同時に中断する必要はありません。Amazon EC2 がアベイラビリティーゾーングループ内のいずれかのインスタンスを中断する場合、他のインスタンスはそのまま実行されます。

このオプションは便利な場合もありますが、この制約を追加することによって、スポットインスタンスリクエストが受理される可能性は低くなります。

アベイラビリティーゾーングループを指定したものの、スポットインスタンスリクエストでアベイラビリティーゾーンを指定していない場合の結果は使用するネットワークによって異なります。

**デフォルト VPC**  
Amazon EC2 は指定されたサブネットのアベイラビリティーゾーンを使用します。サブネットを指定しなかった場合はアベイラビリティーゾーンとそのデフォルトのサブネットが選択されますが、最低価格のゾーンではない可能性があります。アベイラビリティーゾーンのデフォルトのサブネットを削除した場合は別のサブネットを指定する必要があります。

**デフォルトではない VPC**  
Amazon EC2 は指定されたサブネットのアベイラビリティーゾーンを使用します。

## VPC での スポットインスタンス の起動
<a name="concepts-spot-instances-vpcs"></a>

スポットインスタンス のサブネットを指定するのと同じ方法で、オンデマンドインスタンス のサブネットを指定します。
+ [デフォルトの VPC] 特定の低価格のアベイラビリティーゾーンでスポットインスタンスを起動したい場合には対応するサブネットをスポットインスタンスリクエスト内で指定する必要があります。サブネットを指定しなかった場合、Amazon EC2 によってサブネットが選択されますが、このサブネットのアベイラビリティーゾーンのスポット料金は最低ではない可能性があります。
+ [デフォルト以外の VPC] スポットインスタンスのサブネットを指定する必要があります。

## バーストパフォーマンスインスタンスを起動する
<a name="burstable-spot-instances"></a>

T インスタンスタイプは[バーストパフォーマンスインスタンス](burstable-performance-instances.md)です。バーストパフォーマンスインスタンスタイプを使用してスポットインスタンスを起動し、CPU クレジットを蓄積するアイドル時間なしでバーストパフォーマンススポットインスタンスをすぐに短時間使用する場合は支払いコストが高くなるのを避けるために、インスタンスを[標準モード](burstable-performance-instances-standard-mode.md)で起動することをお勧めします。バーストパフォーマンス スポットインスタンス を [Unlimited モード](burstable-performance-instances-unlimited-mode.md) で起動し、すぐに CPU をバーストさせると、余分なクレジットがバーストに消費されます。インスタンスを短時間使用する場合、インスタンスは余分なクレジットに見合うだけの CPU クレジットを蓄積する時間がないため、インスタンスの終了時に余分なクレジットに対して課金されます。

Unlimited モードがバーストパフォーマンス スポットインスタンス に適しているのはバースト用の CPU クレジットが蓄積されるまで、そのインスタンスが十分に長く実行される場合のみです。それ以外の場合は余分なクレジットを支払う必要があるため、バーストパフォーマンス スポットインスタンス は他のインスタンスよりも、使用コストが高くなります。詳細については「[Unlimited モードと固定 CPU を使用する場合](burstable-performance-instances-unlimited-mode-concepts.md#when-to-use-unlimited-mode)」を参照してください。

T2 インスタンスは[標準モード](burstable-performance-instances-standard-mode.md)で設定すると、[起動クレジット](burstable-performance-instances-standard-mode-concepts.md#launch-credits)を取得します。T2 インスタンスは起動クレジットを取得できる唯一のバーストパフォーマンスインスタンスです。起動クレジットはインスタンスを構成するために十分なコンピューティングリソースを提供し、T2 インスタンスの初期起動を効率的に実現することを意図しています。T2 インスタンスの起動を繰り返して新しい起動クレジットにアクセスすることは許可されていません。CPU が持続的に必要な場合、(一定期間のアイドリングにより) クレジットを獲得して T2 スポットインスタンス の [Unlimited モード](burstable-performance-instances-unlimited-mode.md)　を使用するか、専用 CPU を搭載したインスタンスタイプを使用します。

## シングルテナントハードウェアで起動する
<a name="spot-instance-tenancy"></a>

スポットインスタンスはシングルテナントのハードウェア上で実行できます。ハードウェア専有 スポットインスタンス は他の AWS アカウントに属するインスタンスからは物理的に分離されます。詳細については「[Amazon EC2 ハードウェア専有インスタンス](dedicated-instance.md)」および「[Amazon EC2 ハードウェア専有インスタンス](https://aws.amazon.com/ec2/pricing/dedicated-instances/)」を参照してください。

ハードウェア専有スポットインスタンスを使用するには次のいずれかを実行します。
+ スポットインスタンスリクエストを作成する際に、`dedicated` のテナンシーを指定します。詳細については[スポットインスタンスを管理する](using-spot-instances-request.md)を参照してください。
+ `dedicated` のインスタンステナンシーを持つ VPC 内で、スポットインスタンスをリクエストします。詳細については「[デフォルトのテナンシーで VPC に専有インスタンスを起動する](dedicatedinstancesintovpc.md)」を参照してください。インスタンステナンシーが `default` である VPC ではテナンシーが `dedicated` であるスポットインスタンスをリクエストすることはできません。

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

# スポットインスタンスの料金履歴の表示
<a name="using-spot-instances-history"></a>

スポットインスタンス料金は Amazon EC2 で設定され、スポットインスタンス容量に対する長期の需給傾向に基づいて緩やかに調整されます。

スポットリクエストが受理されると、オンデマンド料金を超えない現在のスポット料金で、スポットインスタンス が起動されます。インスタンスタイプ、オペレーティングシステム、アベイラビリティーゾーンでフィルタリングして、過去 90 日間のスポット料金履歴を表示できます。

*最新*のスポットインスタンス料金については[Amazon EC2 スポットインスタンスの料金](https://aws.amazon.com/ec2/spot/pricing/)を参照してください。

------
#### [ Console ]

**スポット料金の履歴を表示するには**

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

1. ナビゲーションペインで、[**Spot Requests**] を選択してください。

1. [**料金設定履歴**] を選択してください。

1. **[グラフ]** で、料金履歴を**[アベイラビリティーゾーン]** 別に比較するか、または**[インスタンスタイプ]** 別に比較するかを選択してください。
   + **[アベイラビリティーゾーン]** を選択した場合は、料金履歴を表示する **[インスタンスタイプ]**、オペレーティングシステム (**[プラットフォーム]**)、および **[日付範囲]** を指定します。
   + **[インスタンスタイプ]** を選択した場合は、料金履歴を表示する **[インスタンスタイプ]** (最大 5 つ)、**[アベイラビリティーゾーン]**、オペレーティングシステム (**[プラットフォーム]**)、および **[日付範囲]** を指定します。

   次のスクリーンショットは異なるインスタンスタイプでの料金比較を示しています。  
![\[Amazon EC2 コンソールのスポットインスタンスの料金履歴ツール。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/spot-instance-pricing-history.png)

1. マウスのカーソル (ポインタ) をグラフ上に移動させると、選択した日付範囲の特定の時刻の料金が表示されます。料金はグラフの上にある情報ブロックに表示されます。一番上の行に表示される料金は特定の日付の料金を示します。2 行目に表示される料金は選択した日付範囲での平均料金です。

1. vCPU あたりの料金を表示するには[**正規化された料金を表示**] をオンにします。インスタンスタイプの料金を表示するには[**正規化された料金を表示**] をオフにします。

------
#### [ AWS CLI ]

**スポット料金の履歴を表示するには**  
次の [describe-spot-price-history](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-spot-price-history.html) コマンドを使用します。

```
aws ec2 describe-spot-price-history \
    --instance-types c6i.xlarge \
    --product-descriptions "Linux/UNIX" \
    --start-time 2025-04-01T00:00:00 \
    --end-time 2025-04-02T00:00:0
```

------
#### [ PowerShell ]

**スポット料金の履歴を表示するには**  
[Get-EC2SpotPriceHistory](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2SpotPriceHistory.html) コマンドレットを使用します。

```
Get-EC2SpotPriceHistory `
    -InstanceType c6i.xlarge `
    -ProductDescription "Linux/UNIX" `
    -UtcStartTime 2025-04-01T00:00:00 `
    -UtcEndTime 2025-04-02T00:00:0
```

------

# スポットインスタンス 購入による削減額
<a name="spot-savings"></a>

フリートあたりレベルの スポットインスタンス またはすべての実行中の スポットインスタンス に関する使用状況と削減額の情報を表示できます。フリートあたりのレベルでは使用状況と削減額の情報にフリートが起動および終了するすべてのインスタンスが含まれます。この情報は過去 1 時間または過去 3 日間から表示できます。

次の [**削減額**] セクションのスクリーンショットではスポットフリートでのスポットの使用状況、ならびに削減額の情報を示しています。

![\[[スポットフリートの詳細] ページの [削減額] セクション。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/spot-savings.png)


表示できる使用状況と削減額の情報は次のとおりです。
+ **スポットインスタンス** – スポットフリートによって起動および終了されたスポットインスタンスの数。削減額の要約を表示した場合、その数字は実行中のすべての スポットインスタンス を表します。
+ **vCPU-hours** – 選択した時間枠ですべての スポットインスタンス で使用される vCPU 時間数。
+ **Mem(GiB)-hours** – 選択した時間枠ですべての スポットインスタンス で使用される GiB 時間数。
+ **On-Demand total** – これらのインスタンスを オンデマンドインスタンス として起動した場合、選択した時間枠で支払った合計金額。
+ **Spot total** – 選択した時間枠で支払う合計金額。
+ **Savings** – オンデマンド価格を支払わないことで節約される割合。
+ **Average cost per vCPU-hour** – 選択した時間枠ですべての スポットインスタンス で vCPU を使用する 1 時間あたりの平均コスト。次の式で計算されます: **Average cost per vCPU-hour** = **Spot total** / **vCPU-hours**
+ **Average cost per mem(GiB)-hour** – 選択した時間枠ですべての スポットインスタンス で GiB を使用する 1 時間あたりの平均コスト。次の式で計算されます: **Average cost per mem(GiB)-hour** = **Spot total** / **Mem(GiB)-hours**
+ **詳細** テーブル – スポットフリートを構成するさまざまなインスタンスタイプ (括弧内はインスタンスタイプあたりのインスタンス数です)。削減額の要約を表示した場合、その数字は実行中のすべての スポットインスタンス から成ります。

削減額情報はAmazon EC2 コンソールからのみ表示できます。

**スポットフリートの割引情報を表示するには**

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

1. ナビゲーションペインで、[**Spot Requests**] を選択してください。

1. スポットフリートリクエストの ID を選択し、[**削減額**] セクションまでスクロールします。

   またはスポットフリートリクエスト ID の横にあるチェックボックスをオンにし、**[削減]** タブを選択してください。

1. デフォルトでは過去 3 日間の使用状況と削減額の情報が表示されます。[**last hour**] または [**last three days**] を選択できます。1 時間未満前に起動された スポットフリート の場合はその時間の削減見込み額が表示されます。

**実行中のすべてのスポットインスタンスの削減額情報を表示するには**

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

1. ナビゲーションペインで、[**Spot Requests**] を選択してください。

1. [**削減の概要**] をクリックしてください。

# スポットインスタンスリクエストを作成する
<a name="spot-requests"></a>

スポットインスタンスを使用するには希望するインスタンス数、インスタンスタイプ、アベイラビリティーゾーンを含む、スポットインスタンスリクエストを作成します。キャパシティが利用可能になると、Amazon EC2 がすぐにリクエストを受理します。それ以外の場合、Amazon EC2 はリクエストが受理できるようになるか、お客様がリクエストをキャンセルするまで待機します。

オンデマンドインスタンスを起動するのと同じ方法で、Amazon EC2 コンソールの [インスタンス起動ウィザード](ec2-launch-instance-wizard.md) または [run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) マンドを使用してスポットインスタンスをリクエストできます。このメソッドは以下の理由でのみ推奨されます。
+ すでに [インスタンスの起動ウィザード](ec2-launch-instance-wizard.md) または [run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) コマンドを使用してオンデマンドインスタンスを起動しており、単一のパラメータを変更することでスポットインスタンスの起動に変更したいだけです。
+ 異なるインスタンスタイプを持つ複数のインスタンスは必要ありません。

複数のインスタンスタイプを指定することはできず、同じリクエストでスポットインスタンスとオンデマンドインスタンスを起動することはできないため、このメソッドは通常、スポットインスタンスの起動にはお勧めしません。複数のインスタンスタイプを持つスポットインスタンスとオンデマンドインスタンスを含む *フリート* の起動を含む、スポットインスタンスを起動するための推奨される方法については「[使用すべき最適なスポットリクエスト方法はどれですか?](spot-best-practices.md#which-spot-request-method-to-use)」を参照してください。

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

------
#### [ Console ]<a name="create-spot-instance-request-console-procedure"></a>

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

ステップ 1～9 はオンデマンドインスタンスの起動に使用するステップと同じです。ステップ 10 で、スポットインスタンスリクエストを設定します。

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. 画面上部のナビゲーションバーで、リージョンを選択してください。

1. Amazon EC2 コンソールダッシュボードで、[**インスタンスを起動**] を選択してください。

1. (オプション) **[Name and tags]** (名前とタグ) で、インスタンスに名前を付け、スポットインスタンス要求、インスタンス、ボリューム、および Elastic Graphics にタグを付けることができます。タグの詳細については[Amazon EC2 リソースのタグ付け](Using_Tags.md)を参照してください。

   1. **[Name]** (名前) に、インスタンスのわかりやすい名前を入力してください。

      インスタンス名はタグで、キーは **[Name]** (名前)、値は指定した名前です。名前を指定しない場合はインスタンスをその ID で識別できます。ID はインスタンスの起動時に自動的に生成されます。

   1. スポットインスタンスリクエスト、インスタンス、ボリューム、および Elastic Graphics にタグを付けするには**[Add additional tags]** (タグを追加) を選択してください。**[Add tag]** (タグを追加) を選択し、キーと値を入力し、タグ付けするリソースタイプを選択してください。追加するタグごとに **[Add tag]** (タグの追加) を選択してください。

1. **[Application and OS Images (Amazon マシンイメージ)]** (アプリケーションおよび OS イメージ (Amazon マシンイメージ)) で、インスタンスのオペレーティングシステム (OS) を選択してから、AMI を選択してください。詳細については「[アプリケーションと OS イメージ (Amazon マシンイメージ)](ec2-instance-launch-parameters.md#liw-ami)」を参照してください。

1. **[Instance type]** (インスタンスタイプ) で、インスタンスのハードウェア設定とサイズの要件を満たすインスタンスタイプを選択してください。詳細については「[インスタンスタイプ](ec2-instance-launch-parameters.md#liw-instance-type)」を参照してください。

1. **[Key pair (login)]** (キーペア (ログイン)) で、既存のキーペアを選択するか、**[Create new key pair]** (新しいキーペアを作成) を選択して新しいキーペアを作成します。詳細については「[Amazon EC2 のキーペアと Amazon EC2 インスタンス](ec2-key-pairs.md)」を参照してください。
**重要**  
[**Proceed without key pair**] (キーペアなしで進む) オプションを選択した場合 (非推奨)、ユーザーが別の方法でログインすることを許可するように設定された AMI を選択した場合でなければ、インスタンスに接続できなくなります。

1. **[Network settings]** (ネットワーク設定) で、デフォルト設定を使用するか、**[Edit]** (編集) を選択して必要に応じてネットワーク設定を構成します。

   セキュリティグループはネットワーク設定の一部を形成し、インスタンスのファイアウォールルールを定義します。このルールではどの着信ネットワークトラフィックをインスタンスに配信するかを指定します。

   詳細については「[ネットワーク設定](ec2-instance-launch-parameters.md#liw-network-settings)」を参照してください。

1. 選択した AMI にはルートデバイスボリュームを含む、1 つまたは複数のストレージボリュームが含まれます。**[Configure storage]** (ストレージの設定) で、**[Add new volume]** (新しいボリュームの追加) を選択して、インスタンスに接続する追加のボリュームを指定できます。詳細については「[ストレージの設定](ec2-instance-launch-parameters.md#liw-storage)」を参照してください。

1. **[Advanced details]** (高度な設定) で、スポットインスタンスリクエストを次のように設定します。

   1. **[購入オプション]** で、**[スポットインスタンスのリクエスト]** チェックボックスをオンにします。

   1. スポットインスタンスリクエストのデフォルト設定を維持するか、**[Customize]** (カスタマイズ) (右側) を選択して、スポットインスタンスリクエストのカスタム設定を指定できます。

      **[Customize]** (カスタマイズ) を選択すると、次のフィールドが表示されます。

      1. **[Maximum price]** (最大価格): スポット価格でスポットインスタンスをリクエストするか、オンデマンド価格を上限とするか、支払う金額の最大額を指定できます。
**警告**  
最大料金を指定すると、**[No maximum price]** (最大料金なし) を選択した場合よりもインスタンスが頻繁に中断されます。  
上限の料金を指定する場合は、0.001 USD 以上にする必要があります。0.001 USD 未満の値を指定すると、起動が失敗します。
         + **[No maximum price]** (最大価格なし): スポットインスタンスは現在のスポット価格で起動します。価格はオンデマンド価格を超えることはありません。(推奨)
         + **[Set your maximum price (per instance/hour)]** (最大価格を設定 (インスタンス / 時間あたり): 支払う意思のある最大金額を指定できます。
           + 現在のスポット価格よりも低い最大価格を指定すると、スポットインスタンスは起動しません。
           + 現在のスポット料金よりも高い最大料金を指定すると、スポットインスタンスが起動し、現在のスポット料金で請求されます。スポットインスタンスの実行後、スポット価格が最大価格を超えると、Amazon EC2 がスポットインスタンスを中断します。
           + 指定した上限料金にかかわらず、常に現在のスポット料金が請求されます。

           スポット料金の傾向を確認するには[スポットインスタンスの料金履歴の表示](using-spot-instances-history.md)を参照してください。

      1. **[Request type]** (リクエストタイプ): 選択したスポットインスタンスリクエストタイプによって、スポットインスタンスが中断された場合に何が発生するかが決まります。
         + **[One-time]** (ワンタイム): Amazon EC2 はスポットインスタンスに対して 1 回限りのリクエストを送信します。スポットインスタンスが中断された場合、リクエストは再送信されません。
         + **[Persistent request]** (永続リクエスト): Amazon EC2 はスポットインスタンスに対して永続リクエストを送信します。スポットインスタンスが中断された場合、要求は再送信され、中断されたスポットインスタンスを補充します。

         値を指定しない場合、デフォルトは1回限りのリクエストです。

      1. **[有効期間終了]**: *永続的な*スポットインスタンスリクエストの有効期限。

         このフィールドは1 回限りのリクエストではサポートされていません。*ワンタイム*リクエストは、リクエストのすべてのインスタンスが起動するか、ユーザーがリクエストをキャンセルするまで有効です。
         + **[No request expiry date]** (リクエストの有効期限なし): リクエストはキャンセルされるまで有効です。
         + **[Set your request expiry date]** (リクエストの有効期限を設定する): 永続的なリクエストは指定した日付まで、またはキャンセルするまで有効です。

      1. **[Interruption behavior]** (中断動作): 選択した動作によって、スポットインスタンスが中断されたときに何が起こるかが決まります。
         + 永続的なリクエストの場合、有効な値は **[Stop]** (停止) と **[Hibernate]** (休止) です。インスタンスが停止すると、EBS ボリュームストレージの料金が適用されます。
**注記**  
スポットインスタンスはオンデマンドインスタンスと同じ休止機能を使用するようになりました。休止を有効にするにはここで **[休止]** を選択するか、インスタンス起動ウィザードの下部に表示される **[停止 – 休止動作]** フィールドから **[有効化]** を選択してください。休止の前提条件については「[EC2 インスタンスの休止の前提条件](hibernating-prerequisites.md)」を参照してください。
         + ワンタイムリクエストの場合、**[Terminate]** (終了) のみが有効です。

         値を指定していない場合、デフォルトは **[Terminate]** (終了) になり、これは永続的なスポットインスタンスリクエストには無効です。デフォルトのままにして永続的なスポットインスタンスリクエストを起動しようとすると、エラーが発生します。

         詳細については「[スポットインスタンスの中断の動作](interruption-behavior.md)」を参照してください。

1. **[合計mary]** (概要) パネルの **[Number of instances]** (インスタンス数) に、起動するインスタンス数を入力してください。
**注記**  
Amazon EC2 が、スポットインスタンスごとに個別のリクエストを作成します。

1. **[合計mary]** (概要) パネルで、インスタンスの詳細を確認し、必要な変更を加えます。スポットインスタンスリクエストを送信した後はリクエストのパラメータを変更することはできません。**[合計mary]** (概要) パネルでリンクを選択すると、インスタンスの起動ウィザードのセクションに直接移動できます。詳細については「[概要](ec2-instance-launch-parameters.md#liw-summary)」を参照してください。

1.  インスタンスを起動する準備ができたら、**[Launch instance]** (インスタンスの起動) を選択してください。

   インスタンスが起動しないか、状態が `terminated` ではなくすぐに `running` になる場合は[Amazon EC2 インスタンスの起動に関する問題のトラブルシューティング](troubleshooting-launch.md)を参照してください。

------
#### [ AWS CLI ]

**run-instances を使用してスポットインスタンスリクエストを作成するには**  
[run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) コマンドを使用し、`--instance-market-options` パラメータでスポットインスタンスのオプションを次のように指定します。

```
--instance-market-options file://spot-options.json
```

JSON ファイルで指定するデータ構造は、次のとおりです。`ValidUntil`、および `InstanceInterruptionBehavior`、を指定することもできます。データ構造でフィールドを指定しないと、デフォルト値が使用されます。

次のサンプルでは`persistent` リクエストを作成します。

```
{
  "MarketType": "spot",
  "SpotOptions": {
    "SpotInstanceType": "persistent"
  }
}
```

**request-spot-instances を使用してスポットインスタンスリクエストを作成するには**

**注記**  
[request-spot-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/request-spot-instances.html) コマンドを使用してスポットインスタンスをリクエストすることは強くお勧めしません。これは計画された投資がないレガシー API であるためです。詳細については「[使用すべき最適なスポットリクエスト方法はどれですか?](spot-best-practices.md#which-spot-request-method-to-use)」を参照してください。

ワンタイムリクエストを作成するには[request-spot-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/request-spot-instances.html) コマンドを使用します。

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

永続リクエストを作成するには[request-spot-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/request-spot-instances.html) を使用します。

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

以下のコマンドで使用する起動仕様ファイルの例については[スポットインスタンスリクエストでの起動仕様の例](spot-request-examples.md)を参照してください。起動仕様ファイルをスポットリクエストコンソールからダウンロードする場合は代わりに [request-spot-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/request-spot-fleet.html) コマンドを使用する必要があります (スポットリクエストコンソールはスポットフリートを使用してスポットインスタンスリクエストを指定します)。

------
#### [ PowerShell ]

**スポットインスタンスリクエストを作成する**  
[New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html) コマンドレットを使用し、`-InstanceMarketOption` パラメータを使ってスポットインスタンスオプションを指定します。

```
-InstanceMarketOptions $marketOptions
```

スポットインスタンスオプションのデータ構造を、次のように作成します。

```
$spotOptions = New-Object Amazon.EC2.Model.SpotMarketOptions
$spotOptions.SpotInstanceType="persistent"
$marketOptions = New-Object Amazon.EC2.Model.InstanceMarketOptionsRequest
$marketOptions.MarketType = "spot"
$marketOptions.SpotOptions = $spotOptions
```

------

# スポットインスタンスリクエストでの起動仕様の例
<a name="spot-request-examples"></a>

以下に、 スポットインスタンスリクエストを作成するための [request-spot-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/request-spot-instances.html) コマンドで使用できる起動設定の例を示します。詳細については「[スポットインスタンスを管理する](using-spot-instances-request.md)」を参照してください。

**重要**  
[request-spot-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/request-spot-instances.html) コマンドを使用してスポットインスタンスをリクエストすることは強くお勧めしません。これは計画された投資がないレガシー API であるためです。詳細については「[使用すべき最適なスポットリクエスト方法はどれですか?](spot-best-practices.md#which-spot-request-method-to-use)」を参照してください。

**Topics**
+ [例 1: スポットインスタンス の起動](#spot-launch-specification1)
+ [例 2: 指定したアベイラビリティーゾーンで スポットインスタンス を起動する](#spot-launch-specification2)
+ [例 3: 指定したサブネットで スポットインスタンス を起動する](#spot-launch-specification3)
+ [例 4: ハードウェア専有スポットインスタンスを起動する](#spot-launch-specification4)

## 例 1: スポットインスタンス の起動
<a name="spot-launch-specification1"></a>

以下の例にはアベイラビリティーゾーンやサブネットは指定していません。Amazon EC2 によって自動的にアベイラビリティーゾーンが選択されます。Amazon EC2 は選択したアベイラビリティーゾーンのデフォルトのサブネットでインスタンスを起動します。

```
{
  "ImageId": "ami-0abcdef1234567890",
  "KeyName": "my-key-pair",
  "SecurityGroupIds": [ "sg-1a2b3c4d5e6f7g8h9" ],
  "InstanceType": "m5.medium",
  "IamInstanceProfile": {
      "Arn": "arn:aws:iam::123456789012:instance-profile/my-iam-role"
  }
}
```

## 例 2: 指定したアベイラビリティーゾーンで スポットインスタンス を起動する
<a name="spot-launch-specification2"></a>

以下の例にはアベイラビリティーゾーンが含まれています。Amazon EC2 は指定したアベイラビリティーゾーンのデフォルトのサブネットでインスタンスを起動します。

```
{
  "ImageId": "ami-0abcdef1234567890",
  "KeyName": "my-key-pair",
  "SecurityGroupIds": [ "sg-1a2b3c4d5e6f7g8h9" ],
  "InstanceType": "m5.medium",
  "Placement": {
    "AvailabilityZone": "us-west-2a"
  },
  "IamInstanceProfile": {
      "Arn": "arn:aws:iam::123456789012:instance-profile/my-iam-role"
  }
}
```

## 例 3: 指定したサブネットで スポットインスタンス を起動する
<a name="spot-launch-specification3"></a>

次の例にはサブネットが含まれます。Amazon EC2 は指定されたサブネットでインスタンスを起動します。デフォルト以外の VPC である場合、インスタンスにはデフォルトでパブリック IPv4 アドレスは割り当てられません。

```
{
  "ImageId": "ami-0abcdef1234567890",
  "SecurityGroupIds": [ "sg-1a2b3c4d5e6f7g8h9" ],
  "InstanceType": "m5.medium",
  "SubnetId": "subnet-1a2b3c4d",
  "IamInstanceProfile": {
      "Arn": "arn:aws:iam::123456789012:instance-profile/my-iam-role"
  }
}
```

デフォルト以外の VPC である場合、インスタンスにパブリック IPv4 アドレスを割り当てるには以下の例に示しているように `AssociatePublicIpAddress` フィールドを指定します。ネットワークインターフェイスの指定時には上記のコードブロックに示している `SubnetId` および `SecurityGroupIds` フィールドではなく、ネットワークインターフェイスを使用して、サブネット ID およびセキュリティグループ ID を含める必要があります。

```
{
  "ImageId": "ami-0abcdef1234567890",
  "KeyName": "my-key-pair",
  "InstanceType": "m5.medium",
  "NetworkInterfaces": [
    {
      "DeviceIndex": 0,
      "SubnetId": "subnet-1a2b3c4d5e6f7g8h9",
      "Groups": [ "sg-1a2b3c4d5e6f7g8h9" ],
      "AssociatePublicIpAddress": true
    }
  ],
  "IamInstanceProfile": {
      "Arn": "arn:aws:iam::123456789012:instance-profile/my-iam-role"
  }
}
```

## 例 4: ハードウェア専有スポットインスタンスを起動する
<a name="spot-launch-specification4"></a>

次の例では`dedicated` のテナンシーを使用するスポットインスタンスをリクエストしています。ハードウェア専用スポットインスタンスはVPC 内で起動される必要があります。

```
{
  "ImageId": "ami-0abcdef1234567890",
  "KeyName": "my-key-pair",
  "SecurityGroupIds": [ "sg-1a2b3c4d5e6f7g8h9" ],
  "InstanceType": "c5.8xlarge",
  "SubnetId": "subnet-1a2b3c4d5e6f7g8h9",
  "Placement": {
    "Tenancy": "dedicated"
  }
}
```

# スポットインスタンスリクエストのステータスを取得する
<a name="spot-request-status"></a>

スポットインスタンスリクエストを追跡し、スポットインスタンスの使用を計画するにはAmazon EC2 によって提供されるリクエストステータスを使用します。例えば、リクエストステータスによって、スポットリクエストがまだ受理されていない理由や、スポットリクエストの受理を妨げている制約の一覧を確認できます。

このプロセスの各ステップ (スポットリクエストの*ライフサイクル*とも呼ばれる) では特定のイベントによって後続のリクエスト状態が決まります。

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

![\[スポットインスタンスリクエストの仕組み。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/spot_lifecycle.png)


**Topics**
+ [リクエストステータス情報の取得](#get-spot-instance-request-status)
+ [スポットリクエストコード](#spot-instance-request-status-understand)
+ [EC2 スポットインスタンスリクエストのフルフィルメントイベント](#spot-request-fulfillment-event)
+ [スポットリクエストの状態変化](spot-instances-request-status-lifecycle.md)

## リクエストステータス情報の取得
<a name="get-spot-instance-request-status"></a>

スポットインスタンスリクエストのステータス情報を取得できます。

------
#### [ Console ]

**リクエストステータスの情報を取得するには**

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

1. ナビゲーションペインで、[**Spot Requests**] を選択し、スポットリクエストを選択してください。

1. ステータスを確認するには[**説明** ] タブの [ **ステータス**] フィールドをチェックします。

------
#### [ AWS CLI ]

**リクエストステータスの情報を取得するには**  
次の [describe-spot-instance-requests](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-spot-instance-requests.html) コマンドを使用します。

```
aws ec2 describe-spot-instance-requests --spot-instance-request-ids sir-0e54a519c9EXAMPLE
```

------
#### [ PowerShell ]

**リクエストステータスの情報を取得するには**  
[Get-EC2SpotInstanceRequest](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2SpotInstanceRequest.html) コマンドレットを使用します。

```
Get-EC2SpotInstanceRequest -SpotInstanceRequestId sir-0e54a519c9EXAMPLE
```

------

## スポットリクエストコード
<a name="spot-instance-request-status-understand"></a>

スポットリクエストステータス情報はステータスコード、更新時刻、およびステータスメッセージで構成されます。同時に、リクエスト入札ステータス情報はスポットリクエストの処理を決定する場合にも役に立ちます。

スポットリクエストステータスコードは次のとおりです。

`az-group-constraint`  
Amazon EC2 は同じアベイラビリティーゾーンでお客様が要求したインスタンスをすべて起動できるとは限りません。

`bad-parameters`  
スポットリクエストの 1 つ以上のパラメータが有効ではありません (例えば、指定した AMI が存在していません)。ステータスメッセージによって、どのパラメータが無効かを確認できます。

`canceled-before-fulfillment`  
スポットリクエストが受理される前にユーザーがスポットリクエストをキャンセルしました。

`capacity-not-available`  
要求したインスタンスに使用できる十分な容量が存在しません。

`constraint-not-fulfillable`  
1 つ以上の制約条件が有効ではないため、スポットリクエストを受理できません (例えば、アベイラビリティーゾーンが存在していません)。ステータスメッセージによって、どの制約条件が無効かを確認できます。

`fulfilled`  
スポットリクエストは `active` で、Amazon EC2 は スポットインスタンス を起動しています。

`instance-stopped-by-price`  
スポット料金が上限価格を超えたため、インスタンスは停止しました。

`instance-stopped-by-user`  
ユーザーがインスタンスを停止したか、インスタンスからシャットダウンコマンドを実行したために、インスタンスが停止されました。

`instance-stopped-no-capacity`  
EC2 の容量管理のニーズにより、インスタンスが停止されました。

`instance-terminated-by-price`  
スポット料金が上限価格を超えたため、インスタンスは削除されました。リクエストが永続入札の場合、プロセスが再開され、リクエストが評価保留となります。

`instance-terminated-by-schedule`  
スポットインスタンスはスケジュールされた期間の最後に終了されました。

`instance-terminated-by-service`  
インスタンスが停止状態から削除されました。

`instance-terminated-by-user`、または `spot-instance-terminated-by-user`  
受理済みのスポットインスタンスを終了させたので、(永続リクエストでない限り) リクエストは `closed` 状態になり 、インスタンスは `terminated` 状態になます。

`instance-terminated-launch-group-constraint`  
起動グループ内のインスタンスの 1 つ以上が終了したため、起動グループの制約条件が満たされなくなりました。

`instance-terminated-no-capacity`  
標準的な容量管理プロセスにより、インスタンスは終了しました。

`launch-group-constraint`  
Amazon EC2 はお客様が同時に要求したインスタンスをすべて起動できるわけではありません。同じ起動グループ内のインスタンスはすべて、同時に起動されて同時に終了します。

`limit-exceeded`  
EBS ボリューム数または合計ボリュームストレージの上限を超えました。詳細については「*Amazon EBS ユーザーガイド*」の「[Quotas for Amazon EBS](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-resource-quotas.html)」を参照してください。

`marked-for-stop`  
スポットインスタンスは停止中としてマーキングされます。

`marked-for-termination`  
スポットインスタンスに終了のためのマークが付けられています。

`not-scheduled-yet`  
スポットリクエストはスケジュール設定された日付になるまで評価されません。

`pending-evaluation`  
スポットインスタンスリクエストの作成後、システムがリクエストのパラメータを評価中はそのリクエストは `pending-evaluation` 状態となります。

`pending-fulfillment`  
Amazon EC2 は スポットインスタンス をプロビジョニングしようとしています。

`placement-group-constraint`  
現時点でスポットインスタンスをプレイスメントグループに追加できないため、まだスポットリクエストを受理することができません。

`price-too-low`  
上限料金がスポット料金を下回っているため、リクエストを受理できません。この場合、インスタンスは起動されず、リクエストは `open` のままになります。

`request-canceled-and-instance-running`  
スポットインスタンス がまだ実行されている間に、リクエストをキャンセルしました。リクエストは `cancelled` ですが、インスタンスは `running` のままです。

`schedule-expired`  
スポットリクエストは指定された日付までに受理されなかったため、有効期限切れとなりました。

`system-error`  
予期しないシステムエラーが発生しました。これが反復性の問題である場合はAWS サポート にお問い合わせください。

## EC2 スポットインスタンスリクエストのフルフィルメントイベント
<a name="spot-request-fulfillment-event"></a>

スポットインスタンスリクエストが受理されると、Amazon EC2 は EC2 スポットインスタンスリクエストのフルフィルメントイベントを Amazon EventBridge に送信します。Lambda 関数の呼び出しや Amazon SNS トピックへの通知など、このイベントが発生するたびにアクションを実行するルールを作成できます。

以下はこのイベントのサンプルデータです。

```
{
    "version": "0",
    "id": "01234567-1234-0123-1234-012345678901",
    "detail-type": "EC2 Spot Instance Request Fulfillment",
    "source": "aws.ec2",
    "account": "123456789012",
    "time": "yyyy-mm-ddThh:mm:ssZ",
    "region": "us-east-2",
    "resources": ["arn:aws:ec2:us-east-2:123456789012:instance/i-1234567890abcdef0"],
    "detail": {
        "spot-instance-request-id": "sir-0e54a519c9EXAMPLE",
        "instance-id": "i-1234567890abcdef0"
    }
}
```

詳細については「[Amazon EventBridge ユーザーガイド](https://docs.aws.amazon.com/eventbridge/latest/userguide/)」を参照してください。

# スポットリクエストの状態変化
<a name="spot-instances-request-status-lifecycle"></a>

次の図は申請から終了まで、スポットリクエストがライフサイクル全体を通してたどり得る経路を示しています。各ステップはノードとして表現され、各ノードのステータスコードはスポットリクエストおよびスポットインスタンスのステータスを示します。

![\[スポットインスタンスリクエストのライフサイクル。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/spot-request-status-diagram.png)


**評価保留**  
スポットインスタンスリクエストを作成すると、リクエストパラメータのいずれかが無効な (`bad-parameters` ) 場合 を除き、そのリクエストは `pending-evaluation` 状態になります。


| ステータスコード | リクエストの状態 | インスタンスの状態 | 
| --- | --- | --- | 
| pending-evaluation | open | 該当しない | 
| bad-parameters | closed | 該当しない | 

**保持**  
1 つ以上のリクエストによる制約が有効であるが、まだ満足することができない場合や、容量が十分ではない場合、リクエストは制約が満たされるまで待機する保持状態になります。リクエストのオプションはリクエストが受理される可能性に影響します。例えば、キャパシティがない場合、キャパシティが利用可能になるまでリクエストは保留状態になります。アベイラビリティーゾーングループを指定する場合、アベイラビリティーゾーンの制約が満たされるまで、リクエストは保持状態になります。

いずれかのアベイラビリティーゾーンが停止した場合、他のアベイラビリティーゾーンのスポットインスタンスリクエストで使用可能な予備の EC2 容量が、影響を受ける可能性があります。


| ステータスコード | リクエストの状態 | インスタンスの状態 | 
| --- | --- | --- | 
| capacity-not-available | open |  該当しない  | 
| price-too-low | open |  該当しない  | 
| not-scheduled-yet | open |  該当しない  | 
| launch-group-constraint | open |  該当しない  | 
| az-group-constraint | open |  該当しない  | 
|  placement-group-constraint  |  open  |  該当しない  | 
|  constraint-not-fulfillable  |  open  |  該当しない  | 

**評価保留/受理終了**  
特定の期間のみ有効なスポットインスタンスリクエストを作成し、そのリクエストが受理保留段階に到達する前に有効期間が経過した場合、 そのリクエストは `terminal` 状態になることがあります。これはお客様がリクエストをキャンセルした場合、またはシステムエラーが発生した場合にも発生する場合があります。


| ステータスコード | リクエストの状態 | インスタンスの状態 | 
| --- | --- | --- | 
|  schedule-expired  |  cancelled  |  該当しない  | 
|  30  |  cancelled  |  該当しない  | 
|  bad-parameters  |  failed  |  該当しない  | 
|  system-error  |  closed  |  該当しない  | 

¹ リクエストをキャンセルする場合。

**受理保留**  
指定した制約条件 (もしあれば) が満たされると、スポットリクエストは `pending-fulfillment` ステータスになります。

この時点で、Amazon EC2 は要求されたインスタンスを提供するよう準備します。この段階でプロセスが停止した場合はスポットインスタンスが起動される前に、ユーザーがリクエストをキャンセルしたことが原因である可能性があります。または予期しないシステムエラーが発生したことが原因である可能性もあります。


| ステータスコード | リクエストの状態 | インスタンスの状態 | 
| --- | --- | --- | 
|  pending-fulfillment  |  open  |  該当しない  | 

**受理済み**  
スポットインスタンスの仕様がすべて満たされると、スポットリクエストが受理されます。Amazon EC2 がスポットインスタンスを起動しますが、これには数分かかる場合があります。中断状態にあるスポットインスタンスが、休止または停止された場合、リクエストが再度受理できるようになるかキャンセルされるまで同じ状態が維持されます。


| ステータスコード | リクエストの状態 | インスタンスの状態 | 
| --- | --- | --- | 
|  fulfilled  |  active  |  pending → running  | 
|  fulfilled  |  active  |  stopped → running  | 

スポットインスタンスを停止すると、そのインスタンスを再起動できるようになるか、リクエストがキャンセルされるまで、スポットリクエストは `marked-for-stop` または `instance-stopped-by-user` 状態になります。


| ステータスコード | リクエストの状態 | インスタンスの状態 | 
| --- | --- | --- | 
|  marked-for-stop  | active |  stopping  | 
|  30  |  disabled または cancelled²  |  stopped  | 

¹ スポットインスタンスを停止するか、そのインスタンスからシャットダウンコマンドを実行すると、インスタンスは `instance-stopped-by-user` 状態になります。インスタンスを停止した後はインスタンスを再起動できるようになります。再起動時に、スポットインスタンスリクエストは `pending-evaluation` 状態に戻り、制約事項が満たされると Amazon EC2 によって新しいスポットインスタンスが起動されます。

² スポットインスタンスを停止して、リクエストをキャンセルしていない場合にはスポットリクエストの状態は `disabled` になります。スポットインスタンスが停止しており、リクエストの有効期限が切れている場合、リクエストの状態は `cancelled` になります。

**受理済み終了**  
インスタンスタイプで使用可能なキャパシティがあり、お客様がインスタンスを終了しない限り、スポットインスタンスの実行は続行されます。Amazon EC2 でスポットインスタンスを終了する必要がある場合、スポットリクエストは終了状態になります。リクエストはお客様がスポットリクエストをキャンセルした場合や、スポットインスタンス を終了した場合も、終了状態になります。


| ステータスコード | リクエストの状態 | インスタンスの状態 | 
| --- | --- | --- | 
|  request-canceled-and-instance-running  |  cancelled  |  running  | 
|  marked-for-stop  |  active  |  running  | 
|  marked-for-termination  |  active  |  running  | 
|  instance-stopped-by-price  |  disabled  |  stopped  | 
|  instance-stopped-by-user  |  disabled  |  stopped  | 
|  instance-stopped-no-capacity  |  disabled  |  stopped  | 
|  instance-terminated-by-price  |  closed (ワンタイム)、open (永続)  |  terminated  | 
|  instance-terminated-by-schedule  |  closed  |  terminated  | 
|  instance-terminated-by-service  |  cancelled  |  terminated  | 
|  instance-terminated-by-user  |  closed または cancelled¹  |  terminated  | 
|  instance-terminated-no-capacity  |  closed (ワンタイム)、open (永続)  |  running †  | 
|  instance-terminated-no-capacity  |  closed (ワンタイム)、open (永続)  |  terminated  | 
|  instance-terminated-launch-group-constraint  |  closed (ワンタイム)、open (永続)  |  terminated  | 

¹ インスタンスを終了したが、リクエストをキャンセルしていない場合、リクエストの状態は `closed` になります。インスタンスを終了し、リクエストをキャンセルする場合、リクエストの状態は `cancelled` になります。スポットリクエストをキャンセルする前にスポットインスタンスを終了した場合でも、そのスポットインスタンスの終了が Amazon EC2 によって検出されるまでに遅延が生じることがあります。この場合、リクエストの状態は `closed` または `cancelled` となります。

† Amazon EC2 が容量を戻す必要がある場合にスポットインスタンスに割り込み、かつ**、インスタンスが割り込み時に終了**するように設定されている場合、ステータスはすぐに `instance-terminated-no-capacity` に設定されます (`marked-for-termination` には設定されていません)。ただし、インスタンスはインスタンスがスポットインスタンスの中断通知を受信した 2 分間を反映して、2 分間 `running` 状態のままになります。2 分後、インスタンスの状態は `terminated` に設定されます。

**中断実験**  
AWS Fault Injection Service を使用してスポットインスタンスの中断を開始すると、スポットインスタンス上のアプリケーションがどのように応答するかをテストできます。AWS FIS がスポットインスタンスを停止すると、スポットリクエストは `marked-for-stop-by-experiment` 状態になり、次に `instance-stopped-by-experiment` 状態になります。AWS FIS によってスポットインスタンスが終了した場合、スポットリクエストは `instance-terminated-by-experiment` 状態になります。詳細については「[スポットインスタンスを中断させる](initiate-a-spot-instance-interruption.md)」を参照してください。


| ステータスコード | リクエストの状態 | インスタンスの状態 | 
| --- | --- | --- | 
| marked-for-stop-by-experiment | active | running | 
| instance-stopped-by-experiment | disabled | stopped | 
| instance-terminated-by-experiment | closed | terminated | 

**永続リクエスト**  
スポットリクエストが永続リクエストであり、関連するスポットインスタンスが (ユーザーまたは Amazon EC2 によって) 終了された場合にはそのリクエストは `pending-evaluation` 状態に戻るので、制約事項が満たされた後に Amazon EC2 は新しいスポットインスタンスを起動できます。

# スポットインスタンスリクエストをタグ付けする
<a name="concepts-spot-instances-request-tags"></a>

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

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

タグの仕組みの詳細については[Amazon EC2 リソースのタグ付け](Using_Tags.md)を参照してください。

**Topics**
+ [前提条件](#tag-spot-request-prereqs)
+ [新しいスポットインスタンスリクエストにタグを付ける](#tag-new-spot-instance-request)
+ [既存のスポットインスタンスリクエストにタグ付けをする](#tag-existing-spot-instance-request)
+ [スポットインスタンスリクエストのタグを表示する](#view-spot-instance-request-tags)

## 前提条件
<a name="tag-spot-request-prereqs"></a>

リソースにタグ付けする許可をユーザーに付与します。IAM ポリシーとサンプルポリシーの詳細については[例: リソースのタグ付け](ExamplePolicies_EC2.md#iam-example-taggingresources)を参照してください。

作成する IAM ポリシーはスポットインスタンスリクエストの作成に使用する方法によって決まります。
+ インスタンスの起動ウィザードまたは `run-instances` を使用して スポットインスタンス をリクエストする場合は[To grant a user the permission to tag resources when using the launch instance wizard or run-instances](#iam-run-instances)を参照してください。
+ スポットインスタンスをリクエストするために `request-spot-instances`コマンドを使用する場合は[To grant a user the permission to tag resources when using request-spot-instances](#iam-request-spot-instances)を参照してください。

**インスタンス起動ウィザードまたは run-instances を使用する場合にリソースにタグを付けるための許可をユーザーに付与するには**  
以下を含む IAM ポリシーを作成します。
+ `ec2:RunInstances` アクション。これにより、インスタンスを起動するための許可がユーザーに付与されます。
+ `Resource` で、`spot-instances-request` を指定します。これによりユーザーはスポットインスタンスを要求するためのスポットインスタンスリクエストを作成できるようになります。
+ `ec2:CreateTags` アクション。これにより、タグを作成する許可がユーザーに付与されます。
+ `Resource` で、`*` を指定します。これにより、ユーザーはインスタンスの起動時に作成されるすべてのリソースにタグを付けることを許可されます。

------
#### [ JSON ]

****  

```
{
    "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` リソースをどのように評価するのかについて、注意を払う必要があります。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 ポリシー (スポットインスタンスリクエストでサポートされていないポリシーを含む) の例については[スポットインスタンス の操作](ExamplePolicies_EC2.md#iam-example-spot-instances)を参照してください。

**request-spot-instances を使用する場合でリソースにタグを付けるための許可をユーザーに付与するには**  
以下を含む IAM ポリシーを作成します。
+ `ec2:RequestSpotInstances` アクション。これにより、スポットインスタンスリクエストを作成する許可がユーザーに付与されます。
+ `ec2:CreateTags` アクション。これにより、タグを作成する許可がユーザーに付与されます。
+ `Resource` で、`spot-instances-request` を指定します。これにより、ユーザーはスポットインスタンスリクエストにのみタグを付けることが許可されます。

------
#### [ JSON ]

****  

```
{
    "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/*"
        }
    ]
}
```

------

## 新しいスポットインスタンスリクエストにタグを付ける
<a name="tag-new-spot-instance-request"></a>

AWS CLI および PowerShell の例では、スポットインスタンスリクエストを次のように設定します。
+ `ResourceType` で、`spot-instances-request` を指定します。別の値を指定すると、スポットインスタンスリクエストは失敗します。
+ `Tags` で、キーと値のペアを指定します。キーと値のペアは複数指定できます。

------
#### [ Console ]

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

1. [スポットインスタンスを管理する](using-spot-instances-request.md)の手順に従います。

1. タグを追加するには[**タグの追加**] ページで [**タグの追加**] をクリックし、タグのキーと値を入力してください。追加するタグごとに [**別のタグを追加**] をクリックしてください。

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

1. 必須フィールドにすべて入力してスポットインスタンスリクエストを作成した後、[**起動**] を選択してください。詳細については、「[スポットインスタンスを管理する](using-spot-instances-request.md)」を参照してください。

------
#### [ AWS CLI ]

**新しいスポットインスタンスリクエストにタグを付けるには**  
[request-spot-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/request-spot-instances.html) コマンドを `--tag-specification` オプションと共に使用します。

このタグ仕様は、スポットインスタンスリクエストに `Environment=Production` と `Cost-Center=123` の 2 つのタグを追加します。

```
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}]'
```

------
#### [ PowerShell ]

**新しいスポットインスタンスリクエストにタグを付けるには**  
[Request-EC2SpotInstance](https://docs.aws.amazon.com/powershell/latest/reference/items/Request-EC2SpotInstance.html) コマンドレットを `-TagSpecification` パラメータと共に使用します。

```
-TagSpecification $tagspec
```

タグ仕様は次のように定義されます。スポットインスタンスリクエストに `Environment=Production` と `Cost-Center=123` の 2 つのタグを追加します。

```
$tag1 = @{Key="Environment"; Value="Production"}
$tag2 = @{Key="Cost-Center"; Value="123"}
$tagspec = New-Object Amazon.EC2.Model.TagSpecification
$tagspec.ResourceType = "spot-instances-request"
$tagspec.Tags = @($tag1,$tag2)
```

------

## 既存のスポットインスタンスリクエストにタグ付けをする
<a name="tag-existing-spot-instance-request"></a>

------
#### [ Console ]

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

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

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**Spot Requests**] を選択してください。

1. スポットインスタンスリクエストを選択してください。

1. [**Tags (タグ)**] タブを選択してから、[**タグの作成**] を選択してください。

**コンソールを使用して既存のスポットインスタンスにタグを付けるには**  
スポットインスタンスリクエストによってスポットインスタンスを起動した後で、コンソールを使用して、そのインスタンスにタグを追加できます。詳細については、「[コンソールを使用してタグを追加する](Using_Tags_Console.md#adding-or-deleting-tags)」を参照してください。

------
#### [ AWS CLI ]

**既存のスポットインスタンスリクエストまたはスポットインスタンスにタグを付けるには**  
[create-tags](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-tags.html) コマンドを使用して、既存のリソースにタグを付けます。次の例では、既存のスポットインスタンスリクエストとスポットインスタンスに、`purpose=test` のタグを付けています。

```
aws ec2 create-tags \
    --resources sir-0e54a519c9EXAMPLE i-1234567890abcdef0 \
    --tags Key=purpose,Value=test
```

------
#### [ PowerShell ]

**既存のスポットインスタンスリクエストまたはスポットインスタンスにタグを付けるには**  
[New-EC2Tag](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Tag.html) コマンドレットを使用します。次の例では、既存のスポットインスタンスリクエストとスポットインスタンスに、タグ `purpose=test` を追加しています。

```
New-EC2Tag `
    -Resource sir-0e54a519c9EXAMPLE, i-1234567890abcdef0 `
    -Tag @{Key="purpose"; Value="test"}
```

------

## スポットインスタンスリクエストのタグを表示する
<a name="view-spot-instance-request-tags"></a>

------
#### [ Console ]

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

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

1. ナビゲーションペインで、[**Spot Requests**] を選択してください。

1. スポットインスタンスリクエストを選択してから、[**タグ**] タブを選択してください。

------
#### [ AWS CLI ]

**スポットインスタンスリクエストのタグを詳細表示するには**  
[describe-spot-instance-requests](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-spot-instance-requests.html) コマンドを使用して、指定したスポットインスタンスリクエストの設定を表示します。この内容にはリクエストに指定されたタグがすべて含まれます。

```
aws ec2 describe-spot-instance-requests \
    --spot-instance-request-ids sir-0e54a519c9EXAMPLE \
    --query "SpotInstanceRequests[*].Tags"
```

以下は出力の例です。

```
[
    [
        {
            "Key": "Environment",
            "Value": "Production"
        },
        {
            "Key": "Department",
            "Value": "101"
        }
    ]
]
```

------
#### [ PowerShell ]

**スポットインスタンスリクエストのタグを詳細表示するには**  
[Get-EC2SpotInstanceRequest](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2SpotInstanceRequest.html) コマンドレットを使用します。

```
(Get-EC2SpotInstanceRequest `
    -SpotInstanceRequestId sir-0e54a519c9EXAMPLE).Tags
```

以下は出力の例です。

```
Key         Value
---         -----
Environment Production
Department  101
```

------

# スポットインスタンスリクエストをキャンセルする
<a name="using-spot-instances-cancel"></a>

スポットインスタンスリクエストが不要になった場合にはそれをキャンセルすることができます。`open`、`active`、または `disabled` のスポットインスタンスリクエストのみキャンセルできます。
+ スポットインスタンスリクエストがまだ受理されておらず、インスタンスが起動されていない段階ではそのリクエストは `open` 状態にあります。
+ スポットインスタンスリクエストが受理され、スポットインスタンスの起動が完了している場合、そのスポットインスタンスリクエストは `active` 状態になります。
+ ユーザーがスポットインスタンスを停止した場合、スポットインスタンスリクエストは `disabled` 状態になります。

スポットインスタンスリクエストの状態が `active` で、関連付けられたスポットインスタンスが実行されている場合、そのリクエストをキャンセルしても、関連するインスタンスは終了しません。スポットインスタンスの終了の詳細については[スポットインスタンスを終了する](using-spot-instances-request.md#terminating-a-spot-instance)を参照してください。。

------
#### [ Console ]

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

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

1. ナビゲーションペインで、[**Spot Requests**] を選択してください。

1. スポットインスタンスリクエストを選択してください。

1. [**アクション**]、[**リクエストのキャンセル**] の順にクリックしてください。

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

------
#### [ AWS CLI ]

**スポットインスタンスリクエストをキャンセルするには**  
次の [cancel-spot-instance-requests](https://docs.aws.amazon.com/cli/latest/reference/ec2/cancel-spot-instance-requests.html) コマンドを使用します。

```
aws ec2 cancel-spot-instance-requests --spot-instance-request-ids sir-0e54a519c9EXAMPLE
```

------
#### [ PowerShell ]

**スポットインスタンスリクエストをキャンセルするには**  
[Stop-EC2SpotInstanceRequest](https://docs.aws.amazon.com/powershell/latest/reference/items/Stop-EC2SpotInstanceRequest.html) コマンドレットを使用します。

```
Stop-EC2SpotInstanceRequest -SpotInstanceRequestId sir-0e54a519c9EXAMPLE
```

------

# スポットインスタンスを管理する
<a name="using-spot-instances-request"></a>

Amazon EC2 はキャパシティが利用可能であるときにスポットインスタンスを起動します。スポットインスタンスは中断されるか、ユーザーにより終了されるまで実行されます。

**Topics**
+ [スポットインスタンスの検索](#using-spot-instances-running)
+ [特定のリクエストで起動したインスタンスを検索する](#find-request-spot-instances)
+ [スポットインスタンスを停止する](#stopping-a-spot-instance)
+ [スポットインスタンスを開始する](#starting-a-spot-instance)
+ [スポットインスタンスを終了する](#terminating-a-spot-instance)

## スポットインスタンスの検索
<a name="using-spot-instances-running"></a>

スポットインスタンスはオンデマンドインスタンスとともに、コンソールの **[インスタンス]** ページに表示されます。以下の手順で、スポットインスタンスを検索します。

------
#### [ Console ]

**スポットインスタンスを検索するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. すべてのスポットインスタンスを検索するには検索ペインで **[インスタンスライフサイクル=スポット]** を選択してください。

1. インスタンスがスポットインスタンスであることを確認するにはインスタンスを選択し、**[詳細]** タブを選択し、**[ライフサイクル]** の値を確認します。スポットインスタンスの値は `spot` で、オンデマンドインスタンスの値は `normal` です。

------
#### [ AWS CLI ]

**スポットインスタンスを検索するには**  
次の [describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html) コマンドを使用します。

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

**インスタンスがスポットインスタンスであるかどうかを確認するには**  
次の [describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html) コマンドを使用します。

```
aws ec2 describe-instances \
    --instance-ids i-1234567890abcdef0 \
    --query "Reservations[*].Instances[*].InstanceLifecycle" \
    --output text
```

出力が `spot` の場合、そのインスタンスはスポットインスタンスです。何も出力されない場合、インスタンスはオンデマンドインスタンスです。

------
#### [ PowerShell ]

**スポットインスタンスを検索するには**  
[Get-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html) コマンドレットを使用します。

```
Get-EC2Instance -Filter @{Name="instance-lifecycle"; Values="spot"}
```

**インスタンスがスポットインスタンスであるかどうかを確認するには**  
[Get-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html) コマンドレットを使用します。

```
(Get-EC2Instance -InstanceId i-1234567890abcdef0).Instances.InstanceLifecycle
```

出力が `Spot` の場合、そのインスタンスはスポットインスタンスです。何も出力されない場合、インスタンスはオンデマンドインスタンスです。

------

## 特定のリクエストで起動したインスタンスを検索する
<a name="find-request-spot-instances"></a>

次の手順に従って、特定のスポットインスタンスまたはスポットフリートリクエストから起動されたスポットインスタンスを検索します。

------
#### [ Console ]

**リクエストのスポットインスタンスを検索するには**

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

1. ナビゲーションペインで、[**Spot Requests**] を選択してください。リストにはスポットインスタンスリクエストとスポットフリートリクエストの両方が含まれます。

1. スポットインスタンスリクエストが受理された場合、**[キャパシティ]** がスポットインスタンスの ID となります。スポットフリートの場合、[**容量**] はリクエストされた容量のうち受理された量を示します。スポットフリートのインスタンスの ID を表示するには拡張矢印を選択するか、フリートを選択した上で [**インスタンス**] を選択してください。

1. スポットフリートの場合、**[キャパシティ]** はリクエストされた容量のうち受理された量を示します。スポットフリート内のインスタンスの ID を表示するにはフリート ID を選択して詳細ページを開き、**[インスタンス]** ペインを見つけます。

------
#### [ AWS CLI ]

**リクエストのスポットインスタンスを検索するには**  
次の [describe-spot-instance-requests](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-spot-instance-requests.html) コマンドを使用します。

```
aws ec2 describe-spot-instance-requests \
    --spot-instance-request-ids sir-0e54a519c9EXAMPLE \
    --query "SpotInstanceRequests[*].{ID:InstanceId}"
```

出力例を次に示します。

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

------
#### [ PowerShell ]

**リクエストのスポットインスタンスを検索するには**  
[Get-EC2SpotInstanceRequest](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2SpotInstanceRequest.html) コマンドレットを使用します。

```
(Get-EC2SpotInstanceRequest -SpotInstanceRequestId sir-0e54a519c9EXAMPLE).InstanceId
```

------

## スポットインスタンスを停止する
<a name="stopping-a-spot-instance"></a>

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

**注記**  
スポットインスタンスが停止している間、そのインスタンスの属性の一部は変更可能ですが、インスタンスタイプを変更することはできません。  
停止しているスポットインスタンスの使用料またはデータ転送料は課金されませんが、Amazon EBS ボリュームのストレージに対しては課金されます。

**制限事項**
+ スポットインスタンスを停止できるのはそのインスタンスが、`persistent` なスポットインスタンスリクエストから起動された場合だけです。
+ 関連するスポットインスタンスリクエストがキャンセルされている場合はスポットインスタンス を停止することはできません。スポットインスタンスリクエストがキャンセルされた場合はスポットインスタンスを終了することのみ可能です。
+ フリート、起動グループ、またはアベイラビリティーゾーングループの一部であるスポットインスタンスは停止できません。

------
#### [ Console ]

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

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. スポットインスタンスを選択してください。スポットインスタンスのインスタンス ID を保存しなかった場合は「[スポットインスタンスの検索](#using-spot-instances-running)」を参照してください。

1. [**Instance state (インスタンスの状態)**]、[**Stop instance (インスタンスの停止)**] の順に選択してください。

1. 確認を求められたら、[**Stop**] を選択してください。

------
#### [ AWS CLI ]

**スポットインスタンスを停止するには**  
スポットインスタンスを手動で停止するには[stop-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/stop-instances.html) コマンドを使用します。

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

------
#### [ PowerShell ]

**スポットインスタンスを停止するには**  
[Stop-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Stop-EC2Instance.html) コマンドレットを使用します。

```
Stop-EC2Instance -InstanceId i-1234567890abcdef0
```

------

## スポットインスタンスを開始する
<a name="starting-a-spot-instance"></a>

以前に停止したスポットインスタンスは開始することができます。

**前提条件**

スポットインスタンスは次の場合にのみ開始できます。
+ スポットインスタンスを手動で停止している。
+ スポットインスタンスが EBS-backed インスタンスである。
+ スポットインスタンスに使用可能な容量がある。
+ スポット料金が上限価格より低くなっている。

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

スポットインスタンスを開始する手順はオンデマンドインスタンスを開始する手順と似ています。

------
#### [ Console ]

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

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. スポットインスタンスを選択してください。スポットインスタンスのインスタンス ID を保存しなかった場合は「[スポットインスタンスの検索](#using-spot-instances-running)」を参照してください。

1. [**Instance state (インスタンスの状態)**]、[**Start instance (インスタンスの開始)**] の順に選択してください。

------
#### [ AWS CLI ]

**スポットインスタンスを開始するには**  
スポットインスタンスを手動で開始するには[start-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/start-instances.html) コマンドを使用します。

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

------
#### [ PowerShell ]

**スポットインスタンスを開始するには**  
[Start-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Start-EC2Instance.html) コマンドレットを使用します。

```
Start-EC2Instance -InstanceId i-1234567890abcdef0
```

------

## スポットインスタンスを終了する
<a name="terminating-a-spot-instance"></a>

**警告**  
**インスタンスの終了は恒久的で、元に戻すことができません。**  
インスタンスを終了すると、そのインスタンスには接続できなくなり、復元することもできません。アタッチされている Amazon EBS ボリュームで、終了時に削除されるように設定されているものも、すべて恒久的に削除され、復元できません。インスタンスストアボリュームに保存されているデータは、すべて恒久的に失われます。詳細については、「[インスタンスの終了方法](how-ec2-instance-termination-works.md)」を参照してください。  
インスタンスを終了する前に、終了後も保持する必要があるすべてのデータを永続的ストレージにバックアップしたことを確認してください。

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

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

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

詳細については、「[スポットインスタンスリクエストをキャンセルする](using-spot-instances-cancel.md)」を参照してください。

------
#### [ Console ]

**スポットインスタンスを手動で終了するには**

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

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. スポットインスタンスを選択してください。スポットインスタンスのインスタンス ID を保存しなかった場合は「[スポットインスタンスの検索](#using-spot-instances-running)」を参照してください。

1. **[インスタンスの状態]**、**[インスタンスの終了 (削除)]** の順に選択してください。

1. 確認を求めるメッセージが表示されたら、**[終了 (削除)]** を選択してください。

------
#### [ AWS CLI ]

**スポットインスタンスを手動で終了するには**  
スポットインスタンスを手動で終了するには[terminate-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/terminate-instances.html) コマンドを使用します。

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

------
#### [ PowerShell ]

**スポットインスタンスを手動で終了するには**  
[Remove-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Remove-EC2Instance.html) コマンドレットを使用します。

```
Remove-EC2Instance -InstanceId i-1234567890abcdef0
```

------

# スポットインスタンスの中断。
<a name="spot-interruptions"></a>

Amazon EC2 で再びキャパシティーが必要になったときは予備の EC2 キャパシティーで スポットインスタンス を起動してキャパシティーを戻すのと引き換えに、大幅な割引を受けることができます。Amazon EC2 がスポットインスタンスを再要求した場合、このイベントを*スポットインスタンスの中断*と呼びます。

スポットインスタンス に対する需要は刻一刻と大幅に変化する可能性があります。また、スポットインスタンス の可用性も利用可能な未使用の EC2 インスタンスの数に応じて大きく変化する可能性があります。スポットインスタンスが中断される可能性は常に存在します。Amazon EC2 が スポットインスタンス を中断する場合、次のような理由が考えられます。

**容量**  
Amazon EC2 は必要なときにスポットインスタンスを中断できます。EC2 は主に容量を再利用するためにインスタンスを再利用しますが、ホストのメンテナンスやハードウェアの使用停止などの他の理由でも発生する可能性があります。

**価格**  
スポット料金が、上限料金を超えています。  
上限料金はスポットリクエストで指定できます。ただし、上限料金を指定すると、指定しなかった場合に比べ、インスタンスの中断が増えます。

**制約**  
スポットリクエストに、起動グループやアベイラビリティーゾーングループなどの制約を含んでいて、その制約条件が満たされなくなった場合にはスポットインスタンスはグループとして終了されます。

Amazon EC2 によりスポットインスタンスが中断される際にはスポットリクエストの作成時に指定した中断動作に応じて、インスタンスが終了、停止、または休止されます。

**Topics**
+ [中断動作](interruption-behavior.md)
+ [中断に対する準備](prepare-for-interruptions.md)
+ [中断させる](initiate-a-spot-instance-interruption.md)
+ [スポットインスタンスの中断通知](spot-instance-termination-notices.md)
+ [中断した スポットインスタンス の検索](finding-an-interrupted-Spot-Instance.md)
+ [Amazon EC2 がスポットインスタンスを終了しているかどうかを判別する](BidEvictedEvent.md)
+ [請求](billing-for-interrupted-spot-instances.md)

# スポットインスタンスの中断の動作
<a name="interruption-behavior"></a>

スポットリクエストの作成時に中断動作を指定できます。指定できる中断動作は以下のとおりです。
+ [停止](#stop-spot-instances)
+ [休止](#hibernate-spot-instances)
+ [終了](#terminate-interrupted-spot-instances)

デフォルトの動作ではAmazon EC2 は中断時にスポットインスタンスを終了します。

## スポットインスタンス の中断の停止
<a name="stop-spot-instances"></a>

中断時に Amazon EC2 がスポットインスタンスを停止するように指定できます。スポットインスタンスのリクエストのタイプは `persistent` である必要があります。スポットインスタンスリクエストで起動グループを指定することはできません。EC2 フリートまたはスポットフリートの場合、リクエストタイプは `maintain` である必要があります。

**考慮事項**
+ 中断され停止したスポットインスタンスを再起動できるのは Amazon EC2 だけです。
+ `persistent` スポットインスタンスリクエストで起動されたスポットインスタンスについては停止したインスタンスと同じアベイラビリティーゾーンと同じインスタンスタイプで利用可能な容量がある場合に、Amazon EC2 がその停止したインスタンスを再起動することができます (同じ起動仕様を使用する必要があります)。
+ スポットインスタンスが停止している間、そのインスタンスの属性の一部は変更可能ですが、インスタンスタイプを変更することはできません。デタッチまたは削除された EBS ボリュームはスポットインスタンスが開始した際にアタッチされません。ユーザーがルートボリュームをデタッチし、Amazon EC2 がスポットインスタンスの開始を試みると、そのインスタンスは開始に失敗し、停止したインスタンスが Amazon EC2 により終了されます。
+ ユーザーは停止中のスポットインスタンスを終了できます。
+ ユーザーがスポットインスタンスリクエスト、EC2 フリート、またはスポットフリートをキャンセルすると、Amazon EC2 はそれらに関連付けられていて停止中のスポットインスタンスを終了します。
+ 中断されたスポットインスタンスの停止中は維持されている EBS ボリュームに対してのみ課金されます。EC2 フリートおよびスポットフリートでは停止中のインスタンスの数が多い場合、アカウント内の EBS ボリューム数の上限を超えることがあります。スポットインスタンスが中断されたときの料金の詳細については「[中断された スポットインスタンス の請求](billing-for-interrupted-spot-instances.md)」を参照してください。
+ インスタンスを停止することの影響について理解しておいてください。インスタンスが停止している場合に何が行われるかの詳細については「[インスタンスの状態の違い](ec2-instance-lifecycle.md#lifecycle-differences)」を参照してください。

## 中断した スポットインスタンス の休止
<a name="hibernate-spot-instances"></a>

中断時に Amazon EC2 がスポットインスタンスを休止するように指定できます。詳細については「[Amazon EC2 インスタンスの休止](Hibernate.md)」を参照してください。

Amazon EC2 ではオンデマンドインスタンスで現在利用できるのと同じ休止状態をスポットインスタンスでも提供するようになりました。サポートの範囲が広がり、スポットインスタンスの休止では新たに以下がサポートされています。
+ [さらに多くの AMI をサポート](hibernating-prerequisites.md#hibernation-prereqs-supported-amis)
+ [さらに多くのインスタンスファミリーをサポート](hibernating-prerequisites.md#hibernation-prereqs-supported-instance-families)
+ [ユーザー起動の休止](hibernating-instances.md)

## 中断したスポットインスタンスの終了
<a name="terminate-interrupted-spot-instances"></a>

Amazon EC2 によりスポットインスタンスが中断される場合は停止や休止などの別の中断動作を指定しない限り、デフォルトでインスタンスが終了します。詳細については「[Amazon EC2 インスタンスを終了する](terminating-instances.md)」を参照してください。

# スポットインスタンスの中断に対する準備
<a name="prepare-for-interruptions"></a>

スポットインスタンス に対する需要は刻一刻と大幅に変化する可能性があります。また、スポットインスタンス の可用性も利用可能な未使用の EC2 インスタンスの数に応じて大きく変化する可能性があります。スポットインスタンスが中断される可能性は常に存在します。したがって、アプリケーションでスポットインスタンスの中断に対して準備する必要があります。

スポットインスタンスの中断に備えて、以下のベストプラクティスに従うことをお勧めします。
+ Auto Scaling グループを使用してスポットリクエストを作成します。スポットインスタンスが中断された場合、Auto Scaling グループは代替インスタンスを自動的に起動します。詳細については「Amazon EC2 Auto Scaling ユーザーガイド」の「[複数のインスタンスタイプと購入オプションを使用する Auto Scaling グループ](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-mixed-instances-groups.html)」を参照してください。**
+ 必要なソフトウェア設定を含む Amazon マシンイメージ (AMI) を使用することにより、リクエストが受理されたらすぐにインスタンスを実行できるように、準備が完了していることを確認します。また、ユーザーデータを使用して起動時にコマンドを実行することもできます。
+ インスタンスストアボリュームのデータはインスタンスの停止または終了に伴って失われます。インスタンスストアボリュームの重要なデータを、Amazon S3、Amazon EBS、または Amazon DynamoDB などのより永続的なストレージにバックアップします。
+ スポットインスタンスの終了の影響を受けない場所に、定期的に重要なデータを保存します。例えば、Amazon S3、Amazon EBS、または DynamoDB を使用できます。
+ 作業を頻繁に保存できるように、作業を (Grid、Hadoop、キューベースのアーキテクチャを使用して) 細かいタスクに分割するか、チェックポイントを使用します。
+ Amazon EC2 はスポットインスタンスでの中断のリスクが高まった場合に、再調整に関する推奨事項シグナルをそのインスタンスに対し送信します。再調整に関する推奨事項シグナルを利用すると、スポットインスタンス中断 2 分前の通知を待つことなく、スポットインスタンスの中断を事前に管理することができます。詳細については[EC2 インスタンスの再調整に関する推奨事項](rebalance-recommendations.md)を参照してください。
+ スポットインスタンスのステータスをモニタリングするにはスポットインスタンス中断 2 分前の通知を使用します。詳細については[スポットインスタンスの中断通知](spot-instance-termination-notices.md)を参照してください。
+ ではこの警告はできるだけ早く提供するよう努めていますが、警告が提供される前にスポットインスタンスが中断されることもあり得ます。再調整に関する推奨事項シグナルと中断通知をモニタリングしている場合でも、予期しないインスタンスの終了をアプリケーションが適切に処理できることを確認します。オンデマンドインスタンスを使用してアプリケーションを実行し、オンデマンドインスタンスを自分で終了することでこれを確認できます。
+ AWS Fault Injection Service で制御された故障注入実験を実行し、スポットインスタンスが中断されたときのアプリケーションの応答をテストします。詳細については「AWS Fault Injection Service ユーザーガイド」の「[チュートリアル: AWS FIS を使用してスポットインスタンスの中断をテストする](https://docs.aws.amazon.com/fis/latest/userguide/fis-tutorial-spot-interruptions.html)」を参照してください。

# スポットインスタンスを中断させる
<a name="initiate-a-spot-instance-interruption"></a>

Amazon EC2 コンソールでスポットインスタンスリクエストまたはスポットフリートリクエストを選択してスポットインスタンスの中断を実行すると、スポットインスタンス上のアプリケーションでの中断に関する処理をテストできます。スポットインスタンスの中断を開始すると、最初にそのスポットインスタンスの中断が 2 分後に行われることが Amazon EC2 から通知され、2 分経過後にインスタンスが中断されます。

スポットインスタンスの中断を処理するための、基盤となるサービスは AWS Fault Injection Service (AWS FIS) です。AWS FIS の詳細については「[AWS Fault Injection Service](https://aws.amazon.com/fis/)」を参照してください。

**注記**  
中断動作は`terminate`、`stop`、および `hibernate` です。中断動作に対し `hibernate` を設定してスポットインスタンスの中断を開始すると、休止プロセスがすぐに開始されます。

スポットインスタンスの中断はすべての AWS リージョン (アジアパシフィック (ジャカルタ)、アジアパシフィック (大阪)、中国 (北京)、中国 (寧夏)、および中東 (UAE) を除く) で利用することができます。

**Topics**
+ [スポットインスタンスを中断させる](#initiate-interruption)
+ [スポットインスタンスの中断を検証する](#spot-interruptions-verify-result)
+ [クォータ](#fis-quota-for-spot-instance-interruption)

## スポットインスタンスを中断させる
<a name="initiate-interruption"></a>

EC2 コンソールを使用すると、スポットインスタンスの中断をすばやく開始できます。スポットインスタンスリクエストを選択すると、1 つのスポットインスタンスの中断を開始できます。スポットフリートリクエストを選択すると、複数のスポットインスタンスの中断を一度に開始できます。

より高度な実験によりスポットインスタンスの中断をテストするにはAWS FIS コンソールで独自の実験を作成します。

**EC2 コンソールを使用してスポットインスタンスリクエストで 1 つのスポットインスタンスの中断を開始するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、**[Spot Requests]** (スポットリクエスト) を選択してください。

1. スポットインスタンスリクエストを選択した後、**[Actions]** (アクション)、**[Initiate interruption]** (中断を開始) の順に選択してください。複数のスポットインスタンスリクエストを選択して中断を開始することはできません。

1. **[Initiate Spot Instance interruption]** (スポットインスタンスの中断を開始する) ダイアログボックスにある、**[Service access]** (サービスアクセス) で、デフォルトのロールか、既存のロールを選択してください。既存のロールを選択するには**[既存のサービスロールを使用]** を選択した後、**[IAM ロール]** で使用するロールを選択してください。

1. スポットインスタンスの中断を開始する準備ができたら、**[Initiate interruption]** (中断を開始) を選択してください。

**EC2 コンソールを使用して、スポットフリートリクエストで 1 つまたは複数のスポットインスタンスの中断を開始するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、**[Spot Requests]** (スポットリクエスト) を選択してください。

1. スポットフリートリクエストを選択した後、**[アクション]**、**[中断を開始]** の順に選択してください。複数のスポットフリートリクエストを選択して中断を開始することはできません。

1. **[スポットインスタンスの数を指定]** ダイアログボックスの **[中断するインスタンスの数]** に、中断するスポットインスタンスの数を入力し、**[確認]** を選択してください。
**注記**  
この数はフリート内のスポットインスタンス数や、1 回の実験で AWS FIS が中断できるスポットインスタンス数の[クォータ](#fis-quota-for-spot-instance-interruption)を超えることはできません。

1. **[Initiate Spot Instance interruption]** (スポットインスタンスの中断を開始する) ダイアログボックスにある、**[Service access]** (サービスアクセス) で、デフォルトのロールか、既存のロールを選択してください。既存のロールを選択するには**[既存のサービスロールを使用]** を選択した後、**[IAM ロール]** で使用するロールを選択してください。

1. スポットインスタンスの中断を開始する準備ができたら、**[Initiate interruption]** (中断を開始) を選択してください。

**AWS FIS コンソールを使用して、スポットインスタンスの中断をテストするためのより高度な実験を作成するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、**[Spot Requests]** (スポットリクエスト) を選択してください。

1. **[Actions]** (アクション)、**[Create advanced experiments]** (高度な実験を作成) の順に選択してください。

   AWS FIS コンソールが開きます。詳細については「*AWS Fault Injection Service ユーザーガイド*」の「[Tutorial: Test Spot Instance interruptions using AWS FIS](https://docs.aws.amazon.com/fis/latest/userguide/fis-tutorial-spot-interruptions.html)」を参照してください。

## スポットインスタンスの中断を検証する
<a name="spot-interruptions-verify-result"></a>

中断を開始すると、以下のことが発生します。
+ 対象のスポットインスタンスに対し、[インスタンスの再調整に関する推奨事項](rebalance-recommendations.md)が送信されます。
+ AWS FIS がインスタンスを中断する 2 分前に、[スポットインスタンスの中断の通知](spot-instance-termination-notices.md)が発行されます。
+ 2 分経過後に、スポットインスタンスが中断されます。
+ AWS FIS によって停止されたスポットインスタンスはユーザーにより再起動されるまで停止状態を維持します。

**中断を開始した後に、インスタンスが中断されていることを検証するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、**[スポットリクエスト]** を開いてから、別のブラウザタブまたはウィンドウで**[インスタンス]** を開きます。

1. **[スポットリクエスト]** で、スポットインスタンスリクエストまたはスポットフリートリクエストを選択してください。初期ステータスは`fulfilled` です。インスタンスが中断されると、その中断の動作に応じて、以下のようにステータスが変化します。
   + `terminate` – ステータスが `instance-terminated-by-experiment` に変わります。
   + `stop` – ステータスが `marked-for-stop-by-experiment` に変わり、その後 `instance-stopped-by-experiment` に変わります。

1. **インスタンス**で、スポットインスタンスを選択してください。初期ステータスは`Running` です。ユーザーがスポットインスタンスの中断通知を受け取り、2 分が経過すると、その中断の動作に応じて、以下のようにステータスが変化します。
   + `stop` – ステータスが `Stopping` に変わり、その後 `Stopped` に変わります。
   + `terminate` – ステータスが `Shutting-down` に変わり、その後 `Terminated` に変わります。

## クォータ
<a name="fis-quota-for-spot-instance-interruption"></a>

AWS アカウント には1 回の実験で AWS FIS が中断できるスポットインスタンス数について、以下のデフォルトクォータがあります。


| 名前 | デフォルト | 引き上げ可能 | 説明 | 
| --- | --- | --- | --- | 
|  aws:ec2:send-spot-instance-interruptions のターゲット SpotInstances  |  サポートされている各リージョン： 5  | あり |  タグを使用してターゲットを特定するときに、aws:ec2:send-spot-instance-interruptions がターゲットにできるスポットインスタンスの実験ごとの最大数。  | 

クォータの引き上げをリクエストできます。詳細については「*Service Quotas ユーザーガイド*」の「[クォータの引き上げのリクエスト](https://docs.aws.amazon.com/servicequotas/latest/userguide/request-quota-increase.html)」を参照してください。

AWS FIS のクォータをすべて表示するには[Service Quotas コンソール](https://console.aws.amazon.com/servicequotas/home)を開きます。ナビゲーションペインで、[**AWS services**] を選択し、**AWS Fault Injection Service** を選択してください。「*AWS Fault Injection Service ユーザーガイド*」で [AWS Fault Injection Service のクォータ](https://docs.aws.amazon.com/fis/latest/userguide/fis-quotas.html)をすべて確認することもできます。

# スポットインスタンスの中断通知
<a name="spot-instance-termination-notices"></a>

*スポットインスタンスの中断通知*はAmazon EC2 がスポットインスタンスを停止または終了する 2 分前に発行される警告です。中断動作として休止状態を指定した場合は中断通知が表示されますが、休止状態プロセスはすぐに開始されるため、2 分間の警告は表示されません。

スポットインスタンスの中断を適切に処理する最善の方法は耐障害性のあるアプリケーションを設計することです。これを実現するにはスポットインスタンスの中断通知を活用します。中断通知は 5 秒ごとに確認することをお勧めします。

この中断通知は、EventBridge イベントとして、およびスポットインスタンス上の[インスタンスメタデータ](ec2-instance-metadata.md)の項目として提供されます。中断通知はベストエフォートベースで出力されます。

## EC2 Spot Instance Interruption Warning イベント
<a name="ec2-spot-instance-interruption-warning-event"></a>

Amazon EC2 がスポットインスタンスを中断しようとすると、実際の中断が起こる 2 分前にイベントが発生します (休止の場合は即時的にその状態に移行するため、中断通知は発行されますが 2 分前には提供されず、このイベントの対象にはなりません)。このイベントは Amazon EventBridge で検出できます。EventBridge イベントの詳細については「[Amazon EventBridge ユーザーガイド](https://docs.aws.amazon.com/eventbridge/latest/userguide/)」を参照してください。イベントルールの作成および使用方法の詳細な例については[Taking Advantage of Amazon EC2 スポットインスタンスInterruption Notices](https://aws.amazon.com/blogs/compute/taking-advantage-of-amazon-ec2-spot-instance-interruption-notices/)を参照してください。

以下に、スポットインスタンスでの中断イベントの例を示します。`instance-action` の可能な値は `hibernate`、`stop`、`terminate` です。

```
{
    "version": "0",
    "id": "12345678-1234-1234-1234-123456789012",
    "detail-type": "EC2 Spot Instance Interruption Warning",
    "source": "aws.ec2",
    "account": "123456789012",
    "time": "yyyy-mm-ddThh:mm:ssZ",
    "region": "us-east-2",
    "resources": ["arn:aws:ec2:us-east-2a:instance/i-1234567890abcdef0"],
    "detail": {
        "instance-id": "i-1234567890abcdef0",
        "instance-action": "action"
    }
}
```

**注記**  
スポットインスタンスでの中断イベントの ARN 形式は `arn:aws:ec2:availability-zone:instance/instance-id` です。この形式は[EC2 リソース ARN 形式](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html#amazonec2-resources-for-iam-policies)とは異なります。

## instance-action
<a name="instance-action-metadata"></a>

`instance-action` 項目はアクションおよびアクションのおよその発生時刻 (UTC) を指定します。

Amazon EC2 が、スポットインスタンスを停止または終了のためにマークした場合、[インスタンスメタデータ](ec2-instance-metadata.md)内に `instance-action` 項目が含まれるようになります。そうでない場合、これは存在しません。次のように、インスタンスメタデータサービスバージョン 2 (IMDSv2) を使用して、`instance-action` を取得できます。

------
#### [ Linux ]

```
TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \
    && curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/spot/instance-action
```

------
#### [ Windows ]

```
[string]$token = Invoke-RestMethod `
    -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} `
    -Method PUT -Uri http://169.254.169.254/latest/meta-data/spot/instance-action
```

------

 次の出力例ではこのインスタンスの停止時刻を示します。

```
{"action": "stop", "time": "2017-09-18T08:22:00Z"}
```

次の出力例ではこのインスタンスの終了時刻を示します。

```
{"action": "terminate", "time": "2017-09-18T08:22:00Z"}
```

Amazon EC2 がインスタンスを停止または終了する準備をしていない場合や、お客様が自分でインスタンスを終了した場合、`instance-action` はインスタンスメタデータ内に存在せず、取得しようとした場合、HTTP 404 エラーが出力されます。

## termination-time
<a name="termination-time-metadata"></a>

`termination-time` 項目はインスタンスがシャットダウン信号を受信するだいたいの時刻 (UTC) を指定します。

**注記**  
この項目は下位互換性のために維持されています。代わりに `instance-action` を使用してください。

スポットインスタンスに、Amazon EC2 によって (中断動作が `terminate` に設定されているスポットインスタンスの中断により、または永続的なスポットインスタンスリクエストのキャンセルにより) 終了のマークが付けられた場合、`termination-time` の項目は[インスタンスのメタデータ](ec2-instance-metadata.md)に含まれています。そうでない場合、これは存在しません。次のように、IMDSv2 を使用して `termination-time` を取得できます。

------
#### [ Linux ]

```
TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"`
if curl -H "X-aws-ec2-metadata-token: $TOKEN" -s http://169.254.169.254/latest/meta-data/spot/termination-time | grep -q .*T.*Z; then echo termination_scheduled; fi
```

------
#### [ Windows ]

```
[string]$token = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} -Method PUT -Uri http://169.254.169.254/latest/meta-data/spot/termination-time
```

------

以下は出力の例です。

```
2015-01-05T18:02:00Z
```

Amazon EC2 がインスタンスを終了する準備をしていない場合 (スポットインスタンスの中断がない、または中断動作が `stop` または `hibernate` に設定されているため)、またはユーザーがスポットインスタンスを終了した場合には`termination-time` 項目はインスタンスメタデータ内に存在しないか (この場合、HTTP 404 エラーが出力されます)、時刻値以外の値が含まれます。

Amazon EC2 がインスタンスの終了に失敗した場合はリクエストステータスが `fulfilled` に設定されます。`termination-time` 値は元のおよその時刻のまま (過去の時刻になっていますが)、インスタンスのメタデータに残ります。

# 中断した スポットインスタンス の検索
<a name="finding-an-interrupted-Spot-Instance"></a>

EC2 インスタンスを記述すると、結果にはスポットインスタンスが含まれます。スポットインスタンスのインスタンスライフサイクルは `spot` です。スポットインスタンスのインスタンス状態は設定した中断動作に応じて `stopped` または `terminated` のいずれかになります。休止状態のスポットインスタンスの場合、インスタンスの状態は `stopped` です。

中断の理由の詳細についてはスポットリクエストのステータスコードを確認してください。詳細については、「[スポットインスタンスリクエストのステータスを取得する](spot-request-status.md)」を参照してください。

------
#### [ Console ]

**中断したスポットインスタンスを検索するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. 次のフィルターを適用してください:**[インスタンスライフサイクル=スポット]**。

1. 設定した中断動作に応じて、**[インスタンス状態=停止]** または **[インスタンス状態=終了]** フィルターを適用します。

1. スポットインスタンスごとに、**[詳細]** タブの **[インスタンスの詳細]** で、**[状態遷移メッセージ]** を探します。次のコードはスポットインスタンスが中断されたことを示します。
   + `Server.SpotInstanceShutdown`
   + `Server.SpotInstanceTermination`

------
#### [ AWS CLI ]

**中断したスポットインスタンスを見つけるには**  
[describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html) コマンドを `--filters` オプションで使用します。出力にインスタンス ID のみをリストするには `--query` オプションを含めます。

中断動作がスポットインスタンスを終了することである場合は、次の例を使用します。

```
aws ec2 describe-instances \
    --filters Name=instance-lifecycle,Values=spot \
              Name=instance-state-name,Values=terminated \
              Name=state-reason-code,Values=Server.SpotInstanceTermination \
    --query "Reservations[*].Instances[*].InstanceId"
```

中断動作がスポットインスタンスを停止することである場合は、次の例を使用します。

```
aws ec2 describe-instances \
    --filters Name=instance-lifecycle,Values=spot \
              Name=instance-state-name,Values=stopped \
              Name=state-reason-code,Values=Server.SpotInstanceShutdown \
    --query "Reservations[*].Instances[*].InstanceId"
```

------
#### [ PowerShell ]

**中断したスポットインスタンスを見つけるには**  
[Get-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html) コマンドレットを使用します。

中断動作がスポットインスタンスを終了することである場合は、次の例を使用します。

```
(Get-EC2Instance `
    -Filter @{Key="instance-lifecycle"; Values="spot"} `
            @{Key="instance-state-name"; Values="terminated"} `
            @{Key="state-reason-code"; Values="Server.SpotInstanceTermination"}).Instances.InstanceId
```

中断動作がスポットインスタンスを停止することである場合は、次の例を使用します。

```
(Get-EC2Instance `
    -Filter @{Key="instance-lifecycle"; Values="spot"} `
            @{Key="instance-state-name"; Values="stopped"} `
            @{Key="state-reason-code"; Values="Server.SpotInstanceTermination"}).Instances.InstanceId
```

------

# Amazon EC2 がスポットインスタンスを終了しているかどうかを判別する
<a name="BidEvictedEvent"></a>

スポットインスタンスはAmazon EC2 がスポットインスタンスの中断に応じて終了するまで、またはユーザーが自分で終了するまで実行されます。詳細については「[スポットインスタンスの中断の動作](interruption-behavior.md)」を参照してください。

スポットインスタンスが終了された後、AWS CloudTrail を使用して、Amazon EC2 がそのスポットインスタンスを終了したかどうかを確認できます。CloudTrail ログに `BidEvictedEvent` が含まれている場合、Amazon EC2 がスポットインスタンスを終了したことを示します。代わりに `TerminateInstances` イベントが含まれている場合はユーザーがスポットインスタンスを終了したことを示します。

またはAmazon EC2 がスポットインスタンスを中断することを示す通知を受け取りたい場合はAmazon EventBridge を使用して [EC2 スポットインスタンスの中断警告イベント](spot-instance-termination-notices.md#ec2-spot-instance-interruption-warning-event)に応答します。

**CloudTrail で BidEvictedEvent イベントを表示するには**

1. CloudTrail コンソールの [https://console.aws.amazon.com/cloudtrail/](https://console.aws.amazon.com/cloudtrail/) を開いてください。

1. ナビゲーションペインで [**Event history (イベント履歴)**] を選択してください。

1. フィルターのリストから **[イベント名]** を選択し、右側のフィルターフィールドに「**BidEvictedEvent**」と入力してください。

1. (オプション) 時間範囲を選択してください。

1. リストが空でない場合は結果のエントリから **[BidEvictedEvent]** を選択して詳細ページを開きます。スポットインスタンスに関する情報はスポットインスタンスの ID を含めて、**[イベントレコード]** ペインで確認できます。イベントレコードの例を以下に示します。

   ```
   {
       "eventVersion": "1.05",
       "userIdentity": {
           "accountId": "123456789012",
           "invokedBy": "ec2.amazonaws.com"
       },
       "eventTime": "2016-08-16T22:30:00Z",
       "eventSource": "ec2.amazonaws.com",
       "userAgent": "ec2.amazonaws.com",
       "sourceIPAddress": "ec2.amazonaws.com",
       "eventName": "BidEvictedEvent",
       "awsRegion": "us-east-2",
       "eventID": "d27a6096-807b-4bd0-8c20-a33a83375054",
       "eventType": "AwsServiceEvent",
       "recipientAccountId": "123456789012",
       "RequestParameters": null,
       "ResponseElements": null,
       "serviceEventDetails": {
           "instanceIdSet": [
             "i-1eb2ac8eEXAMPLE"
           ]
       }
   }
   ```

1. `BidEvictedEvent` イベントのエントリが見つからない場合はイベント名として「**TerminateInstances**」と入力してください。`TerminateInstances` のイベントレコードの詳細については「[Amazon EC2 API イベントの例](monitor-with-cloudtrail.md#cloudtrail-event-examples)」を参照してください。

# 中断された スポットインスタンス の請求
<a name="billing-for-interrupted-spot-instances"></a>

スポットインスタンスが中断された場合、インスタンスと EBS ボリュームの使用量に対して課金され、その他に次のような料金が発生する可能性があります。

## インスタンスの使用状況
<a name="billing-for-interrupted-spot-instances-instance-usage"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/billing-for-interrupted-spot-instances.html)

## EBS ボリュームの使用状況
<a name="billing-for-interrupted-spot-instances-ebs-usage"></a>

中断されたスポットインスタンスの停止中は維持されている EBS ボリュームに対してのみ課金されます。

EC2 フリートおよびスポットフリートでは停止中のインスタンスの数が多い場合、アカウント内の EBS ボリューム数の上限を超えることがあります。

# EC2 インスタンスの再調整に関する推奨事項
<a name="rebalance-recommendations"></a>

EC2 インスタンスの*再調整に関するレコメンデーション*はスポットインスタンスで中断のリスクが高まった場合に通知するためのシグナルです。シグナルは[スポットインスタンス中断 2 分前の通知](spot-instance-termination-notices.md)よりも早く到着するので、スポットインスタンスを事前に管理するタイミングを知ることができます。ワークロードを、中断のリスクが高くない新規または既存の スポットインスタンス に再調整することができます。

2 分間のスポットインスタンス中断通知の前に、Amazon EC2 が再調整に関する推奨事項シグナルを送信することは必ずしも可能ではありません。したがって、再調整に関する推奨事項シグナルは2 分間の中断通知とともに到着する可能性があります。

再調整に関する推奨事項はEventBridge イベントとして、およびスポットインスタンス上の[インスタンスメタデータ](ec2-instance-metadata.md)の項目として使用できます。イベントはベストエフォートベースで発生します。

**注記**  
再調整に関する推奨事項は2020 年 11 月 5 日 00:00 UTC 以降に起動される スポットインスタンス のみをサポートしています。

**Topics**
+ [実行できるアクションの再調整](#rebalancing-actions)
+ [再調整に関する推奨事項シグナルのモニタリング](#monitor-rebalance-recommendations)
+ [再調整に関する推奨事項シグナルを使用するサービス](#services-using-rebalance-rec-signal)

## 実行できるアクションの再調整
<a name="rebalancing-actions"></a>

以下に、実行可能な再調整アクションをいくつか挙げます。

適切なシャットダウン  
スポットインスタンスの再調整に関する推奨事項シグナルを受信すると、インスタンスのシャットダウン手順を開始できます。この際、インスタンスを停止する前に各プロセスの完了を確認する必要が生じることがあります。例えば、システムログまたはアプリケーションログを Amazon Simple Storage Service (Amazon S3) にアップロードしたり、Amazon SQS ワーカーをシャットダウンしたり、ドメインネームシステム (DNS) からの登録解除を完了したりできます。また、作業内容を外部ストレージに保存し、後で再開することもできます。

新しい作業がスケジュールされるのを防止  
スポットインスタンスの再調整に関する推奨事項シグナルを受信すると、スケジュールされた作業が完了するまでインスタンスの使用を継続しながら、新しい作業がインスタンス上でスケジュールされることを回避できます。

新しい代替インスタンスを積極的に起動  
Auto Scaling グループ、EC2 フリート、または スポットフリート を設定しておくと、再調整に関する推奨事項シグナルが送信された場合に、代替のスポットインスタンスを自動的に起動させることができます。詳細については「*Amazon EC2 Auto Scaling ユーザーガイド*」の「[キャパシティーの再調整を使用して Amazon EC2 スポットの中断に対処する](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-capacity-rebalancing.html)」およびこのユーザーガイドの「[EC2 フリートとスポットフリートでキャパシティの再調整を使用して、リスクのあるスポットインスタンスを置き換える](ec2-fleet-capacity-rebalance.md)」を参照してください。

## 再調整に関する推奨事項シグナルのモニタリング
<a name="monitor-rebalance-recommendations"></a>

再調整に関する推奨事項シグナルをモニタリングして、それが発されたときに、前のセクションで指定したアクションを実行できるようにすることができます。再調整に関する推奨事項シグナルはAmazon EventBridge (旧称 Amazon CloudWatch Events) に送信されるイベントとして、およびスポットインスタンス上のインスタンスメタデータとしての使用が可能です。

**Topics**
+ [Amazon EventBridge の使用](#cp-eventbridge)
+ [インスタンスメタデータの使用](#cp-instance-metadata)

### Amazon EventBridge の使用
<a name="cp-eventbridge"></a>

再調整に関する推奨事項シグナルがスポットインスタンスに対して発信されると、そのシグナルのイベントが Amazon EventBridge に送信されます。EventBridge がルールで定義されているパターンに一致するイベントパターンを検出すると、EventBridge はルールで指定されているターゲットを呼び出します。

次に、再調整に関する推奨事項シグナルのイベント例を示します。

```
{
    "version": "0",
    "id": "12345678-1234-1234-1234-123456789012",
    "detail-type": "EC2 Instance Rebalance Recommendation",
    "source": "aws.ec2",
    "account": "123456789012",
    "time": "yyyy-mm-ddThh:mm:ssZ",
    "region": "us-east-2",
    "resources": ["arn:aws:ec2:us-east-2:123456789012:instance/i-1234567890abcdef0"],
    "detail": {
        "instance-id": "i-1234567890abcdef0"
    }
}
```

次のフィールドはルールで定義されているイベントパターンになります。

`"detail-type": "EC2 Instance Rebalance Recommendation"`  
イベントが再調整に関する推奨事項イベントであることを特定します

`"source": "aws.ec2"`  
イベントが Amazon EC2 からのものであることを特定します

#### EventBridge ルールを作成します
<a name="cp-eventbridge-rule"></a>

EventBridge ルールを作成し、イベントパターンがルールに一致したときに実行するアクションを自動化できます。

次の例ではAmazon EC2 が再調整に関する推奨事項シグナルを発するたびに、E メール、テキストメッセージ、またはモバイルプッシュ通知を送信する EventBridge ルールを作成します。シグナルは `EC2 Instance Rebalance Recommendation` イベントとして発され、ルールによって定義されたアクションがトリガーされます。

EventBridge ルールを作成する前に、E メール、テキストメッセージ、またはモバイルプッシュ通知用の Amazon SNS トピックを作成する必要があります。

**再調整に関する推奨事項イベントの EventBridge ルールを作成するには**

1. Amazon EventBridge コンソールの [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/) を開いてください。

1. [**Create rule**] を選択してください。

1. **[Define rule detail]** (詳細の定義) で、次の操作を行います。

   1. ルールの [**Name (名前)**] を入力し、必要に応じて説明を入力してください。

      ルールには同じリージョン内および同じイベントバス上の別のルールと同じ名前を付けることはできません。

   1. **[イベントバス]** として、**[デフォルト]** を選択してください。アカウント内の AWS のサービスで生成されたイベントは常に、そのアカウントのデフォルトのイベントバスに送られます。

   1. **[ルールタイプ]** で、**[イベントパターンを持つルール]** を選択してください。

   1. [**Next**] を選択してください。

1. **[Build event pattern]** (イベントパターンの作成) で、次の操作を行います。

   1. **[Event source]** (イベントソース) で、**[AWS events or EventBridge partner events]** ( イベントまたは EventBridge パートナーイベント) を選択してください。

   1. この例では **[Event pattern]** (イベントパターン) で、`EC2 Instance Rebalance Recommendation` イベントと一致するように次のイベントパターンを指定してから、**[Save]** (保存) を選択してください。

      ```
      {
       "source": ["aws.ec2"],
       "detail-type": ["EC2 Instance Rebalance Recommendation"]
      }
      ```

      イベントパターンを追加するには以下のように **[Event pattern form]** (イベントパターンフォーム) を選択してテンプレートを使用するか、**[Custom pattern (JSON editor)]** (カスタムパターン (JSON エディター)) を選択して独自のパターンを指定します。

      1. テンプレートを使用してイベントパターンを作成するには以下の操作を行います。

         1. **[Event pattern form]** (イベントパターンフォーム) を選択してください。

         1. **[イベントソース]** で、**[AWS のサービス]** を選択してください。

         1. **[AWS Service]** ( サービス) で、**[EC2 Spot Fleet]** (EC2 スポットフリート) を選択してください。

         1. **[Event type]** (イベントタイプ) で、**[EC2 Instance Rebalance Recommendation]** (EC2 インスタンスのリバランスに関するレコメンデーション) を選択してください。

         1. テンプレートをカスタマイズするには**[Edit pattern]** (パターンを編集) を選択した上で、この例のイベントパターンに合わせた変更を行います。

      1. (代替案) 以下の操作を行って、カスタムイベントパターンを指定します。

         1. **[Custom pattern (JSON editor)]** (カスタムパターン (JSON エディター)) を選択してください。

         1. **[Event pattern]** (イベントパターン) ボックスに、この例のイベントパターンを追加します。

   1. [**Next**] を選択してください。

1. **[Select target(s)]** (ターゲットを選択) で、以下の操作を行います。

   1. **[ターゲットタイプ]** で、**[AWS のサービス]** を選択してください。

   1. イベントの発生時に E メール、テキストメッセージ、またはモバイルプッシュ通知を送信するために、**[Select a target]** (ターゲットを選択) で、**[SNS topic]** (SNS トピック) を選択してください。

   1. [**Topic (トピック)**] で、既存のトピックを選択してください。先ず、Amazon SNS コンソールを使用して Amazon SNS トピックを作成する必要があります。詳細については、[Amazon Simple Notification Service デベロッパーガイド](https://docs.aws.amazon.com//sns/latest/dg/sns-user-notifications.html) の*Amazon SNS を使用した Application-to-Person (A2P) メッセージング*を参照してください。

   1. (オプション) **[Additional settings]** (追加設定) で、その他の設定を行うこともできます。詳細については、「*Amazon EventBridge ユーザーガイド*」の「[イベントに反応する Amazon EventBridge ルールの作成](https://docs.aws.amazon.com//eventbridge/latest/userguide/eb-create-rule.html)」(ステップ 16) を参照してください。

   1. [**Next**] を選択してください。

1. (オプション) 必要な場合は、**[Tags]** (タグ) で 1 つ以上のタグを作成したルールに割り当て、**[Next]** (次へ) を選択してください。

1. **[Review and create]** (確認して作成) で、以下の操作を行いす。

   1. ルールの詳細を確認し、必要な場合は変更を行います。

   1. **ルールの作成**を選択してください。

詳細については「Amazon EventBridge ユーザーガイド**」の「[Amazon EventBridge ルール](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-rules.html)」と「[Amazon EventBridge イベントパターン](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-patterns.html)」を参照してください。

### インスタンスメタデータの使用
<a name="cp-instance-metadata"></a>

インスタンスメタデータカテゴリ `events/recommendations/rebalance` はスポットインスタンスに対して再調整に関する推奨事項シグナルが発されたおおよその時間 (UTC) を示します。

再調整に関する推奨事項シグナルを 5 秒ごとに確認し、再調整に関する推奨事項に基づいて行動する機会を見逃さないようにすることをお勧めします。

スポットインスタンスが受信した、再調整に関する推奨事項ではそのシグナルが発行された時刻がインスタンスメタデータに含まれています。信号が発された時間は以下のように取得できます。

------
#### [ IMDSv2 ]

**Linux**  
次のコマンドを Linux インスタンスから実行します。

**IMDSv2**

```
TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \
    && curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/events/recommendations/rebalance
```

**Server**  
次のコマンドレットを Windows インスタンスから実行します。

```
[string]$token = Invoke-RestMethod `
    -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} `
    -Method PUT -Uri http://169.254.169.254/latest/api/token
```

```
Invoke-RestMethod `
    -Headers @{"X-aws-ec2-metadata-token" = $token} `
    -Method GET -Uri http://169.254.169.254/latest/meta-data/events/recommendations/rebalance
```

------
#### [ IMDSv1 ]

**Linux**  
次のコマンドを Linux インスタンスから実行します。

```
curl http://169.254.169.254/latest/meta-data/events/recommendations/rebalance
```

**Server**  
次のコマンドレットを Windows インスタンスから実行します。

```
Invoke-RestMethod -Uri http://169.254.169.254/latest/meta-data/events/recommendations/rebalance
```

------

次に、再調整に関する推奨事項シグナルがスポットインスタンスに対して送信された時刻を、UTC で表示する出力例を示します。

```
{"noticeTime": "2020-10-27T08:22:00Z"}
```

インスタンスに対してシグナルが送信されていない場合、`events/recommendations/rebalance` は存在せず、取得しようとすると HTTP 404 エラーが表示されます。

## 再調整に関する推奨事項シグナルを使用するサービス
<a name="services-using-rebalance-rec-signal"></a>

Amazon EC2 Auto Scaling、EC2 フリート、およびスポットフリートにおいて再調整に関する推奨事項シグナルを使用することで、ワークロードの可用性を維持しやすくなります。実行中のインスタンスがスポットインスタンス中断 2 分前の通知を受信していない段階から、事前にフリートを新しいスポットインスタンスで強化することができます。このようなサービスではスポットインスタンス の可用性に影響する変更を事前にモニタリングし、対応させることができます。詳細については次を参照してください:
+ 「*Amazon EC2 Auto Scaling ユーザーガイド*」の「[キャパシティーの再調整を使用して Amazon EC2 スポットの中断に対処する](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-capacity-rebalancing.html)」
+ このユーザーガイドの EC2 フリートとスポットフリートのトピックの [EC2 フリートとスポットフリートでキャパシティの再調整を使用して、リスクのあるスポットインスタンスを置き換える](ec2-fleet-capacity-rebalance.md)

# スポットプレイスメントスコア
<a name="spot-placement-score"></a>

スポットプレイスメントスコア機能ではスポットの容量要件に基づいて AWS リージョンやアベイラビリティーゾーンを推奨することができます。スポット容量は変動し、必要な容量が常に得られるかどうかはわかりません。スポットプレイスメントスコアはリージョンまたはアベイラビリティーゾーンでスポットリクエストが成功する可能性を示します。

**注記**  
スポットプレイスメントスコアは利用可能な容量や中断のリスクに関して、いかなる保証も提供しません。スポットプレイスメントスコアはレコメンデーションとしてのみ機能します。

**ユースケース**

スポットプレイスメントスコア機能は次の場合に使用できます。
+ 現在のリージョンでの容量ニーズの増加または使用可能な容量の減少に応じて、必要に応じて別のリージョンでスポットコンピューティング性能を再配置してスケールします。
+ 単一アベイラビリティーゾーンのワークロードを実行する最適なアベイラビリティーゾーンを特定します。
+ 将来のスポット容量のニーズをシミュレートして、スポットベースのワークロードの拡張に最適なリージョンを選択できるようにします。
+ スポットキャパシティのニーズを満たす、最適なインスタンスタイプの組み合わせを特定するには。

**Topics**
+ [制限](#sps-limitations)
+ [コスト](#sps-costs)
+ [スポットプレイスメントスコアの仕組み](how-sps-works.md)
+ [スポットプレイスメントスコアに必要なアクセス許可](sps-iam-permission.md)
+ [スポットプレイスメントスコアを計算する](work-with-spot-placement-score.md)

## 制限
<a name="sps-limitations"></a>
+ **ターゲット容量制限** – スポットプレイスメントスコアのターゲット容量制限は潜在的な使用量の増加を考慮しながら、最近のスポット使用量に基づきます。最近のスポット使用がない場合はスポットリクエストの制限に合わせてデフォルトの低い制限が提供されます。
+ **リクエスト設定の制限** – スポットプレイスメントスコア機能の意図された使用に関連しないパターンを検出した場合、24 時間以内に新しいリクエスト設定の数を制限できます。上限に達した場合はすでに使用したリクエスト設定を再試行できますが、次の 24 時間まで新しいリクエスト設定を指定することはできません。
+ **インスタンスタイプの最小数** – インスタンスタイプを指定する場合は少なくとも 3 つの異なるインスタンスタイプを指定する必要があります。指定しないと、Amazon EC2 は低いスポットプレイスメントスコアを返します。同様に、インスタンス属性を指定する場合は少なくとも 3 つの異なるインスタンスタイプを解決する必要があります。インスタンスタイプは異なる名前を持つ場合、異なると見なされます。例えば、m5.8xlarge、m5a.8xlarge、およびm5.12xlarge はすべて異なると見なされます。

## コスト
<a name="sps-costs"></a>

スポットプレイスメントスコア機能は追加料金なしで使用できます。

# スポットプレイスメントスコアの仕組み
<a name="how-sps-works"></a>

スポットプレイスメントスコア機能を使用する場合はまずスポットインスタンスのコンピューティング要件を指定します。その後、Amazon EC2 はスポットリクエストが成功する可能性が高い上位 10 リージョン、を返します。各リージョンまたはアベイラビリティーゾーンは1～10 のスケールで採点されます。10 はスポットリクエストが成功する可能性が高いことを示し、1 はスポットリクエストが成功する可能性が低いことを示します。

**Topics**
+ [ステップ 1: スポット要件を指定する](#sps-specify-requirements)
+ [ステップ 2: スポットプレイスメントスコアレスポンスのフィルタリング](#get-sps)
+ [ステップ 3: レコメンデーションを確認する](#sps-recommendations)
+ [ステップ 4: レコメンデーションを使用する](#sps-use-recommendations)

## ステップ 1: スポット要件を指定する
<a name="sps-specify-requirements"></a>

まず、希望するターゲットスポット容量とコンピューティング要件を次のように指定します。

1. **ターゲットスポット容量を指定し、オプションでターゲット容量単位を指定します。**

   目的のターゲットスポット容量はインスタンスまたは vCPUs の数、または MiB のメモリ量の観点から指定できます。vCPU 数またはメモリ量でターゲット容量を指定するにはターゲット容量単位を `vcpu` または `memory-mib` のように指定する必要があります。それ以外の場合、デフォルトはインスタンス数になります。

   vCPU の数またはメモリ量の観点からターゲット容量を指定することで、総容量を数えるときにこれらの単位を使用できます。例えば、異なるサイズのインスタンスを組み合わせて使用する場合はターゲット容量を vCPU の総数として指定できます。スポットプレイスメントスコア機能はvCPU の数でリクエスト内の各インスタンスタイプを考慮し、ターゲット容量を合計するときに、インスタンスの総数ではなく vCPU の総数をカウントします。

   例えば、合計ターゲット容量を 30 に指定し、インスタンスタイプリストが c5.xlarge (4 vCPU)、m5.2xlarge (8 vCPU)、および r5.large (2 vCPU) で構成されているとします。合計 30 個の vCPU を実現するには2 個のc5.xlarge (2\$14 vCPU)、2 m5.2xlarge (2\$18 vCPU)、3 r5.large (3\$12 vCPU) を混在させることができます。

1. **インスタンスタイプまたはインスタンス属性を指定します。**

   使用するインスタンスタイプを指定するか、コンピューティング要件に必要なインスタンス属性を指定して、それらの属性を持つインスタンスタイプを Amazon EC2 に識別させることができます。これは属性ベースのインスタンスタイプの選択と呼ばれます。

   同じスポットプレイスメントスコアリクエストではインスタンスタイプとインスタンス属性の両方を指定することはできません。

   インスタンスタイプを指定する場合は少なくとも 3 つの異なるインスタンスタイプを指定する必要があります。指定しないと、Amazon EC2 は低いスポットプレイスメントスコアを返します。同様に、インスタンス属性を指定する場合は少なくとも 3 つの異なるインスタンスタイプを解決する必要があります。

スポット要件を指定するさまざまな方法の例については[設定例](work-with-spot-placement-score.md#sps-example-configs)を参照してください。

## ステップ 2: スポットプレイスメントスコアレスポンスのフィルタリング
<a name="get-sps"></a>

Amazon EC2 はリージョンまたはアベイラビリティーゾーンごとにスポットプレイスメントスコアを計算し、スポットリクエストが成功する可能性のある上位 10 のリージョンまたは上位 10 のアベイラビリティーゾーンのいずれかを返します。デフォルトではスコアリングされたリージョンのリストが返されます。すべてのスポット容量を単一のアベイラビリティーゾーンに起動する場合はスコアリングされたアベイラビリティーゾーンのリストをリクエストすると便利です。

リージョンフィルターを指定して、レスポンスで返されるリージョンを絞り込むことができます。

リージョンフィルターとスコア付きアベイラビリティーゾーンのリクエストを組み合わせることができます。このようにして、スコアリングされたアベイラビリティーゾーンはフィルターしたリージョンに限定されます。リージョン内の最高スコアのアベイラビリティーゾーンを検索するにはそのリージョンのみを指定すると、そのリージョン内のすべてのアベイラビリティーゾーンのスコアリストが返されます。

## ステップ 3: レコメンデーションを確認する
<a name="sps-recommendations"></a>

各リージョンまたはアベイラビリティーゾーンのスポットプレイスメントスコアはターゲット容量、インスタンスタイプの構成、過去および現在のスポット使用傾向、およびリクエストの時間に基づいて計算されます。スポット容量は絶えず変動するため、同じスポット配置スコアのリクエストは異なる時間に計算されたときに異なるスコアを生成する可能性があります。

リージョンとアベイラビリティーゾーンは1 ～ 10 のスケールで採点されます。スコアが 10 の場合はスポットリクエストが成功する可能性が高いが、保証されていないことを示します。スコア 1 はスポットリクエストがまったく成功する可能性がないことを示します。異なるリージョンまたはアベイラビリティーゾーンで同じスコアが返される場合があります。

低スコアが返された場合はコンピューティング要件を編集してスコアを再計算できます。また、同じコンピューティング要件についてスポットプレイスメントスコアのレコメンデーションを 1 日の異なる時間にリクエストすることもできます。

## ステップ 4: レコメンデーションを使用する
<a name="sps-use-recommendations"></a>

スポットプレイスメントスコアはスポットリクエストの構成がスポットプレイスメントスコアの構成と全く同じであり (ターゲット容量、ターゲット容量単位、インスタンスタイプまたはインスタンス属性)、`capacity-optimized` 配分戦略を使用するように構成されている場合にのみ意味を持ちます。それ以外の場合、使用可能なスポット容量が得られる可能性はスコアと一致しません。

スポットプレイスメントスコアはガイドラインとして機能し、スポットリクエストの完全または一部が満たされることを保証するスコアはありませんが、次の情報を使用して最良の結果を得ることができます。
+ **同じ設定を使用する**— スポットプレイスメントスコアはAuto Scaling グループ、EC2 フリート、またはスポットフリートのスポットリクエスト設定 (ターゲット容量、ターゲット容量単位、インスタンスタイプまたはインスタンス属性) がスポットプレイスメントスコアを取得するために入力した内容と同じである場合にのみ関連します。

  スポットプレイスメントスコアリクエストで属性ベースのインスタンスタイプの選択を使用した場合、属性ベースのインスタンスタイプの選択を使用して Auto Scaling グループ、EC2 フリート、またはスポットフリートを設定できます。詳細については「[Create mixed instances group using attribute-based instance type selection](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-mixed-instances-group-attribute-based-instance-type-selection.html)」と「[EC2 フリートまたはスポットフリートのインスタンスタイプを選択するための属性を指定する](ec2-fleet-attribute-based-instance-type-selection.md)」を参照してください。
**注記**  
vCPU の数またはメモリ量の観点からターゲット容量を指定し、スポットプレイスメントスコア設定でインスタンスタイプを指定した場合は現在 Auto Scaling グループ、EC2 フリート、またはスポットフリートでこの設定を作成できないことに注意してください。代わりに、インスタンスの重み付けは `WeightedCapacity` パラメータを使用して手動で行います。
+ **`capacity-optimized` 配分戦略を使用する** – いずれのスコアも、スポット容量のリクエストが成功するためにはフリートのリクエストがすべてのアベイラビリティーゾーン (リージョン間の容量をリクエストする場合) または単一のアベイラビリティーゾーン (1 つのアベイラビリティーゾーンで容量をリクエストする場合) と `capacity-optimized` スポット配分戦略を使用するように設定されていることを前提としています。`lowest-price` のような他の配分戦略を用いた場合、利用可能なスポット容量を得られる可能性はスコアと一致しません。
+ **すぐにスコアに基づいて行動する** – スポットプレイスメントスコアのレコメンデーションはリクエスト時の利用可能なスポット容量を反映したものであり、スポット容量の変動により、同じ構成でも異なる時期に計算すると異なるスコアになることがあります。スコアが 10 の場合、スポット容量リクエストが成功する可能性が高い (保証はされません) ことを意味しますが、最良の結果を得るにはすぐにスコアに基づいて行動することをお勧めします。また、容量リクエストを試行するたびに新しいスコアを取得することをお勧めします。

# スポットプレイスメントスコアに必要なアクセス許可
<a name="sps-iam-permission"></a>

デフォルトではIAM アイデンティティ (ユーザー、ロール、またはグループ) には[スポットプレイスメントスコア](spot-placement-score.md)を使用するためのアクセス許可がありません。IAM アイデンティティがスポットプレイスメントスコアを使用できるようにするには`ec2:GetSpotPlacementScores` EC2 API アクションを使用するためのアクセス許可を付与する IAM ポリシーを作成する必要があります。次に、アクセスを必要とする IAM アイデンティティにポリシーをアタッチします。

すべてのリソースの `ec2:GetSpotPlacementScores` EC2 API アクションのアクセス権限を付与する IAM ポリシーの例を次に示します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:GetSpotPlacementScores",
            "Resource": "*"
        }
    ]
}
```

------

IAM ポリシーの編集の詳細については*IAM ユーザーガイド*の[IAM ポリシーの編集](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-edit.html)を参照してください。

アクセス権限を付与するにはユーザー、グループ、またはロールにアクセス許可を追加します。
+ AWS IAM アイデンティティセンター のユーザーとグループ:

  アクセス許可セットを作成します。「*AWS IAM アイデンティティセンター ユーザーガイド*」の「[アクセス許可セットを作成する](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html)」の手順に従ってください。
+ IAM 内で、ID プロバイダーによって管理されているユーザー:

  ID フェデレーションのロールを作成します。詳細については *IAM ユーザーガイド* の [サードパーティー ID プロバイダー (フェデレーション) 用のロールを作成する](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html) を参照してください。
+ IAM ユーザー:
  + ユーザーが担当できるロールを作成します。手順については *IAM ユーザーガイド* の [IAM ユーザーのロールの作成](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html) を参照してください。
  + (お奨めできない方法) ポリシーをユーザーに直接アタッチするか、ユーザーをユーザーグループに追加します。詳細については「IAM ユーザーガイド**」の「[ユーザー (コンソール) へのアクセス権限の追加](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console)」を参照してください。

# スポットプレイスメントスコアを計算する
<a name="work-with-spot-placement-score"></a>

スポットプレイスメントスコアはターゲット容量とコンピューティング要件に基づいて計算できます。詳細については「[スポットプレイスメントスコアの仕組み](how-sps-works.md)」を参照してください。

**必要な アクセス許可**  
必要なアクセス許可を持っていることを確認してください。詳細については「[スポットプレイスメントスコアに必要なアクセス許可](sps-iam-permission.md)」を参照してください。

**Topics**
+ [インスタンス属性を使用して計算する](#sps-specify-instance-attributes-console)
+ [インスタンスタイプを使用して計算する](#sps-specify-instance-types-console)
+ [AWS CLI を使用して計算する](#calculate-sps-cli)

**自動化ソリューションが必要な場合は** このユーザーガイドの手動ステップに従うのではなく、スポットプレースメントスコアトラッカーダッシュボードを構築します。スコアを自動的にキャプチャして Amazon CloudWatch に保存できます。詳細については「[Guidance for Building a Spot Placement Score Tracker Dashboard on AWS](https://aws.amazon.com/solutions/guidance/building-a-spot-placement-score-tracker-dashboard-on-aws/)」を参照してください。

## インスタンス属性を使用して計算する
<a name="sps-specify-instance-attributes-console"></a>

**インスタンス属性を指定してスポットプレイスメントスコアを計算するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**Spot Requests**] を選択してください。

1. **[スポットインスタンスのリクエスト]** の横にある下矢印を選択してから、**[スポットプレイスメントスコアの計算]** を選択してください。

1. **[Enter requirements]** (要件の入力) を選択してください。

1. [**Target capacity**] (ターゲット容量) には希望する容量を**インスタンス**数や **vCPU **数、または**メモリ量 (MiB) **で入力してください。

1. [**Instance type requirements**] (インスタンスタイプの要件) ではコンピューティング要件を指定し、Amazon EC2 にこれらの要件に最適なインスタンスタイプを識別させるために、[**Specify instance attributes that match your compute requirements**] (コンピューティング要件に一致するインスタンス属性を指定) を選択してください。

1. **[vCPUs]** に、希望する vCPU の最小数と最大数を入力してください。制限なしを指定するには、**[No minimum]** (最小値なし)、**[No maximum]** (最大値なし)、または両方を選択してください。

1. **[Memory (GiB)]** (メモリ (GiB)) に、希望する最小値と最大値を入力してください。制限なしを指定するには**[No minimum]** (最小値なし)、**[No maximum]** (最大値なし)、または両方を選択してください。

1. **[CPU architecture]** (CPU アーキテクチャ) では必要なインスタンスアーキテクチャを選択してください。

1. (オプション) **[Additional instance attributes]** (その他のインスタンス属性) ではオプションで 1 つ以上の属性を指定して、コンピューティング要件をより詳細に表現できます。追加の属性はリクエストにさらに制約を追加します。追加の属性は省略できます。省略すると、デフォルト値が使用されます。各属性およびそのデフォルト値の説明については、Amazon EC2 コマンドラインリファレンスの [get-spot-placement-scores](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-spot-placement-scores.html).を参照してください。

1. (オプション) 指定した属性を持つインスタンスタイプを表示するには**[Preview matching instance types]** (一致するインスタンスタイプをプレビューする) を展開します。インスタンスタイプを配置評価に使用しないようにするにはインスタンスを選択し、[**Exclude selected instance types**] (選択されたインスタンスタイプを除外する)を選択してください。

1. **[Load placement scores]** (プレイスメントスコアのロード) を選択し、結果を確認します。

1. (オプション) 特定のリージョンのスポットプレイスメントスコアを表示するには**[Regions to evaluate]** (評価するリージョン) で、評価するリージョンを選択し、**[Calculate placement scores]** (プレイスメントスコアの計算) を選択してください。

1. (オプション) 表示されたリージョンにアベイラビリティーゾーンのスポット配置スコアを表示するには**[アベイラビリティーゾーンごとの配置スコアを表示]** のチェックボックスをオンにします。スコアリングされたアベイラビリティーゾーンのリストはすべてのスポット容量を 1 つのアベイラビリティーゾーンで起動する場合に便利です。

1. (オプション) コンピューティング要件を編集して新しいプレイスメントスコアを取得するには**[Edit]** (編集) を選択し、必要な調整を行った後、**[Calculate placement scores]** (プレイスメントスコアの計算) を選択してください。

## インスタンスタイプを使用して計算する
<a name="sps-specify-instance-types-console"></a>

**インスタンスタイプを指定してスポットプレイスメントスコアを計算するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**Spot Requests**] を選択してください。

1. **[スポットインスタンスのリクエスト]** の横にある下矢印を選択してから、**[スポットプレイスメントスコアの計算]** を選択してください。

1. **[Enter requirements]** (要件の入力) を選択してください。

1. **[Target capacity]** (ターゲット容量) には希望する容量を**インスタンス**数や **vCPU **数、または**メモリ量 (MiB) **で入力してください。

1. **[Instance type requirements]** (インスタンスタイプの要件) では使用するインスタンスタイプを指定するため、**[Manually select instance types]** (手動でインスタンスタイプを選択する) を選択してください。

1. **[Select instance types]** (インスタンスタイプを選択) を選択し、使用するインスタンスタイプを選択してから**[Select]** (選択) を選択してください。インスタンスタイプをすばやく検索するにはフィルターバーを使用して、異なるプロパティでインスタンスタイプをフィルタリングできます。

1. **[Load placement scores]** (プレイスメントスコアのロード) を選択し、結果を確認します。

1. (オプション) 特定のリージョンのスポットプレイスメントスコアを表示するには**[Regions to evaluate]** (評価するリージョン) で、評価するリージョンを選択し、**[Calculate placement scores]** (プレイスメントスコアの計算) を選択してください。

1. (オプション) 表示されたリージョンにアベイラビリティーゾーンのスポット配置スコアを表示するには**[アベイラビリティーゾーンごとの配置スコアを表示]** のチェックボックスをオンにします。スコアリングされたアベイラビリティーゾーンのリストはすべてのスポット容量を 1 つのアベイラビリティーゾーンで起動する場合に便利です。

1. (オプション）インスタンスタイプのリストを編集して新しいプレイスメントスコアを取得するには**[Edit]** (編集) を選択し、必要な調整を行ってから **[Calculate placement scores]** (プレイスメントスコアの計算) を選択してください。

## AWS CLI を使用して計算する
<a name="calculate-sps-cli"></a>

**スポットプレイスメントスコアを計算するには**

1. (オプション) スポットプレイスメントスコアの設定で指定可能なすべてのパラメータを生成するには[get-spot-placement-scores](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-spot-placement-scores.html) コマンドと `--generate-cli-skeleton` パラメータを使用します。

   ```
   aws ec2 get-spot-placement-scores \
       --region us-east-1 \
       --generate-cli-skeleton
   ```

   以下は出力の例です。

   ```
   {
       "InstanceTypes": [
           ""
       ],
       "TargetCapacity": 0,
       "TargetCapacityUnitType": "vcpu",
       "SingleAvailabilityZone": true,
       "RegionNames": [
           ""
       ],
       "InstanceRequirementsWithMetadata": {
           "ArchitectureTypes": [
               "x86_64_mac"
           ],
           "VirtualizationTypes": [
               "hvm"
           ],
           "InstanceRequirements": {
               "VCpuCount": {
                   "Min": 0,
                   "Max": 0
               },
               "MemoryMiB": {
                   "Min": 0,
                   "Max": 0
               },
               "CpuManufacturers": [
                   "amd"
               ],
               "MemoryGiBPerVCpu": {
                   "Min": 0.0,
                   "Max": 0.0
               },
               "ExcludedInstanceTypes": [
                   ""
               ],
               "InstanceGenerations": [
                   "previous"
               ],
               "SpotMaxPricePercentageOverLowestPrice": 0,
               "OnDemandMaxPricePercentageOverLowestPrice": 0,
               "BareMetal": "excluded",
               "BurstablePerformance": "excluded",
               "RequireHibernateSupport": true,
               "NetworkInterfaceCount": {
                   "Min": 0,
                   "Max": 0
               },
               "LocalStorage": "included",
               "LocalStorageTypes": [
                   "hdd"
               ],
               "TotalLocalStorageGB": {
                   "Min": 0.0,
                   "Max": 0.0
               },
               "BaselineEbsBandwidthMbps": {
                   "Min": 0,
                   "Max": 0
               },
               "AcceleratorTypes": [
                   "fpga"
               ],
               "AcceleratorCount": {
                   "Min": 0,
                   "Max": 0
               },
               "AcceleratorManufacturers": [
                   "amd"
               ],
               "AcceleratorNames": [
                   "vu9p"
               ],
               "AcceleratorTotalMemoryMiB": {
                   "Min": 0,
                   "Max": 0
               }
           }
       },
       "DryRun": true,
       "MaxResults": 0,
       "NextToken": ""
   }
   ```

1. 前のステップの出力を使用して JSON 設定ファイルを作成し、次のように設定します。

   1. `TargetCapacity` には希望するスポット容量をインスタンス数や vCPU 数、またはメモリ量 (MiB) で入力してください。

   1. `TargetCapacityUnitType` に、ターゲット容量の単位を入力してください。このパラメータを省略すると、デフォルトで `units` になります。

      有効な値:`units` (インスタンス数に変換されます) \$1 `vcpu` \$1 `memory-mib`

   1. スコアリングされたアベイラビリティーゾーンのリストを返すレスポンスのため、`SingleAvailabilityZone` に `true` を指定します。スコアリングされたアベイラビリティーゾーンのリストはすべてのスポット容量を 1 つのアベイラビリティーゾーンで起動する場合に便利です。このパラメータを省略すると、デフォルトで `false` となり、レスポンスはスコアリングされたリージョンのリストを返します。

   1. (オプション) `RegionNames` で、フィルターとして使用するリージョンを指定します。リージョンコードを指定する必要があります (例: `us-east-1`)。

      リージョンフィルターを使用すると、レスポンスは指定したリージョンのみを返します。`true` で `SingleAvailabilityZone` を指定した場合は指定したリージョンのアベイラビリティーゾーンのみを返します。

   1. 同じ設定に `InstanceTypes` または `InstanceRequirements` を含めることができますが、両方を含めることはできません。

      JSON 設定で、次のいずれかを指定します。
      + インスタンスタイプのリストを指定するには`InstanceTypes` パラメータでインスタンスタイプを指定します。少なくとも 3 つの異なるインスタンスタイプを指定します。1 つまたは 2 つのインスタンスタイプのみを指定した場合、スポットプレイスメントスコアは低スコアを返します。インスタンスタイプのリストについては[Amazon EC2 インスタンスタイプ](https://aws.amazon.com/ec2/instance-types/) を参照してください。
      + Amazon EC2 がこれらの属性に一致するインスタンスタイプを識別するように、インスタンスの属性を指定するには`InstanceRequirements` 構造内にある属性を指定します。

        `VCpuCount`、`MemoryMiB` および `CpuManufacturers` の値を指定する必要があります。その他の属性は省略できます。省略すると、デフォルト値が使用されます。各属性およびそのデフォルト値の説明についてはAmazon EC2 コマンドラインリファレンスの [get-spot-placement-scores](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-spot-placement-scores.html) を参照してください。

      設定例については[設定例](#sps-example-configs)を参照してください。

1. JSON ファイルで指定した条件のスポットプレイスメントスコアを取得するには[get-spot-placement-scores](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-spot-placement-scores.html) コマンドを使用し、`--cli-input-json` パラメータで JSON ファイルの名前とパスを指定します。

   ```
   aws ec2 get-spot-placement-scores \
       --region us-east-1 \
       --cli-input-json file://file_name.json
   ```

   `SingleAvailabilityZone` が `false` に設定されているか、省略されている場合の出力例 (省略されている場合のデフォルトは `false`) – リージョンのスコアリングされたリストが返されます。

   ```
   "SpotPlacementScores": [
       {
           "Region": "us-east-1",
           "Score": 7
       },
       {
           "Region": "us-west-1",
           "Score": 5
       },  
      ...
   ```

   `SingleAvailabilityZone` が `true` に設定されている場合の出力例 – アベイラビリティーゾーンのスコアリストが返されます。

   ```
   "SpotPlacementScores": [
       {
           "Region": "us-east-1",
           "AvailabilityZoneId": "use1-az1",
           "Score": 8
       },
       {
           "Region": "us-east-1",
           "AvailabilityZoneId": "usw2-az3",
           "Score": 6
       },
      ...
   ```

### 設定例
<a name="sps-example-configs"></a>

AWS CLI を使用する場合、次の設定例を使用できます。

**Topics**
+ [例: インスタンスタイプとターゲット容量の指定](#example-config-instance-type-override)
+ [例: メモリの観点からインスタンスタイプとターゲット容量を指定する](#example-config-instance-type-memory-unit-override)
+ [例: 属性ベースのインスタンスタイプ選択の属性を指定する](#example-config-attribute-based-instance-type-selection)
+ [例: 属性ベースのインスタンスタイプ選択の属性を指定し、アベイラビリティーゾーンのスコアリストを返す](#example-config-sps-singleAZ)

#### 例: インスタンスタイプとターゲット容量の指定
<a name="example-config-instance-type-override"></a>

次の設定例では3 つの異なるインスタンスタイプと 500 スポットインスタンスのターゲットスポット容量を指定します。

```
{
    "InstanceTypes": [
        "m5.4xlarge",
        "r5.2xlarge",
        "m4.4xlarge"
    ], 
    "TargetCapacity": 500
}
```

#### 例: メモリの観点からインスタンスタイプとターゲット容量を指定する
<a name="example-config-instance-type-memory-unit-override"></a>

次の設定例では3 つの異なるインスタンスタイプとターゲットスポット容量 500,000 MiB のメモリを指定します。この場合、起動するスポットインスタンスの数は合計 500,000 MiB のメモリを提供する必要があります。

```
{
    "InstanceTypes": [
        "m5.4xlarge",
        "r5.2xlarge",
        "m4.4xlarge"
    ], 
    "TargetCapacity": 500000,
    "TargetCapacityUnitType": "memory-mib"
}
```

#### 例: 属性ベースのインスタンスタイプ選択の属性を指定する
<a name="example-config-attribute-based-instance-type-selection"></a>

次の設定例は属性ベースのインスタンスタイプ選択用に設定され、その後に設定例の説明が記載されています。

```
{
    "TargetCapacity": 5000,
    "TargetCapacityUnitType": "vcpu",
    "InstanceRequirementsWithMetadata": {
        "ArchitectureTypes": ["arm64"],
        "VirtualizationTypes": ["hvm"],
        "InstanceRequirements": {
            "VCpuCount": {
                "Min": 1,
                "Max": 12
            },
            "MemoryMiB": {
                "Min": 512
            }
        }
    }
}
```

****`InstanceRequirementsWithMetadata`****  
属性ベースのインスタンスタイプの選択を使用するには設定に `InstanceRequirementsWithMetadata` 構造を含め、スポットインスタンスに必要な属性を指定します。

前の例で、次の必須インスタンス属性を指定しています。
+ `ArchitectureTypes` – インスタンスタイプのアーキテクチャタイプは `arm64` である必要があります。
+ `VirtualizationTypes` – インスタンスタイプの仮想化タイプは `hvm` である必要があります。
+ `VCpuCount` – インスタンスタイプには1 個以上、最大 12 個の vCPU が必要です。
+ `MemoryMiB` – インスタンスタイプには最低 512 MiB のメモリが必要です。`Max` パラメータを省略した場合、上限がないことを示します。

指定できるオプションの属性は他にもいくつかあります。属性のリストについては「 コマンドラインリファレンス」の [get-spot-placement-scores](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-spot-placement-scores.html) を参照してください。

**`TargetCapacityUnitType`**  
`TargetCapacityUnitType` パラメータはターゲット容量の単位を指定します。この例ではターゲット容量が`5000`、ターゲット容量単位のタイプが `vcpu` となっており、合わせて 5000 vCPUの希望ターゲット容量が指定されており、起動するスポットインスタンスの数で合計 5000 vCPU を提供する必要があります。

#### 例: 属性ベースのインスタンスタイプ選択の属性を指定し、アベイラビリティーゾーンのスコアリストを返す
<a name="example-config-sps-singleAZ"></a>

次の設定例は属性ベースのインスタンスタイプ選択用に設定されています。`"SingleAvailabilityZone": true` を指定した場合、レスポンスはスコアリングされたアベイラビリティーゾーンのリストを返します。

```
{
    "TargetCapacity": 1000,
    "TargetCapacityUnitType": "vcpu",
    "SingleAvailabilityZone": true,
    "InstanceRequirementsWithMetadata": {
        "ArchitectureTypes": ["arm64"],
        "VirtualizationTypes": ["hvm"],
        "InstanceRequirements": {
            "VCpuCount": {
                "Min": 1,
                "Max": 12
            },
            "MemoryMiB": {
                "Min": 512
            }
        }
    }
}
```

# スポットインスタンスのデータフィードを使用してスポットインスタンスのコストを追跡する
<a name="spot-data-feeds"></a>

スポットインスタンスの料金について理解しやすくするため、Amazon EC2 ではスポットインスタンスの使用状況と料金の詳細を、データフィードにより提供しています。このデータフィードはデータフィードを購読するときに指定する Amazon S3 バケットに送信されます。

データフィードファイルは通常 1 時間に 1 回バケットに到達します。スポットインスタンス実行が一定の時間に満たない場合、その時間のデータフィードファイルは送信されません。

通常、スポットインスタンスの使用時間は 1 時間ごとに 1 つのデータファイルでカバーされます。これらのファイルはユーザーのバケットに配信される前に圧縮 (gzip) されます。ファイルが大きい場合 (ある時間に関するファイルの内容が、圧縮前に 50 MB を超える場合など) はAmazon EC2 は指定した時間の使用状況に関する情報を複数のファイルに書き込みます。

**注記**  
1 つの AWS アカウントにつき 1 つのスポットインスタンスデータフィードのみを作成できます。

スポットインスタンスのデータフィードはAWS中国 (北京)、中国 (寧夏)、AWSGovCloud (米国) 以外のすべてのリージョンおよび[デフォルトでは無効になっているリージョン](using-regions-availability-zones.md#concepts-available-regions)でサポートされています。

**Topics**
+ [データフィードのファイル名と形式](#using-spot-instances-format)
+ [Amazon S3 バケットの要件](#using-spot-instances-dfs3)
+ [スポットインスタンスのデータフィードの購読](#using-spot-instances-datafeed-all)
+ [データフィード内のデータを表示する](#using-spot-instances-datafeed-view-data)
+ [スポットインスタンスのデータフィードを削除する](#using-spot-instances-datafeed-delete)

## データフィードのファイル名と形式
<a name="using-spot-instances-format"></a>

スポットインスタンスのデータフィードのファイル名には(UTC の日付と時刻を使用しながら)次のような形式が使用されます。

```
bucket-name.s3.amazonaws.com/optional-prefix/aws-account-id.YYYY-MM-DD-HH.n.unique-id.gz
```

例えば、バケット名が **amzn-s3-demo-bucket** で、プレフィクスが **my-prefix** である場合、ファイル名は次のようになります。

```
amzn-s3-demo-bucket.s3.amazonaws.com/my-prefix/111122223333.2023-12-09-07.001.b959dbc6.gz
```

バケット名の詳細については「*Amazon S3 ユーザーガイド*」の「[Bucket naming rules](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html)」を参照してください。

スポットインスタンスのデータフィードファイルはタブ区切りです。データファイルの各行は1 個のインスタンス時間に対応し、次の表に示すフィールドが含まれています。


|  フィールド  |  説明  | 
| --- | --- | 
|   `Timestamp`   |  そのインスタンス使用量に対して請求される価格を決定するために使用されるタイムスタンプ。  | 
|   `UsageType`   |  請求の対象となっている使用タイプおよびインスタンスタイプ。`m1.small` スポットインスタンス ではこのフィールドは `SpotUsage` に設定されます。他のすべてのインスタンスタイプではこのフィールドは `SpotUsage:`\$1*instance-type*\$1 に設定されます。例えば、`SpotUsage:c1.medium`。  | 
|   `Operation`   |  請求の対象となっている製品。Linux スポットインスタンス の場合、このフィールドは `RunInstances` に設定されます。Windows スポットインスタンス の場合、このフィールドは `RunInstances:0002` に設定されます。スポット使用状況は利用可能ゾーンに従ってグループ化されます。  | 
|   `InstanceID`   |  このインスタンスの使用量情報を生成したスポットインスタンスの ID。  | 
|   `MyBidID`   |  このインスタンスの使用量情報を生成したスポットインスタンスリクエストの ID。  | 
|   `MyMaxPrice`   |  このスポットリクエストに指定された上限価格。  | 
|   `MarketPrice`   |  `Timestamp` フィールドに指定された時刻のスポット料金。  | 
|   `Charge`   |  このインスタンス使用量に請求される価格。  | 
|   `Version`   |  データフィードバージョン。可能性のあるバージョンは 1.0 です。  | 

## Amazon S3 バケットの要件
<a name="using-spot-instances-dfs3"></a>

データフィードの購読時に、データフィードファイルを格納する Amazon S3 バケットを指定する必要があります。

データフィード用の Amazon S3 バケットを選択する前に、以下の点を考慮します。
+ バケットに対する `FULL_CONTROL` アクセス権限が必要です。バケット所有者にはデフォルトでこの権限があります。それ以外の場合、バケット所有者は AWS アカウントにこのアクセス権限を付与する必要があります。
+ データフィードを購読すると、これらのアクセス権限を使用してバケット ACL が更新され、AWS データフィードアカウントに `FULL_CONTROL` アクセス権限が付与されます。AWS データフィードアカウントはデータフィードファイルをバケットに書き込みます。アカウントに必要なアクセス許可がない場合、データフィードファイルをバケットに書き込むことはできません。詳細については「Amazon CloudWatch Logs ユーザーガイド」の「[Amazon S3 に送信されたログ](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-infrastructure-S3)」を参照してください。

  ACL を更新して AWS データフィードアカウントのアクセス権限を削除すると、データフィードファイルをバケットに書き込むことができなくなります｡ データフィードファイルを受け取るにはデータフィードを再購読する必要があります。
+ 各データフィードファイルには独自の ACL があります (バケットの ACL とは別です)。バケット所有者にはデータファイルに対して `FULL_CONTROL` のアクセス許可があります。AWS データフィードアカウントには読み書きのアクセス権限があります。
+ データフィードの購読を削除しても、Amazon EC2 はAWS データフィードアカウントでの、バケットまたはデータファイルに対する読み書きのアクセス許可を削除しません。これらのアクセス許可は自分で削除する必要があります。
+ AWS Key Management Service (SSE-KMS) に保存されている AWS KMS キーによるサーバー側の暗号化を使用して Amazon S3 バケットを暗号化する場合はカスタマーマネージド型キーを使用する必要があります。詳細については「Amazon CloudWatch Logs ユーザーガイド」の「[Simple Storage Service (Amazon S3) バケットのサーバー側の暗号化](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-SSE-KMS-S3)」を参照してください。**

## スポットインスタンスのデータフィードの購読
<a name="using-spot-instances-datafeed-all"></a>

スポットインスタンスのデータフィードはいつでも購読できます。Amazon EC2 コンソールを使用してこのタスクを完了することはできません。

バケットに十分なアクセス許可がないというエラーが表示された場合は「[Troubleshoot the data feed for Spot Instances](https://repost.aws/knowledge-center/s3-data-feed-ec2-spot-instances)」の記事でトラブルシューティングに関する情報を参照してください。。

------
#### [ AWS CLI ]

**データフィードを購読するには**  
[create-spot-datafeed-subscription](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-spot-datafeed-subscription.html) コマンドを使用します。

プレフィックスを使用してバケットを指定するには、次の例を使用します。

```
aws ec2 create-spot-datafeed-subscription \
    --bucket amzn-s3-demo-bucket \
    --prefix my-prefix
```

プレフィックスを使用せずにバケットを指定するには、次の例を使用します。

```
aws ec2 create-spot-datafeed-subscription \
    --bucket amzn-s3-demo-bucket
```

------
#### [ PowerShell ]

**データフィードを購読するには**  
[New-EC2SpotDatafeedSubscription](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2SpotDatafeedSubscription.html) コマンドレットを使用します。

プレフィックスを使用してバケットを指定するには、次の例を使用します。

```
New-EC2SpotDatafeedSubscription `
    -Bucket amzn-s3-demo-bucket `
    -Prefix my-prefix
```

プレフィックスを使用せずにバケットを指定するには、次の例を使用します。

```
New-EC2SpotDatafeedSubscription `
    -Bucket amzn-s3-demo-bucket
```

------

## データフィード内のデータを表示する
<a name="using-spot-instances-datafeed-view-data"></a>

AWS マネジメントコンソールで AWS CloudShell を開きます。次の [s3 sync](https://docs.aws.amazon.com/cli/latest/reference/s3/sync.html) コマンドを使用して、データフィードの S3 バケットから .gz ファイルを取得し、指定したフォルダに保存します。

```
aws s3 sync s3://amzn-s3-demo-bucket ./data-feed
```

.gz ファイルの内容を表示するにはS3 バケットの内容を保存したフォルダに移動します。

```
cd data-feed
```

**ls** コマンドを使用してファイルの名前を表示します。**zcat** コマンドをファイルの名前と共に使用すると、圧縮ファイルの内容が表示されます。以下にサンプルコマンドを示します。

```
zcat  111122223333.2023-12-09-07.001.b959dbc6.gz
```

以下は出力の例です。

```
#Version: 1.0
#Fields: Timestamp UsageType Operation InstanceID MyBidID MyMaxPrice MarketPrice Charge Version
2023-12-09 07:13:47 UTC USE2-SpotUsage:c7a.medium       RunInstances:SV050      i-0c3e0c0b046e050df     sir-pwq6nmfp    0.0510000000 USD        0.0142000000 USD        0.0142000000 USD        1
```

## スポットインスタンスのデータフィードを削除する
<a name="using-spot-instances-datafeed-delete"></a>

スポットインスタンスのデータフィードが終了したら、データフィードを削除できます。

------
#### [ AWS CLI ]

**データフィードを削除するには**  
[delete-spot-datafeed-subscription](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-spot-datafeed-subscription.html) コマンドを使用します。

```
aws ec2 delete-spot-datafeed-subscription
```

------
#### [ PowerShell ]

**データフィードを削除するには**  
[Remove-EC2SpotDatafeedSubscription](https://docs.aws.amazon.com/powershell/latest/reference/items/Remove-EC2SpotDatafeedSubscription.html) コマンドレットを使用します。

```
Remove-EC2SpotDatafeedSubscription
```

------

# スポットインスタンスリクエスト向けのサービスにリンクされたロール
<a name="service-linked-roles-spot-instance-requests"></a>

Amazon EC2 はユーザーに代わって AWS の他のサービスを呼び出すために必要なアクセス許可のために、サービスにリンクされたロールを使用します。サービスにリンクされたロールはAWS のサービス に直接リンクされた一意のタイプの IAM ロールです。サービスにリンクされたロールはAWS のサービスにアクセス許可を委任するためのセキュアな方法を提供します。これはリンクされたサービスのみが、サービスにリンクされたロールを引き受けることができるためです。詳細については「*IAM ユーザーガイド*」の「[Service-linked roles](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create-service-linked-role.html)」を参照してください。

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

## AWSServiceRoleForEC2Spot によって付与されるアクセス許可
<a name="service-linked-role-permissions-granted-by-AWSServiceRoleForEC2Spot"></a>

Amazon EC2 は**AWSServiceRoleForEC2Spot** という、サービスにリンクされたロールを使用して、次のアクションを実行します。
+ `ec2:DescribeInstances` – スポットインスタンスの記述
+ `ec2:StopInstances` – スポットインスタンスの停止
+ `ec2:StartInstances` – スポットインスタンスの開始

## サービスにリンクされたロールの作成
<a name="service-linked-role-creating-for-spot"></a>

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

Amazon EC2 がこのサービスにリンクされたロールのサポートを開始した 2017 年 10 月よりも前に、ユーザーがアクティブなスポットインスタンスリクエストを行っている場合はAmazon EC2 により **AWSServiceRoleForEC2Spot** ロールが AWS アカウントに作成されています｡ 詳細については*IAM ユーザーガイド*の[アカウントに新しいロールが表示される](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_roles.html#troubleshoot_roles_new-role-appeared)を参照してください。

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

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

1. IAM コンソールの [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) を開いてください。

1. ナビゲーションペインで **Roles (ロール) ** を選択してください。

1. [**ロールの作成**] を選択してください。

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

1. 次のページで、[**次へ: 確認**] を選択してください。

1. [**確認**] ページで、[**ロールの作成**] を選択してください。

**AWS CLI を使用して **AWSServiceRoleForEC2Spot** を作成するには**  
次のように、[create-service-linked-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-service-linked-role.html) コマンドを使用します。

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

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

## 暗号化された AMI および EBS スナップショット用のカスタマーマネージド型キーへのアクセス権限の付与
<a name="spot-instance-service-linked-roles-access-to-cmks"></a>

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

アクセス権限を設定するときは付与がキーポリシーの代わりになります。詳細については*AWS Key Management Service デベロッパーガイド*の[付与の使用](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html)と[AWS KMS でのキーポリシーの使用](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)を参照してください。

****AWSServiceRoleForEC2Spot** ロールにカスタマーマネージド型キーを使用する許可を付与するには**
+ [create-grant](https://docs.aws.amazon.com/cli/latest/reference/kms/create-grant.html) コマンドを使用してカスタマーマネージド型キーに付与を追加し、プリンシパル (サービスにリンクされたロールの **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/aws-service-role/spot.amazonaws.com/AWSServiceRoleForEC2Spot \
      --operations "Decrypt" "Encrypt" "GenerateDataKey" "GenerateDataKeyWithoutPlaintext" "CreateGrant" "DescribeKey" "ReEncryptFrom" "ReEncryptTo"
  ```

# Spot Instance クォータ
<a name="using-spot-limits"></a>

実行中および要求されたスポットインスタンスの数、そして保留中のスポット インスタンスの数には各リージョンにつき AWS アカウント ごとに割り当てがあります。保留中のスポットインスタンスリクエストが受理されると、実行中のインスタンスがクォータにカウントされるため、リクエストはクォータにカウントされなくなります。

スポットインスタンスのクォータは*仮想中央演算装置 (vCPU) の数*について管理されます。この数は実行中のスポットインスタンスが使用中であるか、未処理のスポットインスタンスリクエストの受理が保留中であるため、後に使用されるかにより決定されます。ユーザーがスポットインスタンスを終了しており、かつスポットインスタンスリクエストをキャンセルしていない場合、Amazon EC2 がスポットインスタンスの終了を検出してリクエストを閉じるまで、リクエストはスポットインスタンスでの vCPU のクォータ数についてカウントされます。

スポットインスタンスには以下のクォータタイプが用意されています。


| 名前 | デフォルト | 引き上げ可能 | 
| --- | --- | --- | 
| オール DL スポットインスタンスリクエスト | 0 | [あり](https://console.aws.amazon.com/servicequotas/home/services/ec2/quotas/L-85EED4F7) | 
| すべての F スポットインスタンスリクエスト | 0 | [あり](https://console.aws.amazon.com/servicequotas/home/services/ec2/quotas/L-88CF9481) | 
| オール G および VT スポットインスタンスリクエスト | 0 | [あり](https://console.aws.amazon.com/servicequotas/home/services/ec2/quotas/L-3819A6DF) | 
| すべての Inf スポットインスタンスリクエスト | 0 | [あり](https://console.aws.amazon.com/servicequotas/home/services/ec2/quotas/L-B5D1601B) | 
| すべての P スポットインスタンスリクエスト | 0 | [あり](https://console.aws.amazon.com/servicequotas/home/services/ec2/quotas/L-7212CCBC) | 
| すべての標準 (A、C、D、H、I、M、R、T、Z) スポットインスタンスリクエスト | 5 | [あり](https://console.aws.amazon.com/servicequotas/home/services/ec2/quotas/L-34B43A08) | 
| すべての Trn スポットインスタンスリクエスト | 0 | [あり](https://console.aws.amazon.com/servicequotas/home/services/ec2/quotas/L-6B0D517C) | 
| すべての X スポットインスタンスリクエスト | 0 | [あり](https://console.aws.amazon.com/servicequotas/home/services/ec2/quotas/L-E3A00192) | 

Amazon EC2 は使用量に基づいてスポットインスタンスのクオータを自動的に調整しますが、必要に応じてクォータの引き上げをリクエストすることができます。例えば、現在のクォータで許可されているよりも多くの スポットインスタンス を起動する場合はクォータの引き上げをリクエストできます。また、スポットインスタンスリクエストを送信した後にエラー `Max spot instance count exceeded` を受け取ったとしても、クォータの引き上げをリクエストできます。クォータの増加を要求するには[Amazon EC2 の Service Quotas](ec2-resource-limits.md) で説明されている Service Quotas コンソールを使用します。

変化するアプリケーションのニーズに合わせて、任意の組み合わせのインスタンスタイプを起動できます。例えば、オールスタンダードスポットインスタンスリクエストのクォータが 256 vCPU の場合、32 `m5.2xlarge` 個のスポットインスタンス (32 x 8 vCPU) または16 `c5.4xlarge` 個のスポットインスタンス (16 x 16 vCPU) をリクエストできます。

Amazon CloudWatch のメトリクス統合ではクォータに対して EC2 の使用量をモニタリングできます。クォータに近づいたときに警告を発するようにアラームを設定することもできます。詳細については、「*Service Quotas ユーザーガイド*」の「[Service Quotas and Amazon CloudWatch alarms](https://docs.aws.amazon.com/servicequotas/latest/userguide/configure-cloudwatch.html)」およびを参照してください。