

# EC2 フリートとスポットフリート
<a name="Fleets"></a>

EC2 フリートとスポットフリートは、数十、数百、数千もの Amazon EC2 インスタンスからなるフリートを 1 回の操作で起動できる便利な方法です。フリート内の各インスタンスは、[起動テンプレート](ec2-launch-templates.md)で設定することも、起動時に手動で設定する起動パラメータセットで設定することもできます。

**Topics**
+ [

## 機能とメリット
](#ec2-fleet-features-and-benefits)
+ [

# フリートにどの方法を使用するのが最適か
](which-fleet-method-to-use.md)
+ [

# EC2 フリートまたはスポットフリートの設定オプション
](ec2-fleet-configuration-strategies.md)
+ [

# EC2 フリートの操作
](manage-ec2-fleet.md)
+ [

# スポットフリートを操作する
](work-with-spot-fleets.md)
+ [

# EC2 フリートまたはスポットフリートをモニタリングする
](fleet-monitor.md)
+ [

# EC2 フリートのチュートリアル
](fleet-tutorials.md)
+ [

# EC2 フリートの CLI 設定の例
](ec2-fleet-examples.md)
+ [

# スポットフリートの CLI 設定の例
](spot-fleet-examples.md)
+ [

# EC2 フリートとスポットフリートのクォータ
](fleet-quotas.md)

## 機能とメリット
<a name="ec2-fleet-features-and-benefits"></a>

フリートには以下の機能とメリットがあり、複数の EC2 インスタンスでアプリケーションを実行する際に、コストを最大限に削減すると共に、可用性とパフォーマンスを最適化できます。

**複数のインスタンスタイプ**  
1 つのフリートで複数のインスタンスタイプを起動できるため、単一のインスタンスタイプの可用性に依存しません。そのため、フリート内のインスタンスの可用性全体が向上します。

**複数のアベイラビリティーゾーンにインスタンスを分散する**  
フリートは複数のアベイラビリティーゾーンに起動できるため、コストを削減し、可用性を向上させることができます。フリートにスポットインスタンスが含まれている場合、料金と中断に関する設定に基づいてアベイラビリティーゾーンが自動的に選択されます。

**複数の購入オプション**  
フリートでは、複数の購入オプション (スポットインスタンスとオンデマンドインスタンス) を起動でき、スポットインスタンスを使用することでコストを最適化できます。また、リザーブドインスタンスと Savings Plans の割引は、フリート内のオンデマンドインスタンスと併用することで活用できます。

**スポットインスタンスの自動交換**  
フリートにスポットインスタンスが含まれている場合、スポットインスタンスが中断したら、フリートは代わりのスポットキャパシティを自動的にリクエストできます。[キャパシティリバランス](ec2-fleet-capacity-rebalance.md)により、フリートは中断されるリスクが高いスポットインスタンスをモニタリングし、プロアクティブに交換できます。

**オンデマンドキャパシティを予約する**  
フリートは、[オンデマンドキャパシティ予約](ec2-fleet-on-demand-capacity-reservations.md)を使用して、オンデマンドキャパシティを予約できます。フリートには [ML 用キャパシティブロック](ec2-capacity-blocks.md)も含めることができ、短期間の機械学習 (ML) ワークロードをサポートするために、GPU インスタンスを将来の日付で予約することができます。

# フリートにどの方法を使用するのが最適か
<a name="which-fleet-method-to-use"></a>

一般的なベストプラクティスとして、Amazon EC2 Auto Scaling でスポットインスタンスとオンデマンドインスタンスのフリートを起動することをお勧めします。フリートの管理に使用できる追加機能が提供されるからです。追加機能には、スポットインスタンスとオンデマンドインスタンスの両方の自動ヘルスチェック交換、アプリケーションベースのヘルスチェック、アプリケーショントラフィックを正常なインスタンスに均等に分散するための Elastic Load Balancing との統合が含まれます。Amazon ECS、Amazon EKS (セルフ管理されたノードグループ)、Amazon VPC Lattice などの AWS サービスを使用するときも、Auto Scaling グループを使用できます。詳細については、[Amazon EC2 Auto Scaling ユーザーガイド](https://docs.aws.amazon.com/autoscaling/ec2/userguide/)を参照してください。

Amazon EC2 Auto Scaling を使用できない場合は、EC2 フリートまたはスポットフリートの使用を検討してください。EC2 フリートとスポットフリートは、同じコア機能を備えています。ただし、EC2 フリートはコマンドラインからのみ使用でき、コンソールからは使用できません。スポットフリートは、コンソールから使用できますが、投資予定がないレガシー API に基づいています。

以下の表に従って、フリートに使用する方法を決定してください。


****  

| フリートに使用する方法 | どのようなときに使うか? | ユースケース | 
| --- | --- | --- | 
|  [Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/which-fleet-method-to-use.html)  |  必要な数のインスタンスを維持しながら、インスタンスのライフサイクルを管理する Auto Scaling グループを作成します。指定した最小値と最大限度の間の水平スケーリング (インスタンスの追加) をサポートします。  | 
|  [EC2 Fleet](manage-ec2-fleet.md)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/which-fleet-method-to-use.html)  |  インスタンスタイプ別、AMI 別、アベイラビリティーゾーン別、またはサブネット別で異なる複数の起動仕様を指定し、オンデマンドインスタンスとスポットインスタンスの両方の `instant` フリートを 1 回の操作で作成します。スポットインスタンス配分戦略は、デフォルトではユニット単位で `lowest-price` に設定されていますが、`price-capacity-optimized` に変更することをお勧めします。  | 
|  [スポットフリート](work-with-spot-fleets.md)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/which-fleet-method-to-use.html)  |  スポットフリートは、通常なら EC2 フリートを使用するユースケースで、コンソールのサポートが必要な場合にのみ使用します。  | 

# EC2 フリートまたはスポットフリートの設定オプション
<a name="ec2-fleet-configuration-strategies"></a>

EC2 フリートまたはスポットフリートを計画する場合は、フリートの設定方法を決定するときに、以下のオプションを検討することをお勧めします。


****  

| 設定オプション | 質問 | ドキュメント | 
| --- | --- | --- | 
| フリートリクエストタイプ |  目的のターゲットキャパシティのワンタイムリクエストを送信するフリートが必要ですか、あるいはこの先も継続してターゲットキャパシティを維持するフリートが必要ですか。  | [EC2 フリートとスポットフリートのリクエストタイプ](ec2-fleet-request-type.md) | 
| スポットインスタンス | フリートにスポットインスタンスを含めるつもりですか。フリートを計画するときにスポットのベストプラクティスを確認のうえ使用して、できる限り安い料金でインスタンスをプロビジョニングできるようにします。 | [Amazon EC2 スポットのベストプラクティス](spot-best-practices.md) | 
| フリートの支出制限 | フリートに支払う 1 時間あたりの金額を制限しますか。 | [EC2 フリートまたはスポットフリートの支出制限を設定する](ec2-fleet-control-spending.md) | 
| インスタンスタイプおよび属性ベースのインスタンスタイプの選択 |  フリートのインスタンスタイプを自分で指定しますか、それともアプリケーション要件を満たすインスタンスタイプを Amazon EC2 が選択できるようにしますか。  | [EC2 フリートまたはスポットフリートのインスタンスタイプを選択するための属性を指定する](ec2-fleet-attribute-based-instance-type-selection.md) | 
| インスタンスの重み付け | インスタンスタイプごとにコンピューティング能力とパフォーマンスを表す重みを割り当てて、Amazon EC2 が使用可能なインスタンスタイプを任意に組み合わせて目的のターゲットキャパシティを満たすタイプを選択できるようにしますか。 | [インスタンスの重み付けを使用して、EC2 フリートまたはスポットフリートのコストとパフォーマンスを管理する](ec2-fleet-instance-weighting.md) | 
| 配分戦略 | フリート内のスポットインスタンスとオンデマンドインスタンスに使用可能なキャパシティ、料金、またはインスタンスタイプを最適化するかどうかを自分で決定しますか。 | [配分戦略を使用して、EC2 フリートまたはスポットフリートがどのようにスポットキャパシティとオンデマンドキャパシティを満たすかを決定します。](ec2-fleet-allocation-strategy.md) | 
| キャパシティーの再調整 | フリートがリスクのあるスポットインスタンスを自動的に置き換えるようにしますか。 | [EC2 フリートとスポットフリートでキャパシティの再調整を使用して、リスクのあるスポットインスタンスを置き換える](ec2-fleet-capacity-rebalance.md) | 
| オンデマンドキャパシティ予約 | フリート内のオンデマンドインスタンス用にキャパシティを予約しますか。 | [キャパシティ予約を使用して、EC2 フリートのオンデマンドキャパシティを予約する](ec2-fleet-on-demand-capacity-reservations.md) | 

# EC2 フリートとスポットフリートのリクエストタイプ
<a name="ec2-fleet-request-type"></a>

EC2 フリートまたはスポットフリートのリクエストタイプによって、リクエストが同期的か非同期的かが決まり、さらに目的のターゲットキャパシティを 1 回限りでリクエストするのか、今後とも継続的にターゲットキャパシティを維持していくのかが決まります。フリートを設定するときに、リクエストタイプを指定する必要があります。

EC2 フリートとスポットフリートのどちらにも、`request` と `maintain` の 2 つのリクエストタイプがあります。また、EC2 フリートには `instant` という 3 つ目のリクエストタイプがあります。フリートのリクエストタイプ

`instant` (EC2 フリートのみ)  
リクエストタイプを `instant` として設定すると、EC2 フリートは必要な容量に対して同期ワンタイムリクエストを送信します。API レスポンスで、起動したインスタンスが返され、さらに起動できなかったインスタンスに関するエラーも返されます。詳細については、「[タイプが instant の EC2 フリートを設定する](instant-fleet.md)」を参照してください。

`request`  
リクエストタイプを `request` として設定すると、フリートは必要なキャパシティに対して 1 回限りのリクエストを非同期に送信します。スポットの中断のためにキャパシティが減少しても、スポットインスタンスの補充を試みません。また、キャパシティが利用不可になっても、代替スポットキャパシティプールにリクエストを送信しません。コンソールを使用してタイプ `request` のスポットフリートを作成するとき、**[ターゲットキャパシティを維持]** チェックボックスをオフにします。

`maintain` (デフォルト)  
(デフォルト) リクエストタイプを `maintain` に設定した場合、フリートは目的のキャパシティに非同期リクエストを送り、中断したスポットインスタンスを自動的に補充して、キャパシティを維持します。コンソールを使用してタイプ `maintain` のスポットフリートを作成するとき、**[ターゲットキャパシティを維持]** チェックボックスをオンにします。

# タイプが instant の EC2 フリートを設定する
<a name="instant-fleet"></a>

EC2 フリート *インスタント* タイプは、希望する容量を起動するために 1 回だけ試行する、同期ワンタイムリクエストです。API レスポンスは、起動したインスタンスとともに、起動できなかったインスタンスのエラーを一覧表で表示します。このガイドで述べている、EC2 フリートの *インスタント* タイプを使用することにはいくつかの利点があります。構成例については、ガイドの最後に記載しています。

EC2 インスタンスを起動するために起動専用 API が必要なワークロードの場合は、RunInstances API を使用できます。ただし、RunInstances では、オンデマンドインスタンスまたはスポットインスタンスのみを起動できますが、同じリクエストで両方を起動することはできません。さらに、RunInstances を使用してスポットインスタンスを起動する場合、スポットインスタンスリクエストは 1 つのインスタンスタイプと 1 つのアベイラビリティーゾーンに制限されます。これは、単一のスポットキャパシティープール (同じインスタンスタイプとアベイラビリティーゾーンを有する、未使用のインスタンスセット) をターゲットにしています。スポットキャパシティープールに、リクエストに対して十分なスポットインスタンス容量がない場合、RunInstances 呼び出しは失敗します。

RunInstances を使用してスポットインスタンスを起動する代わりに、CreateFleet API を `instant` に設定した `type` パラメータと使用すると、以下の利点があります。
+ **オンデマンドインスタンスとスポットインスタンスを 1 回のリクエストで起動します。**EC2 フリートは、オンデマンドインスタンス、スポットインスタンス、またはその両方を起動できます。スポットインスタンスへのリクエストは、利用可能な容量があり、リクエストで指定した 1 時間あたりの上限料金がスポット料金を超えている場合に達成されます。
+ **スポットインスタンスの可用性を向上させます。**EC2 フリートタイプ `instant` を使用してスポットインスタンスを起動でき、以下のような [スポットベストプラクティス](spot-best-practices.md) という利点があります:
  + **ベストプラクティス: インスタンスタイプとアベイラビリティーゾーンについて柔軟に対応する。**

    利点:複数のインスタンスタイプとアベイラビリティーゾーンを指定すると、スポットキャパシティープールの数が増加します。これにより、スポットサービスは、希望するスポットコンピューティング容量を見つけて割り当てる可能性が高くなります。経験則としては、ワークロードごとに少なくとも 10 種類のインスタンスタイプで柔軟に対応し、すべてのアベイラビリティーゾーンが VPC で使用するように設定されていることを確認します。
  + **スポットベストプラクティス: price-capacity-optimized配分戦略を使用する。**

    利点: `price-capacity-optimized`配分戦略により、最も可用性の高いスポットキャパシティプールのインスタンスが特定され、そしてこのプールで最も低価格のもののインスタンスを自動的にプロビジョニングされます。最適な容量を持つプールからスポットインスタンス容量が供給されるため、Amazon EC2 が容量を元に戻す必要があるときにスポットインスタンスが中断されます。
+ **幅広い機能にアクセスする。**起動専用 API が必要なワークロードで、EC2 フリートにインスタンスのライフサイクルを管理させるのではなく、インスタンスのライフサイクルを管理したい場合は、[RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html) API の代わりに EC2 フリートタイプ `instant` を使用します。EC2 フリートは、次の例で示すように、RunInstances よりも幅広い機能を提供します。その他のすべてのワークロードについては、Amazon EC2 Auto Scaling を使用する必要があります。これは、ELB ベースのアプリケーション、コンテナ化されたワークロード、キュー処理ジョブなど、さまざまなワークロードに対してより包括的な機能セットを提供するからです。

EC2 フリート*インスタント*タイプを使用して、キャパシティブロックにインスタンスを起動できます。詳細については、「[チュートリアル: キャパシティブロックにインスタンスを起動するように EC2 フリートを設定する](ec2-fleet-launch-instances-capacity-blocks-walkthrough.md)」を参照してください。

Amazon EC2 Auto Scaling や Amazon EMR などの AWS サービスでは、EC2 フリートの *インスタント* タイプを使用し、EC2 インスタンスを起動します。

## EC2 フリートインスタントタイプ の前提条件
<a name="instant-fleet-prerequisites"></a>

EC2 フリートを作成するための前提条件については、「[EC2 フリートの前提条件](ec2-fleet-prerequisites.md)」を参照してください。

## 瞬時に実行される EC2 フリート機能
<a name="how-instant-fleet-works"></a>

EC2 フリートタイプ `instant` で作業する場合、イベントのシーケンスは以下のようになります。

1. **設定** `instant` のような [CreateFleet](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateFleet.html) リクエストタイプを設定してください。詳細については、「[EC2 フリートの作成](create-ec2-fleet.md)」を参照してください。API コールを行った後は、それを変更することはできません。

1. **リクエスト:** API コールを行うと、Amazon EC2 は希望する容量に同期ワンタイムリクエストを配置します。

1. **レスポンス:** API レスポンスには、起動したインスタンスとともに、起動できなかったインスタンスのエラーがリストされます。

1. **説明:** EC2 フリートの説明、EC2 フリートに関連付けられたインスタンスの一覧表示、EC2 フリートの履歴の表示を行うことができます。

1. **インスタンスの終了:** インスタンスはいつでも終了できます。

1. **フリートリクエストの削除:** フリートリクエストは、手動または自動で削除できます。
   + 手動: インスタンスの起動後に[フリートリクエストを削除](delete-fleet.md)できます。

     実行中のインスタンスを持つ削除した `instant` フリートはサポートされていないことに注意してください。`instant` フリートを削除すると、Amazon EC2 はすべてのインスタンスを自動的に終了させます。1000 個を超えるインスタンスで構成された フリートの場合、削除リクエストは失敗する可能性があります。1000 個を超えるインスタンスで構成されたフリートの場合は、まずほとんどのインスタンスを手動で終了させ、残りのインスタンスが 1000 個以下になるようにします。次に、フリートを削除すると、残りのインスタンスは自動的に終了します。
   + 自動: Amazon EC2 は、次のいずれかの後にフリートリクエストを削除します。
     + すべてのインスタンスが終了します。
     + フリートはインスタンスの起動に失敗します。

## 例
<a name="instant-fleet-examples"></a>

以下の例では、EC2 フリートタイプ `instant` の使用方法を示します。さまざまなユースケースで使用できます。EC2 CreateFleet API パラメータの使用方法の詳細については、*Amazon EC2 API リファレンス* 内の [CreateFleet](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateFleet.html) を参照してください。

**Topics**
+ [

### 例 1: 容量最適化配分戦略を使用してスポットインスタンスを起動する
](#instant-fleet-example-1)
+ [

### 例 2: 容量最適化割り当て戦略を使用して 1 つのスポットインスタンスを起動する
](#instant-fleet-example-2)
+ [

### 例 3: インスタンスの重み付けを使用して、スポットインスタンスを起動する
](#instant-fleet-example-3)
+ [

### 例 4: 1 つのアベイラビリティーゾーン内でスポットインスタンスを起動する
](#instant-fleet-example-4)
+ [

### 例 5: 単一アベイラビリティーゾーン内で単一インスタンスタイプのスポットインスタンスを起動する
](#instant-fleet-example-5)
+ [

### 例 6: 最小ターゲット容量を起動できる場合にのみスポットインスタンスを起動する
](#instant-fleet-example-6)
+ [

### 例 7: 単一のアベイラビリティーゾーンで同じインスタンスタイプで最小ターゲット容量を起動できる場合にのみスポットインスタンスを起動する
](#instant-fleet-example-7)
+ [

### 例 8: 複数の起動テンプレートを使用したインスタンスの起動
](#instant-fleet-example-8)
+ [

### 例 9: オンデマンドインスタンスのベースを使用してスポットインスタンスを起動する
](#instant-fleet-example-9)
+ [

### 例 10: キャパシティーの予約および優先順位配分戦略を使用したオンデマンドインスタンスをベースにして、キャパシティー最適化配分戦略を使用しスポットインスタンスを起動する
](#instant-fleet-example-10)
+ [

### 例 11: 容量最適化優先順位配分戦略を使用してスポットインスタンスを起動する
](#instant-fleet-example-11)
+ [

### 例 12: AMI ID ではなく Systems Manager パラメータを指定する
](#instant-fleet-example-12)

### 例 1: 容量最適化配分戦略を使用してスポットインスタンスを起動する
<a name="instant-fleet-example-1"></a>

次の例では、EC2 フリートのタイプで必要なパラメータ(起動テンプレート、ターゲット容量、デフォルト購入オプション、および起動テンプレートオーバーライド) を指定します。`instant`
+ 起動テンプレートは、起動テンプレート名とバージョン番号によって識別されます。
+ 12 の起動テンプレートオーバーライドでは、4 つの異なるインスタンスタイプと 3 つの異なるサブネットが指定され、それぞれ別のアベイラビリティーゾーンに配置されます。各インスタンスタイプとサブネットの組み合わせによってスポットキャパシティープールが定義され、12 個のスポットキャパシティープールが作成されます。
+ フリートのターゲット容量は 20 インスタンスです。
+ デフォルト購入オプションの `spot` では、フリートは、起動中のインスタンス数の最適な容量のスポットキャパシティプールに 20 個のスポットインスタンスを起動しようとします。

```
{
    "SpotOptions": {
        "AllocationStrategy": "capacity-optimized"
    },
    "LaunchTemplateConfigs": [
      {
         "LaunchTemplateSpecification":{
            "LaunchTemplateName":"ec2-fleet-lt1",
            "Version":"$Latest"
         },
         "Overrides":[
            {
               "InstanceType":"c5.large",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"c5.large",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"c5.large",
               "SubnetId":"subnet-49e41922"
            },
            {
               "InstanceType":"c5d.large",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"c5d.large",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"c5d.large",
               "SubnetId":"subnet-49e41922"
            },
            {
               "InstanceType":"m5.large",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"m5.large",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"m5.large",
               "SubnetId":"subnet-49e41922"
            },
            {
               "InstanceType":"m5d.large",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"m5d.large",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"m5d.large",
               "SubnetId":"subnet-49e41922"
            }
         ]
      }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 20,
        "DefaultTargetCapacityType": "spot"
    },
    "Type": "instant"
}
```

### 例 2: 容量最適化割り当て戦略を使用して 1 つのスポットインスタンスを起動する
<a name="instant-fleet-example-2"></a>

複数の EC2 フリート API コールタイプ `instant` を行い、TotalTargetCapacity を 1 に設定することで、一度に 1 つのスポットインスタンスを最適に起動できます。

次の例では、EC2 フリートインスタントタイプで必要なパラメータ (起動テンプレート、ターゲット容量、デフォルト購入オプション、および起動テンプレートオーバーライド) を指定します。起動テンプレートは、起動テンプレート名とバージョン番号によって識別されます。12 の起動テンプレートオーバーライドには、4 つの異なるインスタンスタイプと 3 つの異なるサブネットがあり、それぞれ別のアベイラビリティーゾーンにあります。フリートのターゲット容量は 1 インスタンスで、デフォルトの購入オプションはスポットです。これにより、フリートは、容量最適化の割り当て戦略に基づいて 12 のスポットキャパシティープールのいずれかからスポットインスタンスを起動し、最も利用可能な容量プールからスポットインスタンスを起動しようとします。

```
{
    "SpotOptions": {
        "AllocationStrategy": "capacity-optimized"
    },
    "LaunchTemplateConfigs": [
      {
         "LaunchTemplateSpecification":{
            "LaunchTemplateName":"ec2-fleet-lt1",
            "Version":"$Latest"
         },
         "Overrides":[
            {
               "InstanceType":"c5.large",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"c5.large",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"c5.large",
               "SubnetId":"subnet-49e41922"
            },
            {
               "InstanceType":"c5d.large",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"c5d.large",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"c5d.large",
               "SubnetId":"subnet-49e41922"
            },
            {
               "InstanceType":"m5.large",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"m5.large",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"m5.large",
               "SubnetId":"subnet-49e41922"
            },
            {
               "InstanceType":"m5d.large",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"m5d.large",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"m5d.large",
               "SubnetId":"subnet-49e41922"
            }
         ]
      }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 1,
        "DefaultTargetCapacityType": "spot"
    },
    "Type": "instant"
}
```

### 例 3: インスタンスの重み付けを使用して、スポットインスタンスを起動する
<a name="instant-fleet-example-3"></a>

次の例では、インスタンス分量指定を使っています。これは、料金が 1 インスタンス時間当たりではなく、1 ユニット時間当たりであることを意味します。各起動設定では、ワークロードのユニットに 15 GB のメモリと 4 vCPU が必要であると仮定して、インスタンスで実行できるワークロードのユニット数に基づいて、異なるインスタンスタイプと異なる重みが表示されます。たとえば、m5.xlarge (4 vCPU と 16 GB のメモリ) は 1 つのユニットを実行でき、重み付けは 1、m5.2xlarge (8 vCPU と 32 GB のメモリ) は 2 ユニットを実行でき、重み付けは 2 というように続きます。総目標容量は 40 ユニットに設定されています。デフォルトの購入オプションはスポットで、割り当て戦略は容量最適化です。これにより、40 m5.xlarge (40 を 1 で割ったもの) 、20 m5.2xlarge (40 を 2 で割ったもの) 、10 m5.4xlarge (40 を 4 で割ったもの) 、5 m5.8xlarge (40 を 8 で割ったもの) 、またはインスタンスタイプの組み合わせのいずれかになります。容量を最適化した割り当て戦略に基づきます。

詳細については、「[インスタンスの重み付けを使用して、EC2 フリートまたはスポットフリートのコストとパフォーマンスを管理する](ec2-fleet-instance-weighting.md)」を参照してください。

```
{
   "SpotOptions":{
      "AllocationStrategy":"capacity-optimized"
   },
   "LaunchTemplateConfigs":[
      {
         "LaunchTemplateSpecification":{
            "LaunchTemplateName":"ec2-fleet-lt1",
            "Version":"$Latest"
         },
         "Overrides":[
            {
               "InstanceType":"m5.xlarge",
               "SubnetId":"subnet-fae8c380",
               "WeightedCapacity":1
            },
            {
               "InstanceType":"m5.xlarge",
               "SubnetId":"subnet-e7188bab",
               "WeightedCapacity":1
            },
            {
               "InstanceType":"m5.xlarge",
               "SubnetId":"subnet-49e41922",
               "WeightedCapacity":1
            },
            {
               "InstanceType":"m5.2xlarge",
               "SubnetId":"subnet-fae8c380",
               "WeightedCapacity":2
            },
            {
               "InstanceType":"m5.2xlarge",
               "SubnetId":"subnet-e7188bab",
               "WeightedCapacity":2
            },
            {
               "InstanceType":"m5.2xlarge",
               "SubnetId":"subnet-49e41922",
               "WeightedCapacity":2
            },
            {
               "InstanceType":"m5.4xlarge",
               "SubnetId":"subnet-fae8c380",
               "WeightedCapacity":4
            },
            {
               "InstanceType":"m5.4xlarge",
               "SubnetId":"subnet-e7188bab",
               "WeightedCapacity":4
            },
            {
               "InstanceType":"m5.4xlarge",
               "SubnetId":"subnet-49e41922",
               "WeightedCapacity":4
            },
            {
               "InstanceType":"m5.8xlarge",
               "SubnetId":"subnet-fae8c380",
               "WeightedCapacity":8
            },
            {
               "InstanceType":"m5.8xlarge",
               "SubnetId":"subnet-e7188bab",
               "WeightedCapacity":8
            },
            {
               "InstanceType":"m5.8xlarge",
               "SubnetId":"subnet-49e41922",
               "WeightedCapacity":8
            }
         ]
      }
   ],
   "TargetCapacitySpecification":{
      "TotalTargetCapacity":40,
      "DefaultTargetCapacityType":"spot"
   },
   "Type":"instant"
}
```

### 例 4: 1 つのアベイラビリティーゾーン内でスポットインスタンスを起動する
<a name="instant-fleet-example-4"></a>

スポットオプション singleAvailabilityZone を true に設定することで、1 つのアベイラビリティーゾーンですべてのインスタンスを起動するようにフリートを設定できます。

12 の起動テンプレートオーバーライドでは、インスタンスタイプとサブネット (それぞれ別々のアベイラビリティーゾーン内) が異なりますが、重み容量は同じです。合計ターゲット容量は 20 インスタンスで、デフォルトの購入オプションは スポットで、スポット配分戦略は容量最適化です。EC2 フリートは、起動仕様を使用して最適な容量を持つスポットキャパシティープールから、1 つの AZ で 20 個のスポットインスタンスをすべて起動します。

```
{
    "SpotOptions": {
        "AllocationStrategy": "capacity-optimized",
        "SingleAvailabilityZone": true
    },
    "LaunchTemplateConfigs": [
      {
         "LaunchTemplateSpecification":{
            "LaunchTemplateName":"ec2-fleet-lt1",
            "Version":"$Latest"
         },
         "Overrides":[
            {
               "InstanceType":"c5.4xlarge",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"c5.4xlarge",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"c5.4xlarge",
               "SubnetId":"subnet-49e41922"
            },
            {
               "InstanceType":"c5d.4xlarge",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"c5d.4xlarge",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"c5d.4xlarge",
               "SubnetId":"subnet-49e41922"
            },
            {
               "InstanceType":"m5.4xlarge",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"m5.4xlarge",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"m5.4xlarge",
               "SubnetId":"subnet-49e41922"
            },
            {
               "InstanceType":"m5d.4xlarge",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"m5d.4xlarge",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"m5d.4xlarge",
               "SubnetId":"subnet-49e41922"
            }
         ]
      }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 20,
        "DefaultTargetCapacityType": "spot"
    },
    "Type": "instant"
}
```

### 例 5: 単一アベイラビリティーゾーン内で単一インスタンスタイプのスポットインスタンスを起動する
<a name="instant-fleet-example-5"></a>

SpotOptions singleInstanceType を true、SingleAvailabilityZone を true に設定することで、同じインスタンスタイプのすべてのインスタンスを単一のアベイラビリティーゾーンで起動するようにフリートを設定できます。

12 の起動テンプレートオーバーライドでは、インスタンスタイプとサブネット (それぞれ別々のアベイラビリティーゾーン内) が異なりますが、重み容量は同じです。合計ターゲット容量は 20 インスタンスで、デフォルトの購入オプションは spot で、スポット配分戦略は容量最適化です。EC2 フリートは、起動仕様を使用して最適な容量でスポットインスタンスプールから、同じインスタンスタイプの 20 個のスポットインスタンスをすべて単一の AZ で起動します。

```
{
    "SpotOptions": {
        "AllocationStrategy": "capacity-optimized",
        "SingleInstanceType": true,
        "SingleAvailabilityZone": true
    },
    "LaunchTemplateConfigs": [
      {
         "LaunchTemplateSpecification":{
            "LaunchTemplateName":"ec2-fleet-lt1",
            "Version":"$Latest"
         },
         "Overrides":[
            {
               "InstanceType":"c5.4xlarge",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"c5.4xlarge",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"c5.4xlarge",
               "SubnetId":"subnet-49e41922"
            },
            {
               "InstanceType":"c5d.4xlarge",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"c5d.4xlarge",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"c5d.4xlarge",
               "SubnetId":"subnet-49e41922"
            },
            {
               "InstanceType":"m5.4xlarge",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"m5.4xlarge",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"m5.4xlarge",
               "SubnetId":"subnet-49e41922"
            },
            {
               "InstanceType":"m5d.4xlarge",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"m5d.4xlarge",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"m5d.4xlarge",
               "SubnetId":"subnet-49e41922"
            }
         ]
      }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 20,
        "DefaultTargetCapacityType": "spot"
    },
    "Type": "instant"
}
```

### 例 6: 最小ターゲット容量を起動できる場合にのみスポットインスタンスを起動する
<a name="instant-fleet-example-6"></a>

スポットオプション MinTargetCapacity を一緒に起動する最小ターゲットキャパシティに設定することで、最小ターゲットキャパシティを起動できる場合にのみインスタンスを起動するようにフリートを設定できます。

MinTargetCapacity を指定する場合は、SingleInstanceType または SingleAvailabilityZone のパラメータを少なくとも 1 つ指定する必要があります。この例では、SingleInstanceType が指定されているため、20 個のインスタンスすべてが同じインスタンスタイプを使用する必要があります。

12 の起動テンプレートオーバーライドでは、インスタンスタイプとサブネット (それぞれ別々のアベイラビリティーゾーン内) が異なりますが、重み容量は同じです。合計ターゲット容量と最小ターゲット容量は両方とも 20 インスタンスに設定され、デフォルトの購入オプションはスポット、スポット割り当て戦略は容量最適化です。EC2 フリートは、起動テンプレートのオーバーライドを使用して、最適な容量でスポットキャパシティープールから 20 個のスポットインスタンスを起動します。これは、20 個のインスタンスをすべて同時に起動できる場合のみです。

```
{
    "SpotOptions": {
        "AllocationStrategy": "capacity-optimized",
        "SingleInstanceType": true,
        "MinTargetCapacity": 20
    },
    "LaunchTemplateConfigs": [
      {
         "LaunchTemplateSpecification":{
            "LaunchTemplateName":"ec2-fleet-lt1",
            "Version":"$Latest"
         },
         "Overrides":[
            {
               "InstanceType":"c5.4xlarge",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"c5.4xlarge",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"c5.4xlarge",
               "SubnetId":"subnet-49e41922"
            },
            {
               "InstanceType":"c5d.4xlarge",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"c5d.4xlarge",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"c5d.4xlarge",
               "SubnetId":"subnet-49e41922"
            },
            {
               "InstanceType":"m5.4xlarge",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"m5.4xlarge",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"m5.4xlarge",
               "SubnetId":"subnet-49e41922"
            },
            {
               "InstanceType":"m5d.4xlarge",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"m5d.4xlarge",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"m5d.4xlarge",
               "SubnetId":"subnet-49e41922"
            }
         ]
      }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 20,
        "DefaultTargetCapacityType": "spot"
    },
    "Type": "instant"
}
```

### 例 7: 単一のアベイラビリティーゾーンで同じインスタンスタイプで最小ターゲット容量を起動できる場合にのみスポットインスタンスを起動する
<a name="instant-fleet-example-7"></a>

スポットオプション MinTargetCapacity を SingleInstanceType および SingleAvailabilityZone オプションとともに起動する最小ターゲットキャパシティに設定することで、単一のアベイラビリティーゾーン内の単一のインスタンスタイプで最小ターゲットキャパシティを起動できる場合にのみ、インスタンスを起動するようにフリートを設定できます。

起動テンプレートをオーバーライドする 12 の起動条件は、インスタンスタイプとサブネットが異なりますが(それぞれ異なるアベイラビリティーゾーン内で)、加重容量は同じです。合計ターゲット容量と最小ターゲット容量は両方とも 20 インスタンスに設定され、デフォルトの購入オプションはスポット、スポット割り当て戦略は容量最適化、SingleInstanceType は true、SingleAvailabilityZone は true です。EC2 フリートは、同じインスタンスタイプの 20 個のスポットインスタンスをすべて 1 つの AZ で起動し、起動条件を使用して最適な容量を持つスポットキャパシティープールから起動します。これは、20 個のインスタンスをすべて同時に起動できる場合に限ります。

```
{
    "SpotOptions": {
        "AllocationStrategy": "capacity-optimized",
        "SingleInstanceType": true,
        "SingleAvailabilityZone": true,
        "MinTargetCapacity": 20
    },
    "LaunchTemplateConfigs": [
      {
         "LaunchTemplateSpecification":{
            "LaunchTemplateName":"ec2-fleet-lt1",
            "Version":"$Latest"
         },
         "Overrides":[
            {
               "InstanceType":"c5.4xlarge",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"c5.4xlarge",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"c5.4xlarge",
               "SubnetId":"subnet-49e41922"
            },
            {
               "InstanceType":"c5d.4xlarge",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"c5d.4xlarge",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"c5d.4xlarge",
               "SubnetId":"subnet-49e41922"
            },
            {
               "InstanceType":"m5.4xlarge",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"m5.4xlarge",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"m5.4xlarge",
               "SubnetId":"subnet-49e41922"
            },
            {
               "InstanceType":"m5d.4xlarge",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"m5d.4xlarge",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"m5d.4xlarge",
               "SubnetId":"subnet-49e41922"
            }
         ]
      }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 20,
        "DefaultTargetCapacityType": "spot"
    },
    "Type": "instant"
}
```

### 例 8: 複数の起動テンプレートを使用したインスタンスの起動
<a name="instant-fleet-example-8"></a>

複数の起動テンプレートを指定することで、異なるインスタンスタイプまたはインスタンスタイプのグループに対して異なる起動条件でインスタンスを起動するようにフリートを設定できます。この例では、インスタンスタイプごとに異なる EBS ボリュームサイズが必要で、起動テンプレート ec2-fleet-lt-4xl、ec2-fleet-lt-9xl、ec2-fleet-lt-18xl で設定されています。

この例では、サイズに基づいて 3 種類のインスタンスタイプに対して 3 種類の起動テンプレートを使用します。すべての起動テンプレートの起動条件オーバーライドでは、インスタンスタイプの vCPUs に基づくインスタンスの重みが使用されます。合計ターゲット容量は 144 ユニットで、デフォルトの購入オプションは spot で、スポット配分戦略は容量最適化です。EC2 フリートは、起動テンプレート ec2-fleet-4xl を使用して 9 c5n.4xlarge (144 を 16 で割った) を起動するか、起動テンプレート ec2-fleet-9xl を使用して 4 c5n.9xlarge (144 を 36 で割った) を起動するか、 または起動テンプレート ec2-fleet-18xl を使用して 2 c5n.18xlarge (144 を 72 で割った) を起動するか、もしくはインスタンスタイプ容量最適化の割り当て戦略に基づいて重みを追加したインスタンスタイプの混合を使って起動することができます。

```
{
    "SpotOptions": {
        "AllocationStrategy": "capacity-optimized"
    },
    "LaunchTemplateConfigs": [
      {
         "LaunchTemplateSpecification":{
            "LaunchTemplateName":"ec2-fleet-lt-18xl",
            "Version":"$Latest"
         },
         "Overrides":[
            {
               "InstanceType":"c5n.18xlarge",
               "SubnetId":"subnet-fae8c380",
               "WeightedCapacity":72
            },
            {
               "InstanceType":"c5n.18xlarge",
               "SubnetId":"subnet-e7188bab",
               "WeightedCapacity":72
            },
            {
               "InstanceType":"c5n.18xlarge",
               "SubnetId":"subnet-49e41922",
               "WeightedCapacity":72
            }
         ]
      },
      {
         "LaunchTemplateSpecification":{
            "LaunchTemplateName":"ec2-fleet-lt-9xl",
            "Version":"$Latest"
         },
         "Overrides":[
            {
               "InstanceType":"c5n.9xlarge",
               "SubnetId":"subnet-fae8c380",
               "WeightedCapacity":36
            },
            {
               "InstanceType":"c5n.9xlarge",
               "SubnetId":"subnet-e7188bab",
               "WeightedCapacity":36
            },
            {
               "InstanceType":"c5n.9xlarge",
               "SubnetId":"subnet-49e41922",
               "WeightedCapacity":36
            }
         ]
      },
      {
         "LaunchTemplateSpecification":{
            "LaunchTemplateName":"ec2-fleet-lt-4xl",
            "Version":"$Latest"
         },
         "Overrides":[
            {
               "InstanceType":"c5n.4xlarge",
               "SubnetId":"subnet-fae8c380",
               "WeightedCapacity":16
            },
            {
               "InstanceType":"c5n.4xlarge",
               "SubnetId":"subnet-e7188bab",
               "WeightedCapacity":16
            },
            {
               "InstanceType":"c5n.4xlarge",
               "SubnetId":"subnet-49e41922",
               "WeightedCapacity":16
            }
         ]
      }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 144,
        "DefaultTargetCapacityType": "spot"
    },
    "Type": "instant"
}
```

### 例 9: オンデマンドインスタンスのベースを使用してスポットインスタンスを起動する
<a name="instant-fleet-example-9"></a>

次の例では、フリートの合計ターゲット容量を 20 インスタンス、ターゲット容量を 5 オンデマンドインスタンス として指定します。デフォルト購入オプションはスポットです。フリートは指定されたとおり 5 オンデマンドインスタンス を起動しますが、合計ターゲット容量を満たすために、さらに 15 以上のインスタンスを起動する必要があります。差額の購入オプションは、TotalTargetCapacity - OnDemandTargetCapacity = DefaultTargetCapacityType で計算されます。この結果、15 のスポットインスタンスを起動するフリートは容量最適化配分戦略に基づいて 12 スポットキャパシティープールのうちの 1 つを形成します。

```
{
    "SpotOptions": {
        "AllocationStrategy": "capacity-optimized"
    },
    "LaunchTemplateConfigs": [
      {
         "LaunchTemplateSpecification":{
            "LaunchTemplateName":"ec2-fleet-lt1",
            "Version":"$Latest"
         },
         "Overrides":[
            {
               "InstanceType":"c5.large",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"c5.large",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"c5.large",
               "SubnetId":"subnet-49e41922"
            },
            {
               "InstanceType":"c5d.large",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"c5d.large",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"c5d.large",
               "SubnetId":"subnet-49e41922"
            },
            {
               "InstanceType":"m5.large",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"m5.large",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"m5.large",
               "SubnetId":"subnet-49e41922"
            },
            {
               "InstanceType":"m5d.large",
               "SubnetId":"subnet-fae8c380"
            },
            {
               "InstanceType":"m5d.large",
               "SubnetId":"subnet-e7188bab"
            },
            {
               "InstanceType":"m5d.large",
               "SubnetId":"subnet-49e41922"
            }
         ]
      }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 20,
        "OnDemandTargetCapacity": 5,
        "DefaultTargetCapacityType": "spot"
    },
    "Type": "instant"
}
```

### 例 10: キャパシティーの予約および優先順位配分戦略を使用したオンデマンドインスタンスをベースにして、キャパシティー最適化配分戦略を使用しスポットインスタンスを起動する
<a name="instant-fleet-example-10"></a>

キャパシティーの予約の使用戦略を use-capacity-reservations-first に設定することで、デフォルトのターゲット容量タイプをスポットにしたオンデマンドインスタンス の起動時に、最初にオンデマンドキャパシティー予約 を使用するようにフリートを設定できます。また、複数のインスタンスプールに未使用のキャパシティーの予約がある場合、選択したオンデマンド配分戦略が適用されます。この例では、オンデマンド配分戦略は優先されています。

この例では、利用可能な未使用の予約予約 が 6 個あります。これは、フリートの目標オンデマンド容量である 10 オンデマンドインスタンス を下回っています。

アカウントには、2 つのプールに 6 個の未使用キャパシティーの予約 があります。各プールのキャパシティーの予約の数は AvailableInstanceCount で示されます。

```
{
    "CapacityReservationId": "cr-111", 
    "InstanceType": "m5.large", 
    "InstancePlatform": "Linux/UNIX", 
    "AvailabilityZone": "us-east-1a", 
    "AvailableInstanceCount": 3, 
    "InstanceMatchCriteria": "open", 
    "State": "active"
}
 
{
    "CapacityReservationId": "cr-222", 
    "InstanceType": "c5.large", 
    "InstancePlatform": "Linux/UNIX", 
    "AvailabilityZone": "us-east-1a", 
    "AvailableInstanceCount": 3, 
    "InstanceMatchCriteria": "open", 
    "State": "active"
}
```

以下のフリート設定は、この例に関連する設定のみを示しています。オンデマンド配分戦略は優先的であり、キャパシティーの予約の使用戦略予約は use-capacity-reservations-first です。スポット配分戦略を容量最適化する 合計ターゲット容量は 20 で、オンデマンドターゲット容量は 10 で、デフォルトのターゲット容量タイプはスポットです。

```
{
    "SpotOptions": {
        "AllocationStrategy": "capacity-optimized"
    },
    "OnDemandOptions":{
       "CapacityReservationOptions": {
         "UsageStrategy": "use-capacity-reservations-first"
       },
       "AllocationStrategy":"prioritized"
    },
    "LaunchTemplateConfigs": [
      {
         "LaunchTemplateSpecification":{
            "LaunchTemplateName":"ec2-fleet-lt1",
            "Version":"$Latest"
         },
         "Overrides":[
            {
               "InstanceType":"c5.large",
               "SubnetId":"subnet-fae8c380",
               "Priority": 1.0
            },
            {
               "InstanceType":"c5.large",
               "SubnetId":"subnet-e7188bab",
               "Priority": 2.0
            },
            {
               "InstanceType":"c5.large",
               "SubnetId":"subnet-49e41922",
               "Priority": 3.0
            },
            {
               "InstanceType":"c5d.large",
               "SubnetId":"subnet-fae8c380",
               "Priority": 4.0
            },
            {
               "InstanceType":"c5d.large",
               "SubnetId":"subnet-e7188bab",
               "Priority": 5.0
            },
            {
               "InstanceType":"c5d.large",
               "SubnetId":"subnet-49e41922",
               "Priority": 6.0
            },
            {
               "InstanceType":"m5.large",
               "SubnetId":"subnet-fae8c380",
               "Priority": 7.0
            },
            {
               "InstanceType":"m5.large",
               "SubnetId":"subnet-e7188bab",
               "Priority": 8.0
            },
            {
               "InstanceType":"m5.large",
               "SubnetId":"subnet-49e41922",
               "Priority": 9.0
            },
            {
               "InstanceType":"m5d.large",
               "SubnetId":"subnet-fae8c380",
               "Priority": 10.0
            },
            {
               "InstanceType":"m5d.large",
               "SubnetId":"subnet-e7188bab",
               "Priority": 11.0
            },
            {
               "InstanceType":"m5d.large",
               "SubnetId":"subnet-49e41922",
               "Priority": 12.0
            }
         ]
      }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 20,
        "OnDemandTargetCapacity": 10,
        "DefaultTargetCapacityType": "spot"
    },
    "Type": "instant"
}
```

上記の設定を使用してインスタントフリートを作成すると、目標容量を満たすために以下の 20 個のインスタンスが起動されます。
+ 7 c5.large オンデマンドインスタンス (us-east-1a) – c5.large (us-east-1a) が最初に優先され、利用可能な未使用 c5.large キャパシティーの予約が 3 つあります。キャパシティーの予約は、3 つの オンデマンドインスタンス を起動するために最初に使用され、さらにオンデマンド配分戦略に従って、この例で優先されている追加の 4 つのオンデマンドインスタンス が起動されます。
+ 3 m5.large オンデマンドインスタンス (us-east-1a) – m5.large (us-east-1a) が 2 番目に優先され、利用可能な未使用の m5.large キャパシティ予約が 3 つあります。
+ 容量最適化割り当て戦略に従って最適な容量を持つ 12 個のスポットキャパシティープールのうちの 1 つからの 10 個のスポットインスタンス。

フリートの起動後、[describe-capacity-reservations](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-capacity-reservations.html) を実行して、未使用のキャパシティ予約の数を確認できます。この例では、以下のレスポンスが表示されます。これは、c5.large および m5.large のすべてのキャパシティーの予約が使用されていることを示しています。

```
{
    "CapacityReservationId": "cr-111",
    "InstanceType": "m5.large",  
    "AvailableInstanceCount": 0
}
 
{
    "CapacityReservationId": "cr-222",
    "InstanceType": "c5.large", 
    "AvailableInstanceCount": 0
}
```

### 例 11: 容量最適化優先順位配分戦略を使用してスポットインスタンスを起動する
<a name="instant-fleet-example-11"></a>

次の例では、EC2 フリートインスタントタイプで必要なパラメータ (起動テンプレート、ターゲット容量、デフォルト購入オプション、および起動テンプレートオーバーライド) を指定します。起動テンプレートは、起動テンプレート名とバージョン番号によって識別されます。起動テンプレートを上書きする 12 の起動仕様には、優先順位が割り当てられた 4 つの異なるインスタンスタイプと、それぞれ別のアベイラビリティーゾーンに 3 つの異なるサブネットがあります。フリートのターゲット容量は 20 インスタンスで、デフォルトの購入オプションはスポットです。このため、フリートは、容量最適化優先順位付き割り当て戦略に基づいて 12 のスポットキャパシティープールのいずれかから 20 のスポットインスタンスを起動しようとします。これは、ベストエフォート方式で優先順位を実装します。ですが、最初に容量を最適化します。

```
{
    "SpotOptions": {
        "AllocationStrategy": "capacity-optimized-prioritized"
    },
    "LaunchTemplateConfigs": [
      {
         "LaunchTemplateSpecification":{
            "LaunchTemplateName":"ec2-fleet-lt1",
            "Version":"$Latest"
         },
         "Overrides":[
            {
               "InstanceType":"c5.large",
               "SubnetId":"subnet-fae8c380",
               "Priority": 1.0
            },
            {
               "InstanceType":"c5.large",
               "SubnetId":"subnet-e7188bab",
               "Priority": 1.0
            },
            {
               "InstanceType":"c5.large",
               "SubnetId":"subnet-49e41922",
               "Priority": 1.0
            },
            {
               "InstanceType":"c5d.large",
               "SubnetId":"subnet-fae8c380",
               "Priority": 2.0
            },
            {
               "InstanceType":"c5d.large",
               "SubnetId":"subnet-e7188bab",
               "Priority": 2.0
            },
            {
               "InstanceType":"c5d.large",
               "SubnetId":"subnet-49e41922",
               "Priority": 2.0
            },
            {
               "InstanceType":"m5.large",
               "SubnetId":"subnet-fae8c380",
               "Priority": 3.0
            },
            {
               "InstanceType":"m5.large",
               "SubnetId":"subnet-e7188bab",
               "Priority": 3.0
            },
            {
               "InstanceType":"m5.large",
               "SubnetId":"subnet-49e41922",
               "Priority": 3.0
            },
            {
               "InstanceType":"m5d.large",
               "SubnetId":"subnet-fae8c380",
               "Priority": 4.0
            },
            {
               "InstanceType":"m5d.large",
               "SubnetId":"subnet-e7188bab",
               "Priority": 4.0
            },
            {
               "InstanceType":"m5d.large",
               "SubnetId":"subnet-49e41922",
               "Priority": 4.0
            }
         ]
      }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 20,
        "DefaultTargetCapacityType": "spot"
    },
    "Type": "instant"
}
```

### 例 12: AMI ID ではなく Systems Manager パラメータを指定する
<a name="instant-fleet-example-12"></a>

以下の例では、起動テンプレートを使用して、フリート内のインスタンスの設定を指定しています。この例では、AMI ID を指定する代わりに `ImageId` を使用しており、AMI は Systems Manager パラメータで参照されます。Systems Manager パラメータは、インスタンスの起動時に AMI ID に解決されます。

この例では、Systems Manager パラメータを `resolve:ssm:golden-ami` という有効な形式で指定しています。Systems Manager パラメータには、この他にも有効な形式があります。詳細については、「[AMI ID のかわりに Systems Manager パラメータを使用する](create-launch-template.md#use-an-ssm-parameter-instead-of-an-ami-id)」を参照してください。

**注記**  
フリートタイプはタイプ`instant`である必要があります。他のフリートタイプでは、AMI ID の代わりに Systems Manager パラメータを指定することはできません。

```
{
    "LaunchTemplateData": {
        "ImageId": "resolve:ssm:golden-ami",
        "InstanceType": "m5.4xlarge",
        "TagSpecifications": [{
            "ResourceType": "instance",
            "Tags": [{
                "Key": "Name",
                "Value": "webserver"
            }]
        }]
    }
}
```

# EC2 フリートまたはスポットフリートの支出制限を設定する
<a name="ec2-fleet-control-spending"></a>

EC2 フリートまたはスポットフリートに対する 1 時間あたりの支出金額に制限を設定できます。支出制限に達すると、フリートはターゲットキャパシティに達していない場合でもインスタンスの起動を停止します。

オンデマンドインスタンスとスポットインスタンスに個別に支出制限を設定できます。

**EC2 フリート内のオンデマンドインスタンスとスポットインスタンスに支出制限を設定するには**  
[ create-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-fleet.html) コマンドと以下のパラメータを使用します。
+ オンデマンドインスタンスの場合: `OnDemandOptions` 構造で、`MaxTotalPrice` フィールドに支出制限を指定します。
+ スポットインスタンスの場合: `SpotOptions` 構造で、`MaxTotalPrice` フィールドに支出制限を指定します。

**スポットフリート内のオンデマンドインスタンスとスポットインスタンスに支出制限を設定するには**  
Amazon EC2 コンソールまたは AWS CLI を使用して、支出制限を設定できます。

(コンソール) スポットフリートを作成するとき、**[スポットインスタンスの最大コストを設定]** チェックボックスをオンにし、**[最大コスト (1 時間あたり) を設定]** の値を入力してください。詳細については、「[定義済みパラメータを使用してスポットフリートリクエストを作成する](create-spot-fleet.md#create-spot-fleet-advanced)」のステップ 6.e を参照してください。

(AWS CLI) [request-spot-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/request-spot-fleet.html) コマンドと以下のパラメータを使用します。
+ オンデマンドインスタンスの場合: `OnDemandMaxTotalPrice` フィールドに支出制限を指定します。
+ スポットインスタンスの場合: `SpotMaxTotalPrice` フィールドに支出制限を指定します。

## 例
<a name="ec2-fleet-spending-limit-examples"></a>

以下の例は、2 つの異なるシナリオを示しています。最初の例では、オンデマンドインスタンスに設定されたターゲットキャパシティに達したことを確認すると (`OnDemandTargetCapacity`)、フリートはオンデマンドインスタンスの起動を停止します。2 番目の例では、オンデマンドインスタンスに対する 1 時間あたりの最大支出金額に達すると (`MaxTotalPrice`)、フリートはオンデマンドインスタンスの起動を停止します。

**例: ターゲットキャパシティに達したらオンデマンドインスタンスの起動を停止する**

`m4.large` オンデマンドインスタンス に対するリクエストの内容が以下のとおりとします。
+ オンデマンド料金: 1 時間あたり 0.10 USD
+ `OnDemandTargetCapacity`: 10
+ `MaxTotalPrice`: 1.50 USD

フリートは、10 個のオンデマンドインスタンスを起動します。合計料金 1.00 USD (10 インスタンス x 0.10 USD) がオンデマンドインスタンスの `MaxTotalPrice` (1.50 USD) を超えないようにするためです。

**例: 最大合計料金に達したらオンデマンドインスタンスの起動を停止する**

`m4.large` オンデマンドインスタンス に対するリクエストの内容が以下のとおりとします。
+ オンデマンド料金: 1 時間あたり 0.10 USD
+ `OnDemandTargetCapacity`: 10
+ `MaxTotalPrice`: 0.80 USD

フリートがオンデマンドターゲットキャパシティ (10 個のオンデマンドインスタンス) を起動した場合、1 時間あたりの合計コストは 1.00 USD になります。これは オンデマンドインスタンス の `MaxTotalPrice` に指定した料金 (0.80 USD) を超えます。支払い可能な額を超えないように、フリートは 8 個のオンデマンドインスタンス (オンデマンドターゲットキャパシティ未満) を起動します。これを超えて起動すると、オンデマンドインスタンスの `MaxTotalPrice` を超えてしまいます。

## バーストパフォーマンスインスタンス
<a name="ec2-fleet-burstable-spot-instances"></a>

[バーストパフォーマンスインスタンスタイプ](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 インスタンスの初期起動を効率的に実現することを意図しています。T2 インスタンスの起動を繰り返して新しい起動クレジットにアクセスすることは許可されていません。CPU が持続的に必要な場合、(一定期間のアイドリングにより) クレジットを獲得して T2 スポットインスタンス の [Unlimited モード](burstable-performance-instances-unlimited-mode.md)　を使用するか、専用 CPU を搭載したインスタンスタイプを使用します。

# EC2 フリートまたはスポットフリートのインスタンスタイプを選択するための属性を指定する
<a name="ec2-fleet-attribute-based-instance-type-selection"></a>

EC2 フリートまたはスポットフリートを作成するときは、フリートのオンデマンドインスタンスとスポットインスタンスを設定するために、1 つ以上のインスタンスタイプを指定する必要があります。インスタンスタイプを手動で指定する代わりに、インスタンスが持つ必要がある属性を指定でき、Amazon EC2 は、それらの属性を持つすべてのインスタンスタイプを識別します。これは *属性ベースのインスタンスタイプの選択* と呼ばれます。例えば、インスタンスに必要な vCPU の最小数および最大数を指定できます。フリートは、これらの vCPU 要件を満たす使用可能なインスタンスタイプを使用してインスタンスを起動します。

属性ベースのインスタンスタイプの選択は、コンテナやウェブフリートの実行、ビッグデータの処理、継続的インテグレーションおよびデプロイ (CI/CD) ツールの実装など、使用するインスタンスタイプについて柔軟に使用できるワークロードとフレームワークに最適です。

**利点**

属性ベースのインスタンスタイプを選択すると、次の利点があります。
+ **適切なインスタンスタイプを簡単に使用** - 利用可能なインスタンスタイプの数が多いため、ワークロードに適したインスタンスタイプを見つけるには時間がかかることがあります。インスタンス属性を指定すると、インスタンスタイプにはワークロードに必要な属性が自動的に設定されます。
+ **設定の簡素化** - フリートに複数のインスタンスタイプを手動で指定するには、インスタンスタイプごとに個別の起動テンプレートのオーバーライドを作成する必要があります。ただし、属性ベースのインスタンスタイプを選択すると、複数のインスタンスタイプを提供するには、起動テンプレートまたは起動テンプレートの上書きでインスタンス属性を指定するだけで済みます。
+ **新しいインスタンスタイプを自動的に使用** - インスタンスタイプではなくインスタンス属性を指定すると、フリートではリリース時に新しい世代のインスタンスタイプを使用できます。これにより、フリートの設定の将来の対応性も確保されます。
+ **インスタンスタイプの柔軟性** - インスタンスタイプではなくインスタンス属性を指定すると、フリートはスポットインスタンスを起動するために幅広いインスタンスタイプから選択することができ、[インスタンスタイプの柔軟性というスポットのベストプラクティス](spot-best-practices.md#be-instance-type-flexible)に準拠することができます。

**Topics**
+ [

## 属性ベースのインスタンスタイプ選択の仕組み
](#ec2fleet-abs-how-it-works)
+ [

## 料金保護
](#ec2fleet-abs-price-protection)
+ [

## パフォーマンス保護
](#ec2fleet-abis-performance-protection)
+ [

## 考慮事項
](#ec2fleet-abs-considerations)
+ [

## 属性ベースのインスタンスタイプを選択した EC2 フリートを作成する
](#abs-create-ec2-fleet)
+ [

## 属性ベースのインスタンスタイプを選択してスポットフリートを作成する
](#abs-create-spot-fleet)
+ [

## EC2 フリートの有効な設定と無効な設定の例
](#ec2fleet-abs-example-configs)
+ [

## スポットフリートの有効な設定と無効な設定の例
](#spotfleet-abs-example-configs)
+ [

## 指定された属性でインスタンスタイプをプレビューする
](#ec2fleet-get-instance-types-from-instance-requirements)

## 属性ベースのインスタンスタイプ選択の仕組み
<a name="ec2fleet-abs-how-it-works"></a>

フリート設定で属性ベースのインスタンスタイプの選択を使用するには、インスタンスタイプのリストをインスタンスが必要とするインスタンス属性のリストに置き換えます。EC2 フリートまたはスポットフリートは、指定されたインスタンス属性を持つ使用可能なインスタンスタイプでインスタンスを起動します。

**Topics**
+ [

### インスタンス属性のタイプ
](#ef-abs-instance-attribute-types)
+ [

### 属性ベースのインスタンスタイプの選択を設定する場所
](#ef-abs-where-to-configure)
+ [

### フリートをプロビジョニングするときに、EC2 フリートまたはスポットフリートが属性ベースのインスタンスタイプの選択をどのように使用するか
](#how-ef-uses-abs)

### インスタンス属性のタイプ
<a name="ef-abs-instance-attribute-types"></a>

コンピューティング要件を表現するために指定できるインスタンス属性はいくつかあります。
+ **vCPU 数** – インスタンスあたりの vCPU の最小数と最大数。
+ **メモリ** – インスタンスあたりのメモリの最小および最大 GiB。
+ **ローカルストレージ** – EBS ボリュームとインスタンスストアボリュームのどちらをローカルストレージに使用するか。
+ **バースト可能なパフォーマンス** – T4g、T3a、T3、および T2 タイプを含む T インスタンスファミリーを使用するかどうか。

各属性の説明およびデフォルト値については、「*Amazon EC2 API リファレンス*」の「[InstanceRequirements](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_InstanceRequirements.html)」を参照してください。

### 属性ベースのインスタンスタイプの選択を設定する場所
<a name="ef-abs-where-to-configure"></a>

コンソールと AWS CLI のどちらを使用するかによって、属性ベースのインスタンスタイプ選択のインスタンス属性を次のように指定できます。

コンソールでは、次のフリート設定コンポーネントでインスタンス属性を指定できます。
+ 起動テンプレートでフリートリクエストの起動テンプレートを参照する
+ (スポットフリートのみ) フリートリクエスト内

AWS CLI で、以下のフリート設定コンポーネントのいずれかまたはすべてでインスタンスの属性を指定することができます。
+ 起動テンプレートでフリートリクエストの起動テンプレートを参照する
+ 起動テンプレートの上書きで

  異なる AMI を使用するインスタンスを混在させたい場合は、複数の起動テンプレートの上書きでインスタンス属性を指定できます。例えば、異なるインスタンスタイプで x86 および ARM ベースのプロセッサを使用できます。
+ (スポットフリートのみ) 起動仕様内

### フリートをプロビジョニングするときに、EC2 フリートまたはスポットフリートが属性ベースのインスタンスタイプの選択をどのように使用するか
<a name="how-ef-uses-abs"></a>

EC2 フリートまたはスポットフリートは、以下の方法でフリートをプロビジョニングします。
+ これらのフリートは、指定された属性を持つインスタンスタイプを識別します。
+ また、料金保護を使用して、除外するインスタンスタイプを決定します。
+ インスタンスタイプが一致する AWS リージョンまたはアベイラビリティーゾーンに基づいて、インスタンスの起動を検討するキャパシティプールを決定します。
+ 指定された配分戦略を適用して、インスタンスを起動するキャパシティプールを決定します。

  属性ベースのインスタンスタイプの選択では、フリートをプロビジョニングするキャパシティプールは選択されません。これは、[配分戦略](ec2-fleet-allocation-strategy.md)のジョブです。

  配分戦略を指定すると、フリートは指定された配分戦略に従ってインスタンスを起動します。
  + スポットインスタンスの場合、属性ベースのインスタンスタイプの選択では**料金キャパシティ最適化**、**キャパシティ最適化**、**最低料金**の各配分戦略がサポートされます。ただし、**最低料金**スポット配分戦略は、スポットインスタンスの中断リスクが最も高いため、推奨されないことに注意してください。
  + オンデマンドインスタンスの場合、属性ベースのインスタンスタイプの選択では**最低料金**配分戦略がサポートされます。
+ 指定されたインスタンス属性を持つインスタンスタイプの容量がない場合、インスタンスは起動できず、フリートはエラーを返します。

## 料金保護
<a name="ec2fleet-abs-price-protection"></a>

料金保護とは、EC2 フリートまたはスポットフリートが指定した属性に適合した場合でも、コストが高すぎると見なされたインスタンスタイプは利用できないようにする機能です。料金保護を使用するには、料金のしきい値を設定します。Amazon EC2 が属性を持つインスタンスタイプを選択すると、しきい値を超える料金が設定されたインスタンスタイプは除外されます。

Amazon EC2 が料金のしきい値を計算する方法は、次のとおりです。
+ Amazon EC2 はまず、属性に一致するものから最低料金のインスタンスタイプを識別します。
+ Amazon EC2 は、料金保護パラメータに指定した値 (パーセンテージで表される) を受け取り、識別されたインスタンスタイプの料金でそれを乗算します。その結果、料金しきい値として使用される料金になります。

オンデマンドインスタンスとスポットインスタンスには個別の料金しきい値があります。

属性ベースのインスタンスタイプを選択してフリートを作成すると、料金保護がデフォルトで有効になります。デフォルト値のままにすることも、独自の値を指定することもできます。

料金保護をオフにすることもできます。料金保護のしきい値を指定しない場合は、`999999` などの高いパーセンテージ値を指定します。

**Topics**
+ [

### 最低料金のインスタンスタイプを特定する方法
](#ec2fleet-abs-price-protection-lowest-priced)
+ [

### オンデマンドインスタンスの料金保護
](#ec2fleet-abs-on-demand-price-protection)
+ [

### スポットインスタンスの料金保護
](#ec2fleet-abs-spot-price-protection)
+ [

### 料金保護のしきい値を指定する
](#ec2fleet-abs-specify-price-protection)

### 最低料金のインスタンスタイプを特定する方法
<a name="ec2fleet-abs-price-protection-lowest-priced"></a>

Amazon EC2 は、指定した属性に一致するものから最低料金のインスタンスタイプを特定することで、料金のしきい値に基づく料金を決定します。これは、次の方法で行います。
+ まず、属性に一致する現行世代の C、M、または R インスタンスタイプを調べます。一致するものがある場合は、最低料金のインスタンスタイプを特定します。
+ 一致するものがない場合は、属性に一致する現行世代のインスタンスタイプを調べます。一致するものがある場合は、最低料金のインスタンスタイプを特定します。
+ 一致するものがない場合は、属性に一致する以前の世代のインスタンスタイプを調べ、最低料金のインスタンスタイプを特定します。

### オンデマンドインスタンスの料金保護
<a name="ec2fleet-abs-on-demand-price-protection"></a>

オンデマンドインスタンスタイプの料金保護のしきい値は、特定された最低料金のオンデマンドインスタンスタイプ `OnDemandMaxPricePercentageOverLowestPrice`よりも高いパーセンテージで計算されます。支払い可能なパーセンテージを高く指定します。このパラメータを指定しない場合は、デフォルト値の `20` を使用して、識別された料金よりも 20% 高い料金保護しきい値が計算されます。

例えば、特定されたオンデマンドインスタンスの料金が `0.4271` で、`25` を指定した場合、料金のしきい値は `0.4271` より 25% 高くなります。これは、次のように計算されます: `0.4271 * 1.25 = 0.533875`。計算された料金は、オンデマンドインスタンスに対して支払うことができる最大額であり、この例では、Amazon EC2 は `0.533875` を超えるコストがかかるオンデマンドインスタンスタイプを除外します。

### スポットインスタンスの料金保護
<a name="ec2fleet-abs-spot-price-protection"></a>

デフォルトでは、Amazon EC2 は最適なスポットインスタンス料金保護を自動的に適用し、幅広いインスタンスタイプから一貫して選択してください。料金保護を手動で設定することもできます。ただし、Amazon EC2 に任せることで、スポット容量が満たされる可能性を高めることができます。

料金保護は、次のいずれかのオプションを使用して手動で指定できます。料金保護を手動で設定する場合は、最初のオプションを使用することをお勧めします。
+ **特定された最低料金のオンデマンドインスタンスタイプ `MaxSpotPriceAsPercentageOfOptimalOnDemandPrice`のパーセンテージ**

  例えば、特定されたオンデマンドインスタンスタイプの料金が `0.4271` で、`60` を指定した場合、料金のしきい値は `0.4271` の 60% になります。これは、次のように計算されます: `0.4271 * 0.60 = 0.25626`。計算された料金は、スポットインスタンスに対して支払うことができる最大額であり、この例では、Amazon EC2 は `0.25626` を超えるコストがかかるスポットインスタンスタイプを除外します。
+ **特定された最低料金のスポットインスタンスタイプ `SpotMaxPricePercentageOverLowestPrice`よりも高いパーセンテージ**

  例えば、特定されたスポットインスタンスタイプの料金が `0.1808` で、`25` を指定した場合、料金のしきい値は `0.1808` より 25% 高くなります。これは、次のように計算されます: `0.1808 * 1.25 = 0.226`。計算された料金は、スポットインスタンスに対して支払うことができる最大額であり、この例では、Amazon EC2 は `0.266` を超えるコストがかかるスポットインスタンスタイプを除外します。スポット料金が変動する可能性があり、料金保護のしきい値も変動する可能性があるため、このパラメータの使用はお勧めしません。

### 料金保護のしきい値を指定する
<a name="ec2fleet-abs-specify-price-protection"></a>

**AWS CLI を使用して料金保護のしきい値を指定するには**

AWS CLI を使用して EC2 フリートまたはスポットフリートを作成するときに、属性ベースのインスタンスタイプの選択が使用されるようにフリートを設定してから、次の手順を実行します。
+ オンデマンドインスタンスの料金保護のしきい値を指定するには、JSON 設定ファイルの `InstanceRequirements` 構造の `OnDemandMaxPricePercentageOverLowestPrice` で、料金保護のしきい値をパーセンテージ (%) で入力してください。
+ スポットインスタンスの料金保護のしきい値を指定するには、JSON 設定ファイルの `InstanceRequirements` 構造で、次のいずれかのパラメータを指定します。
  + `MaxSpotPriceAsPercentageOfOptimalOnDemandPrice` で、料金保護のしきい値をパーセンテージ (%) で入力してください。
  + `SpotMaxPricePercentageOverLowestPrice` で、料金保護のしきい値をパーセンテージ (%) で入力してください。

詳細については「[属性ベースのインスタンスタイプを選択した EC2 フリートを作成する](#abs-create-ec2-fleet)」または「[属性ベースのインスタンスタイプを選択してスポットフリートを作成する](#abs-create-spot-fleet)」を参照してください。

**(スポットフリートのみ) コンソールを使用して料金保護のしきい値を指定するには**

コンソールでスポットフリートを作成するときに、属性ベースのインスタンスタイプの選択が使用されるようにフリートを設定してから、次の手順を実行します。
+ オンデマンドインスタンスの料金保護のしきい値を指定するには、**[追加のインスタンス属性]** で、**[オンデマンド料金の保護]**、**[属性を追加]** を選択してから、料金保護のしきい値をパーセンテージで入力してください。
+ スポットインスタンスの料金保護のしきい値を指定するには、**[追加のインスタンス属性]** で、**[スポット料金の保護]**、**[属性を追加]** を選択し、料金のベースとなる基準値を選択してから、料金保護のしきい値をパーセンテージで入力してください。

**注記**  
フリートを作成するときに、`TargetCapacityUnitType` を `vcpu` または `memory-mib` に設定すると、インスタンスごとの料金ではなく、vCPU ごとまたはメモリごとの料金に基づいて料金保護のしきい値が適用されます。

## パフォーマンス保護
<a name="ec2fleet-abis-performance-protection"></a>

*パフォーマンス保護*は、EC2 フリートまたはスポットフリートが指定されたパフォーマンスベースラインと同等以上のインスタンスタイプを使用できるようにする機能です。パフォーマンス保護を使用するには、ベースラインリファレンスとしてインスタンスファミリーを指定します。指定されたインスタンスファミリーの機能は、許容される最低レベルのパフォーマンスを確立します。Amazon EC2 がフリートのインスタンスタイプを選択すると、指定した属性およびパフォーマンスベースラインが考慮されます。パフォーマンスベースラインを下回るインスタンスタイプは、他の指定された属性と一致しても、自動的に選択から除外されます。選択したすべてのインスタンスタイプが、指定されたインスタンスファミリーによって確立されたベースラインと同等以上のパフォーマンスを提供できるようにします。Amazon EC2 はこのベースラインを使用してインスタンスタイプの選択をガイドしますが、選択したインスタンスタイプがすべてのアプリケーションのベースラインを常に上回る保証はありません。

現在、この機能はベースラインパフォーマンス係数として CPU パフォーマンスのみをサポートしています。指定されたインスタンスファミリーの CPU プロセッサの CPU パフォーマンスがパフォーマンスベースラインとして使用され、選択したインスタンスタイプがこのベースラインと同等以上であるようにします。同じ CPU プロセッサを持つインスタンスファミリーは、ネットワークまたはディスクのパフォーマンスが異なっても、同じフィルタリング結果になります。例えば、ベースラインリファレンスとして `c6in` または `c6i` を指定すると、両方のインスタンスファミリーが同じ CPU プロセッサを使用するため、パフォーマンスベースのフィルタリング結果が同じになります。

**サポートされていないインスタンスファミリー**  
次のインスタンスファミリーは、パフォーマンス保護では**サポートされていません**。
+ **汎用:** Mac1 \$1 Mac2 \$1 Mac2-m1ultra \$1 Mac2-m2 \$1 Mac2-m2pro \$1 M1 \$1 M2 \$1 T1
+ **コンピューティングの最適化:** C1
+ **メモリ最適化:** U-3tb1 \$1 U-6tb1 \$1 U-9tb1 \$1 U-12tb1 \$1 U-18tb1 \$1 u-24tb1 \$1 U7i-12tb \$1 U7in-16tb \$1 U7in-24tb \$1 U7in-32tb
+ **高速コンピューティング:** G3 \$1 G3s \$1 P3dn \$1 P4d \$1 P5
+ **ハイパフォーマンスコンピューティング:** Hpc7g

サポートされているインスタンスファミリーを指定してパフォーマンス保護を有効にした場合、返されるインスタンスタイプは上記のサポートされていないインスタンスファミリーを除外します。

サポートされていないインスタンスファミリーをベースラインパフォーマンスの値として指定した場合、API は [GetInstanceTypesFromInstanceRequirements](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_GetInstanceTypesFromInstanceRequirements.html) に空のレスポンスを返し、[CreateFleet](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateFleet.html)、[RequestSpotFleet](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RequestSpotFleet.html)、[ModifyFleet](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyFleet.html)、[ModifySpotFleetRequest](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifySpotFleetRequest.html) に例外を返します。

**例: CPU パフォーマンスベースラインの設定**  
次の例では、インスタンス要件は、`c6i` インスタンスファミリーと同等のパフォーマンスの CPU コアを持つインスタンスタイプで起動することです。性能が下回る CPU プロセッサーが指定した他のインスタンス要件 (vCPU 数など) を満たしても、その CPU プロセッサーを持つインスタンスタイプを除外します。例えば、指定したインスタンス属性に 4 つの vCPUs および 16 GB のメモリが含まれている場合、これらの属性を持っても `c6i` より CPU パフォーマンスが低いインスタンスタイプは選択から除外されます。

```
"BaselinePerformanceFactors": {
        "Cpu": {
            "References": [
                {
                    "InstanceFamily": "c6i"
                }
            ]
        }
```

## 考慮事項
<a name="ec2fleet-abs-considerations"></a>
+ EC2 フリートまたはスポットフリートでは、インスタンスタイプまたはインスタンス属性のいずれかを指定できますが、両方を同時に指定することはできません。

  CLI を使用する場合、起動テンプレートの上書きによって起動テンプレートが上書きされます。例えば、起動テンプレートにインスタンスタイプが含まれ、起動テンプレートの上書きにインスタンス属性が含まれている場合、インスタンス属性によって識別されるインスタンスは、起動テンプレートのインスタンスタイプを上書きします。
+ CLI を使用していて、インスタンス属性の上書きを指定する場合、重みまたは優先順位も指定できません。
+ リクエスト設定では、最大 4 つの `InstanceRequirements` 構造を指定できます。

## 属性ベースのインスタンスタイプを選択した EC2 フリートを作成する
<a name="abs-create-ec2-fleet"></a>

属性ベースのインスタンスタイプの選択が使用されるように EC2 フリートを設定できます。Amazon EC2 コンソールを使用して EC2 フリートを作成することはできません。

属性に基づくインスタンスタイプ選択のための属性は、`InstanceRequirements` 構造で指定されます。`InstanceRequirements` がフリート設定に含まれる場合、`InstanceType` と `WeightedCapacity` は除外しなければならず、インスタンス属性と同時にフリート設定を決定することはできません。

AWS CLI および PowerShell の例では、次の属性が指定されています。
+ `VCpuCount` – 最小 2 つの vCPU と最大 4 つの vCPU。最大制限が必要ない場合は、最大値を省略できます。
+ `MemoryMiB` – 最小 8 GiB のメモリと最大 16 GiB のメモリ。最大制限が必要ない場合は、最大値を省略できます。

この設定では、2～4 個の vCPU と 8～16 GiB のメモリを持つインスタンスタイプが識別されます。ただし、[EC2 フリートがフリートをプロビジョニングする](#how-ef-uses-abs)場合、価格保護と配分戦略によって一部のインスタンスタイプが除外される場合があります。

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

**属性ベースのインスタンスタイプ選択を使用する EC2 フリートを作成するには**  
[create-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-fleet.html) コマンドを使用して、EC2 フリートを作成します。JSON ファイルでフリート設定を指定します。

```
aws ec2 create-fleet \
    --region us-east-1 \
    --cli-input-json file://file_name.json
```

次の例の `file_name.json` ファイルには、属性ベースのインスタンスタイプ選択を使用するように EC2 フリートを設定するパラメータが含まれています。

```
{
    "SpotOptions": {
        "AllocationStrategy": "price-capacity-optimized"
    },
    "LaunchTemplateConfigs": [{
        "LaunchTemplateSpecification": {
            "LaunchTemplateName": "my-launch-template",
            "Version": "1"
        },
        "Overrides": [{
            "InstanceRequirements": {
                "VCpuCount": {
                    "Min": 2,
                    "Max": 4
                },
                "MemoryMiB": {
                    "Min": 8192,
                    "Max": 16384
                }
            }
        }]
    }],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 20,
        "DefaultTargetCapacityType": "spot"
    },
    "Type": "instant"
}
```

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

**属性ベースのインスタンスタイプ選択を使用する EC2 フリートを作成するには**  
[New-EC2Fleet](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Fleet.html) コマンドレットを使用します。

```
$vcpuCount = New-Object Amazon.EC2.Model.VCpuCountRangeRequest
$vcpuCount.Min = 2 
$vcpuCount.Max = 4  
$memoryMiB = New-Object Amazon.EC2.Model.MemoryMiBRequest
$memoryMiB.Min = 8192  
$memoryMiB.Max = 16384  
$instanceRequirements = New-Object Amazon.EC2.Model.InstanceRequirementsRequest
$instanceRequirements.VCpuCount = $vcpuCount
$instanceRequirements.MemoryMiB = $memoryMiB

$launchTemplateSpec = New-Object Amazon.EC2.Model.FleetLaunchTemplateSpecificationRequest
$launchTemplateSpec.LaunchTemplateName = "my-launch-template" 
$launchTemplateSpec.Version = "1"
$override = New-Object Amazon.EC2.Model.FleetLaunchTemplateOverridesRequest
$override.InstanceRequirements = $instanceRequirements
$launchTemplateConfig = New-Object Amazon.EC2.Model.FleetLaunchTemplateConfigRequest
$launchTemplateConfig.LaunchTemplateSpecification = $launchTemplateSpec
$launchTemplateConfig.Overrides = @($override)

New-EC2Fleet `
    -SpotOptions_AllocationStrategy "price-capacity-optimized" `
    -LaunchTemplateConfig @($launchTemplateConfig) `
    -TargetCapacitySpecification_DefaultTargetCapacityType "spot" `
    -TargetCapacitySpecification_TotalTargetCapacity 20 `
    -Type "instant"
```

------

## 属性ベースのインスタンスタイプを選択してスポットフリートを作成する
<a name="abs-create-spot-fleet"></a>

属性ベースのインスタンスタイプの選択が使用されるようにフリートを設定できます。

属性に基づくインスタンスタイプ選択のための属性は、`InstanceRequirements` 構造で指定されます。`InstanceRequirements` がフリート設定に含まれる場合、`InstanceType` と `WeightedCapacity` は除外しなければならず、インスタンス属性と同時にフリート設定を決定することはできません。

AWS CLI および PowerShell の例では、次の属性が指定されています。
+ `VCpuCount` – 最小 2 つの vCPU と最大 4 つの vCPU。最大制限が必要ない場合は、最大値を省略できます。
+ `MemoryMiB` – 最小 8 GiB のメモリと最大 16 GiB のメモリ。最大制限が必要ない場合は、最大値を省略できます。

この設定では、2～4 個の vCPU と 8～16 GiB のメモリを持つインスタンスタイプが識別されます。ただし、[スポットフリートがフリートをプロビジョニングする](#how-ef-uses-abs)場合、価格保護と配分戦略によって一部のインスタンスタイプが除外される場合があります。

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

**属性ベースのインスタンスタイプの選択のためにスポットフリートを設定するには**

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

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

1. 手順に従ってスポットフリートを作成します。詳細については、「[定義済みパラメータを使用してスポットフリートリクエストを作成する](create-spot-fleet.md#create-spot-fleet-advanced)」を参照してください。

   スポットフリートを作成するときに、属性ベースのインスタンスタイプ選択にフリートを次のように設定します。

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

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

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

   1. (オプション) **[Additional instance attributes]** (その他のインスタンス属性) では、オプションで 1 つ以上の属性を指定して、コンピューティング要件をより詳細に表現できます。追加の属性は、リクエストにさらに制約を追加します。

   1. (オプション) **[Preview matching instance types]** (一致するインスタンスタイプをプレビューする) を展開して、指定した属性を持つインスタンスタイプを表示します。

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

**属性ベースのインスタンスタイプの選択のためにスポットフリートを設定するには**  
スポットフリートリクエストを作成するには、 [request-spot-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/request-spot-fleet.html) マンドを使用します。JSON ファイルでフリート設定を指定します。

```
aws ec2 request-spot-fleet \
    --region us-east-1 \
    --spot-fleet-request-config file://file_name.json
```

次の例の `file_name.json` ファイルには、属性ベースのインスタンスタイプ選択を使用するようにスポットフリートを設定するパラメータが含まれています。

```
{
    "AllocationStrategy": "priceCapacityOptimized",
    "TargetCapacity": 20,
    "Type": "request",
    "LaunchTemplateConfigs": [{
        "LaunchTemplateSpecification": {
            "LaunchTemplateName": "my-launch-template",
            "Version": "1"
        },
        "Overrides": [{
            "InstanceRequirements": {
                "VCpuCount": {
                    "Min": 2,
                    "Max": 4
                },
                "MemoryMiB": {
                    "Min": 8192,
                    "Max": 16384
                }
            }
        }]
    }]
}
```

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

**属性ベースのインスタンスタイプの選択のためにスポットフリートを設定するには**  
[Request-EC2SpotFleet](https://docs.aws.amazon.com/powershell/latest/reference/items/Request-EC2SpotFleet.html) コマンドレットを使用します。

```
$vcpuCount = New-Object Amazon.EC2.Model.VCpuCountRange
$vcpuCount.Min = 2 
$vcpuCount.Max = 4  
$memoryMiB = New-Object Amazon.EC2.Model.MemoryMiB
$memoryMiB.Min = 8192  
$memoryMiB.Max = 16384  
$instanceRequirements = New-Object Amazon.EC2.Model.InstanceRequirements
$instanceRequirements.VCpuCount = $vcpuCount
$instanceRequirements.MemoryMiB = $memoryMiB

$launchTemplateSpec = New-Object Amazon.EC2.Model.FleetLaunchTemplateSpecification
$launchTemplateSpec.LaunchTemplateName = "my-launch-template" 
$launchTemplateSpec.Version = "1"
$override = New-Object Amazon.EC2.Model.LaunchTemplateOverrides
$override.InstanceRequirements = $instanceRequirements
$launchTemplateConfig = New-Object Amazon.EC2.Model.LaunchTemplateConfig
$launchTemplateConfig.LaunchTemplateSpecification = $launchTemplateSpec
$launchTemplateConfig.Overrides = @($override)

Request-EC2SpotFleet `
    -SpotFleetRequestConfig_AllocationStrategy "PriceCapacityOptimized" `
    -SpotFleetRequestConfig_TargetCapacity 20 `
    -SpotFleetRequestConfig_Type "Request" `
    -SpotFleetRequestConfig_LaunchTemplateConfig $launchTemplateConfig
```

------

## EC2 フリートの有効な設定と無効な設定の例
<a name="ec2fleet-abs-example-configs"></a>

AWS CLI を使用して EC2 フリートを作成する場合は、フリートの設定が有効であることを確認する必要があります。次の例は、有効な設定と無効な設定を示しています。

次のものが含まれている場合、設定は無効と見なされます。
+ `InstanceRequirements` および `InstanceType` を持つ 1 つの `Overrides` 構造
+ 一つは `InstanceRequirements`、もう一つは `InstanceType` を持つ 2 つの `Overrides` 構造
+ 同じ `LaunchTemplateSpecification` 内で属性値が重複している 2 つの `InstanceRequirements` 構造

**Topics**
+ [

### 有効な設定: 上書きを含む単一の起動テンプレート
](#ef-abs-example-config1)
+ [

### 有効な設定: 複数のインスタンス要件を持つ単一の起動テンプレート
](#ef-abs-example-config2)
+ [

### 有効な設定: 2 つの起動テンプレート、それぞれに上書きがある
](#ef-abs-example-config3)
+ [

### 有効な設定: `InstanceRequirements` のみ指定され、重複する属性値なし
](#ef-abs-example-config4)
+ [

### 設定が無効です: `Overrides` が `InstanceRequirements` および `InstanceType` を含んでいる
](#ef-abs-example-config5)
+ [

### 設定が無効です: 2 つの `Overrides` に `InstanceRequirements` および `InstanceType` が含まれている
](#ef-abs-example-config6)
+ [

### 設定が無効です: 重複する属性値
](#ef-abs-example-config7)

### 有効な設定: 上書きを含む単一の起動テンプレート
<a name="ef-abs-example-config1"></a>

以下の設定は有効です。これには、1 つの起動テンプレートと、`InstanceRequirements` 構造を含む 1 つの `Overrides` が含まれています。以下に、構成例をテキストで説明します。

```
{
        "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateName": "My-launch-template",
                "Version": "1"
                },
                "Overrides": [
                {
                    "InstanceRequirements": {
                        "VCpuCount": {
                            "Min": 2,
                            "Max": 8
                        },
                        "MemoryMib": {
                            "Min": 0,
                            "Max": 10240
                        },
                        "MemoryGiBPerVCpu": {
                            "Max": 10000
                        },
                        "RequireHibernateSupport": true
                    }
                }
            ]
        }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 5000,
        "DefaultTargetCapacityType": "spot",
        "TargetCapacityUnitType": "vcpu"
        }
    }
}
```

****`InstanceRequirements`****  
属性ベースのインスタンス選択を使用するには、フリート設定に `InstanceRequirements` 構造を含め、フリート内のインスタンスに必要な属性を指定する必要があります。

前の例に、以下のインスタンス属性が指定されています。
+ `VCpuCount` - インスタンスタイプには、2 個以上、最大 8 個の vCPU が必要です。
+ `MemoryMiB` - インスタンスタイプには最大 10,240 MiB のメモリが必要です。最小数が 0 の場合、最小制限がないことを示します。
+ `MemoryGiBPerVCpu` - インスタンスタイプには、vCPU あたり最大 10,000 GiB のメモリが必要です。`Min` パラメータはオプションです。省略すると、最小制限がないことを示します。

**`TargetCapacityUnitType`**  
`TargetCapacityUnitType` パラメータは、ターゲット容量の単位を指定します。この例では、ターゲット容量は `5000` であり、ターゲット容量ユニットタイプは `vcpu` で、これを組み合わせて 5,000 vCPU の希望するターゲット容量を指定します。EC2 フリートは、フリート内の vCPU の総数が 5,000 vCPU になるように、十分なインスタンスを起動します。

### 有効な設定: 複数のインスタンス要件を持つ単一の起動テンプレート
<a name="ef-abs-example-config2"></a>

以下の設定は有効です。これには、1 つの起動テンプレートと、`InstanceRequirements` 構造を含む 2 つの `Overrides` が含まれています。`InstanceRequirements` で指定された属性は、値が重複していないため有効です。最初の `InstanceRequirements` 構造は `VCpuCount` の 0～2 vCPU を指定し、2 つ目の `InstanceRequirements` 構造は 4～8 vCPU を指定しています。

```
{
        "LaunchTemplateConfigs": [
            {
                "LaunchTemplateSpecification": {
                    "LaunchTemplateName": "MyLaunchTemplate",
                    "Version": "1"
                },
                "Overrides": [
                {
                    "InstanceRequirements": {
                        "VCpuCount": {
                            "Min": 0,
                            "Max": 2
                        },
                        "MemoryMiB": {
                            "Min": 0
                        }
                    }
                },
                {
                    "InstanceRequirements": {
                        "VCpuCount": {
                            "Min": 4,
                            "Max": 8
                        },
                        "MemoryMiB": {
                            "Min": 0
                        }
                    }
                }
              ]
            }
        ],
        "TargetCapacitySpecification": {
            "TotalTargetCapacity": 1,
            "DefaultTargetCapacityType": "spot"
        }
    }
}
```

### 有効な設定: 2 つの起動テンプレート、それぞれに上書きがある
<a name="ef-abs-example-config3"></a>

以下の設定は有効です。これには 2 つの起動テンプレートが含まれ、各起動テンプレートには 1 つの `InstanceRequirements` 構造を含む `Overrides` 構造が 1 つ含まれています。この設定は、同じフリートで `arm` と `x86` のアーキテクチャをサポートする場合に有効です。

```
{
        "LaunchTemplateConfigs": [
            {
                "LaunchTemplateSpecification": {
                    "LaunchTemplateName": "armLaunchTemplate",
                    "Version": "1"
                },
                "Overrides": [
                {
                    "InstanceRequirements": {
                        "VCpuCount": {
                            "Min": 0,
                            "Max": 2
                        },
                        "MemoryMiB": {
                            "Min": 0
                        }
                    }
                },
                {
                "LaunchTemplateSpecification": {
                    "LaunchTemplateName": "x86LaunchTemplate",
                    "Version": "1"
                },
                "Overrides": [
                {
                    "InstanceRequirements": {
                        "VCpuCount": {
                            "Min": 0,
                            "Max": 2
                        },
                        "MemoryMiB": {
                            "Min": 0
                        }
                    }
                }
              ]
            }
        ],
         "TargetCapacitySpecification": {
            "TotalTargetCapacity": 1,
            "DefaultTargetCapacityType": "spot"
        }
    }
}
```

### 有効な設定: `InstanceRequirements` のみ指定され、重複する属性値なし
<a name="ef-abs-example-config4"></a>

以下の設定は有効です。2 つの `LaunchTemplateSpecification` 構造が含まれ、各構造にぞれぞれ起動テンプレートと、`Overrides` 構造を含む `InstanceRequirements` 構造が含まれています。`InstanceRequirements` で指定された属性は、値が重複していないため有効です。最初の `InstanceRequirements` 構造は `VCpuCount` の 0～2 vCPU を指定し、2 つ目の `InstanceRequirements` 構造は 4～8 vCPU を指定しています。

```
{
        "LaunchTemplateConfigs": [
            {
                "LaunchTemplateSpecification": {
                    "LaunchTemplateName": "MyLaunchTemplate",
                    "Version": "1"
                },
                "Overrides": [
                {
                    "InstanceRequirements": {
                        "VCpuCount": {
                            "Min": 0,
                            "Max": 2
                        },
                        "MemoryMiB": {
                            "Min": 0
                        }
                    }
                }
              ]
            },
            {
                "LaunchTemplateSpecification": {
                    "LaunchTemplateName": "MyOtherLaunchTemplate",
                    "Version": "1"
                },
                "Overrides": [
                {
                    "InstanceRequirements": {
                        "VCpuCount": {
                            "Min": 4,
                            "Max": 8
                        },
                        "MemoryMiB": {
                            "Min": 0
                        }
                    }
                }
              ]
            }
        ],
        "TargetCapacitySpecification": {
            "TotalTargetCapacity": 1,
            "DefaultTargetCapacityType": "spot"
        }
    }
}
```

### 設定が無効です: `Overrides` が `InstanceRequirements` および `InstanceType` を含んでいる
<a name="ef-abs-example-config5"></a>

以下は設定が有効ではありません。`Overrides` 構造体には `InstanceRequirements` および `InstanceType` が両方含まれています。`Overrides` では、`InstanceRequirements` または `InstanceType` のどちらかを指定できますが、両方は指定できません。

```
{
        "LaunchTemplateConfigs": [
            {
                "LaunchTemplateSpecification": {
                    "LaunchTemplateName": "MyLaunchTemplate",
                    "Version": "1"
                },
                "Overrides": [
                {
                    "InstanceRequirements": {
                        "VCpuCount": {
                            "Min": 0,
                            "Max": 2
                        },
                        "MemoryMiB": {
                            "Min": 0
                        }
                    }
                },
                {
                    "InstanceType": "m5.large"
                }
              ]
            }
        ],
        "TargetCapacitySpecification": {
            "TotalTargetCapacity": 1,
            "DefaultTargetCapacityType": "spot"
        }
    }
}
```

### 設定が無効です: 2 つの `Overrides` に `InstanceRequirements` および `InstanceType` が含まれている
<a name="ef-abs-example-config6"></a>

以下は設定が有効ではありません。`Overrides` 構造に `InstanceRequirements` および `InstanceType` が両方含まれています。異なる `Overrides` 構造にある場合、`InstanceRequirements` または `InstanceType` を指定できますが、両方を指定することはできません。

```
{
        "LaunchTemplateConfigs": [
            {
                "LaunchTemplateSpecification": {
                    "LaunchTemplateName": "MyLaunchTemplate",
                    "Version": "1"
                },
                "Overrides": [
                {
                    "InstanceRequirements": {
                        "VCpuCount": {
                            "Min": 0,
                            "Max": 2
                        },
                        "MemoryMiB": {
                            "Min": 0
                        }
                    }
                }
              ]
            },
            {
                "LaunchTemplateSpecification": {
                    "LaunchTemplateName": "MyOtherLaunchTemplate",
                    "Version": "1"
                },
                "Overrides": [
                {
                    "InstanceType": "m5.large"
                }
              ]
            }
        ],
         "TargetCapacitySpecification": {
            "TotalTargetCapacity": 1,
            "DefaultTargetCapacityType": "spot"
        }
    }
}
```

### 設定が無効です: 重複する属性値
<a name="ef-abs-example-config7"></a>

以下は設定が有効ではありません。2 つの `InstanceRequirements` 構造がそれぞれ `"VCpuCount": {"Min": 0, "Max": 2}` を含んでいます。これらの属性の値が重複するため、容量プールが重複します。

```
{
        "LaunchTemplateConfigs": [
            {
                "LaunchTemplateSpecification": {
                    "LaunchTemplateName": "MyLaunchTemplate",
                    "Version": "1"
                },
                "Overrides": [
                {
                    "InstanceRequirements": {
                        "VCpuCount": {
                            "Min": 0,
                            "Max": 2
                        },
                        "MemoryMiB": {
                            "Min": 0
                        }
                    },
                    {
                      "InstanceRequirements": {
                          "VCpuCount": {
                              "Min": 0,
                              "Max": 2
                          },
                          "MemoryMiB": {
                              "Min": 0
                          }
                      }
                  }
                }
              ]
            }
        ],
         "TargetCapacitySpecification": {
            "TotalTargetCapacity": 1,
            "DefaultTargetCapacityType": "spot"
        }
    }
}
```

## スポットフリートの有効な設定と無効な設定の例
<a name="spotfleet-abs-example-configs"></a>

AWS CLI を使用してスポットフリートを作成する場合は、フリート設定が有効であることを確認する必要があります。次の例は、有効な設定と無効な設定を示しています。

次のものが含まれている場合、設定は無効と見なされます。
+ `InstanceRequirements` および `InstanceType` を持つ 1 つの `Overrides` 構造
+ 一つは `InstanceRequirements`、もう一つは `InstanceType` を持つ 2 つの `Overrides` 構造
+ 同じ `LaunchTemplateSpecification` 内で属性値が重複している 2 つの `InstanceRequirements` 構造

**Topics**
+ [

### 有効な設定: 上書きを含む単一の起動テンプレート
](#sf-abs-example-config1)
+ [

### 有効な設定: 複数のインスタンス要件を持つ単一の起動テンプレート
](#sf-abs-example-config2)
+ [

### 有効な設定: 2 つの起動テンプレート、それぞれに上書きがある
](#sf-abs-example-config3)
+ [

### 有効な設定: `InstanceRequirements` のみ指定され、重複する属性値なし
](#sf-abs-example-config4)
+ [

### 設定が無効です: `Overrides` が `InstanceRequirements` および `InstanceType` を含んでいる
](#sf-abs-example-config5)
+ [

### 設定が無効です: 2 つの `Overrides` に `InstanceRequirements` および `InstanceType` が含まれている
](#sf-abs-example-config6)
+ [

### 設定が無効です: 重複する属性値
](#sf-abs-example-config7)

### 有効な設定: 上書きを含む単一の起動テンプレート
<a name="sf-abs-example-config1"></a>

以下の設定は有効です。これには、1 つの起動テンプレートと、`InstanceRequirements` 構造を含む 1 つの `Overrides` が含まれています。以下に、構成例をテキストで説明します。

```
{
    "SpotFleetRequestConfig": {
        "AllocationStrategy": "priceCapacityOptimized",
        "ExcessCapacityTerminationPolicy": "default",
        "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
        "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateName": "My-launch-template",
                "Version": "1"
                },
                "Overrides": [
                {
                    "InstanceRequirements": {
                        "VCpuCount": {
                            "Min": 2,
                            "Max": 8
                        },
                        "MemoryMib": {
                            "Min": 0,
                            "Max": 10240
                        },
                        "MemoryGiBPerVCpu": {
                            "Max": 10000
                        },
                        "RequireHibernateSupport": true
                    }
                }
            ]
        }
    ],
        "TargetCapacity": 5000,
            "OnDemandTargetCapacity": 0,
            "TargetCapacityUnitType": "vcpu"
    }
}
```

****`InstanceRequirements`****  
属性ベースのインスタンス選択を使用するには、フリート設定に `InstanceRequirements` 構造を含め、フリート内のインスタンスに必要な属性を指定する必要があります。

前の例に、以下のインスタンス属性が指定されています。
+ `VCpuCount` - インスタンスタイプには、2 個以上、最大 8 個の vCPU が必要です。
+ `MemoryMiB` - インスタンスタイプには最大 10,240 MiB のメモリが必要です。最小数が 0 の場合、最小制限がないことを示します。
+ `MemoryGiBPerVCpu` - インスタンスタイプには、vCPU あたり最大 10,000 GiB のメモリが必要です。`Min` パラメータはオプションです。省略すると、最小制限がないことを示します。

**`TargetCapacityUnitType`**  
`TargetCapacityUnitType` パラメータは、ターゲット容量の単位を指定します。この例では、ターゲット容量は `5000` であり、ターゲット容量ユニットタイプは `vcpu` で、これを組み合わせて 5,000 vCPU の希望するターゲット容量を指定します。スポットフリートは、フリート内の vCPU の総数が 5,000 vCPU になるように、十分なインスタンスを起動します。

### 有効な設定: 複数のインスタンス要件を持つ単一の起動テンプレート
<a name="sf-abs-example-config2"></a>

以下の設定は有効です。これには、1 つの起動テンプレートと、`InstanceRequirements` 構造を含む 2 つの `Overrides` が含まれています。`InstanceRequirements` で指定された属性は、値が重複していないため有効です。最初の `InstanceRequirements` 構造は `VCpuCount` の 0～2 vCPU を指定し、2 つ目の `InstanceRequirements` 構造は 4～8 vCPU を指定しています。

```
{
    "SpotFleetRequestConfig": {
        "AllocationStrategy": "priceCapacityOptimized",
        "ExcessCapacityTerminationPolicy": "default",
        "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
        "LaunchTemplateConfigs": [
            {
                "LaunchTemplateSpecification": {
                    "LaunchTemplateName": "MyLaunchTemplate",
                    "Version": "1"
                },
                "Overrides": [
                {
                    "InstanceRequirements": {
                        "VCpuCount": {
                            "Min": 0,
                            "Max": 2
                        },
                        "MemoryMiB": {
                            "Min": 0
                        }
                    }
                },
                {
                    "InstanceRequirements": {
                        "VCpuCount": {
                            "Min": 4,
                            "Max": 8
                        },
                        "MemoryMiB": {
                            "Min": 0
                        }
                    }
                }
              ]
            }
        ],
        "TargetCapacity": 1,
        "OnDemandTargetCapacity": 0,
        "Type": "maintain"
    }
}
```

### 有効な設定: 2 つの起動テンプレート、それぞれに上書きがある
<a name="sf-abs-example-config3"></a>

以下の設定は有効です。これには 2 つの起動テンプレートが含まれ、各起動テンプレートには 1 つの `InstanceRequirements` 構造を含む `Overrides` 構造が 1 つ含まれています。この設定は、同じフリートで `arm` と `x86` のアーキテクチャをサポートする場合に有効です。

```
{
    "SpotFleetRequestConfig": {
        "AllocationStrategy": "priceCapacityOptimized",
        "ExcessCapacityTerminationPolicy": "default",
        "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
        "LaunchTemplateConfigs": [
            {
                "LaunchTemplateSpecification": {
                    "LaunchTemplateName": "armLaunchTemplate",
                    "Version": "1"
                },
                "Overrides": [
                {
                    "InstanceRequirements": {
                        "VCpuCount": {
                            "Min": 0,
                            "Max": 2
                        },
                        "MemoryMiB": {
                            "Min": 0
                        }
                    }
                },
                {
                "LaunchTemplateSpecification": {
                    "LaunchTemplateName": "x86LaunchTemplate",
                    "Version": "1"
                },
                "Overrides": [
                {
                    "InstanceRequirements": {
                        "VCpuCount": {
                            "Min": 0,
                            "Max": 2
                        },
                        "MemoryMiB": {
                            "Min": 0
                        }
                    }
                }
              ]
            }
        ],
        "TargetCapacity": 1,
        "OnDemandTargetCapacity": 0,
        "Type": "maintain"
    }
}
```

### 有効な設定: `InstanceRequirements` のみ指定され、重複する属性値なし
<a name="sf-abs-example-config4"></a>

以下の設定は有効です。2 つの `LaunchTemplateSpecification` 構造が含まれ、各構造にぞれぞれ起動テンプレートと、`Overrides` 構造を含む `InstanceRequirements` 構造が含まれています。`InstanceRequirements` で指定された属性は、値が重複していないため有効です。最初の `InstanceRequirements` 構造は `VCpuCount` の 0～2 vCPU を指定し、2 つ目の `InstanceRequirements` 構造は 4～8 vCPU を指定しています。

```
{
    "SpotFleetRequestConfig": {
        "AllocationStrategy": "priceCapacityOptimized",
        "ExcessCapacityTerminationPolicy": "default",
        "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
        "LaunchTemplateConfigs": [
            {
                "LaunchTemplateSpecification": {
                    "LaunchTemplateName": "MyLaunchTemplate",
                    "Version": "1"
                },
                "Overrides": [
                {
                    "InstanceRequirements": {
                        "VCpuCount": {
                            "Min": 0,
                            "Max": 2
                        },
                        "MemoryMiB": {
                            "Min": 0
                        }
                    }
                }
              ]
            },
            {
                "LaunchTemplateSpecification": {
                    "LaunchTemplateName": "MyOtherLaunchTemplate",
                    "Version": "1"
                },
                "Overrides": [
                {
                    "InstanceRequirements": {
                        "VCpuCount": {
                            "Min": 4,
                            "Max": 8
                        },
                        "MemoryMiB": {
                            "Min": 0
                        }
                    }
                }
              ]
            }
        ],
        "TargetCapacity": 1,
        "OnDemandTargetCapacity": 0,
        "Type": "maintain"
    }
}
```

### 設定が無効です: `Overrides` が `InstanceRequirements` および `InstanceType` を含んでいる
<a name="sf-abs-example-config5"></a>

以下は設定が有効ではありません。`Overrides` 構造体には `InstanceRequirements` および `InstanceType` が両方含まれています。`Overrides` では、`InstanceRequirements` または `InstanceType` のどちらかを指定できますが、両方は指定できません。

```
{
    "SpotFleetRequestConfig": {
        "AllocationStrategy": "priceCapacityOptimized",
        "ExcessCapacityTerminationPolicy": "default",
        "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
        "LaunchTemplateConfigs": [
            {
                "LaunchTemplateSpecification": {
                    "LaunchTemplateName": "MyLaunchTemplate",
                    "Version": "1"
                },
                "Overrides": [
                {
                    "InstanceRequirements": {
                        "VCpuCount": {
                            "Min": 0,
                            "Max": 2
                        },
                        "MemoryMiB": {
                            "Min": 0
                        }
                    }
                },
                {
                    "InstanceType": "m5.large"
                }
              ]
            }
        ],
        "TargetCapacity": 1,
        "OnDemandTargetCapacity": 0,
        "Type": "maintain"
    }
}
```

### 設定が無効です: 2 つの `Overrides` に `InstanceRequirements` および `InstanceType` が含まれている
<a name="sf-abs-example-config6"></a>

以下は設定が有効ではありません。`Overrides` 構造に `InstanceRequirements` および `InstanceType` が両方含まれています。異なる `Overrides` 構造にある場合、`InstanceRequirements` または `InstanceType` を指定できますが、両方を指定することはできません。

```
{
    "SpotFleetRequestConfig": {
        "AllocationStrategy": "priceCapacityOptimized",
        "ExcessCapacityTerminationPolicy": "default",
        "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
        "LaunchTemplateConfigs": [
            {
                "LaunchTemplateSpecification": {
                    "LaunchTemplateName": "MyLaunchTemplate",
                    "Version": "1"
                },
                "Overrides": [
                {
                    "InstanceRequirements": {
                        "VCpuCount": {
                            "Min": 0,
                            "Max": 2
                        },
                        "MemoryMiB": {
                            "Min": 0
                        }
                    }
                }
              ]
            },
            {
                "LaunchTemplateSpecification": {
                    "LaunchTemplateName": "MyOtherLaunchTemplate",
                    "Version": "1"
                },
                "Overrides": [
                {
                    "InstanceType": "m5.large"
                }
              ]
            }
        ],
        "TargetCapacity": 1,
        "OnDemandTargetCapacity": 0,
        "Type": "maintain"
    }
}
```

### 設定が無効です: 重複する属性値
<a name="sf-abs-example-config7"></a>

以下は設定が有効ではありません。2 つの `InstanceRequirements` 構造がそれぞれ `"VCpuCount": {"Min": 0, "Max": 2}` を含んでいます。これらの属性の値が重複するため、容量プールが重複します。

```
{
    "SpotFleetRequestConfig": {
        "AllocationStrategy": "priceCapacityOptimized",
        "ExcessCapacityTerminationPolicy": "default",
        "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
        "LaunchTemplateConfigs": [
            {
                "LaunchTemplateSpecification": {
                    "LaunchTemplateName": "MyLaunchTemplate",
                    "Version": "1"
                },
                "Overrides": [
                {
                    "InstanceRequirements": {
                        "VCpuCount": {
                            "Min": 0,
                            "Max": 2
                        },
                        "MemoryMiB": {
                            "Min": 0
                        }
                    },
                    {
                      "InstanceRequirements": {
                          "VCpuCount": {
                              "Min": 0,
                              "Max": 2
                          },
                          "MemoryMiB": {
                              "Min": 0
                          }
                      }
                  }
                }
              ]
            }
        ],
        "TargetCapacity": 1,
        "OnDemandTargetCapacity": 0,
        "Type": "maintain"
    }
}
```

## 指定された属性でインスタンスタイプをプレビューする
<a name="ec2fleet-get-instance-types-from-instance-requirements"></a>

 [get-instance-types-from-instance-requirements](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-instance-types-from-instance-requirements.html) マンドを使用して、指定した属性に一致するインスタンスタイプをプレビューします。これは、インスタンスを起動せずにリクエスト設定で指定する属性を調べる場合に特に便利です。このコマンドでは、使用可能な容量は考慮されません。

**AWS CLI を使用して属性を指定してインスタンスタイプのリストをプレビューするには**

1. (オプション) 指定可能なすべての属性を生成するには、[get-instance-types-from-instance-requirements](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-instance-types-from-instance-requirements.html) コマンドと `--generate-cli-skeleton` パラメータを使用します。オプションで、`input > attributes.json` を使用して出力を保存用ファイルに送ることができます。

   ```
   aws ec2 get-instance-types-from-instance-requirements \
       --region us-east-1 \
       --generate-cli-skeleton input > attributes.json
   ```

   正常な出力

   ```
   {
       "DryRun": true,
       "ArchitectureTypes": [
           "i386"
       ],
       "VirtualizationTypes": [
           "hvm"
       ],
       "InstanceRequirements": {
           "VCpuCount": {
               "Min": 0,
               "Max": 0
           },
           "MemoryMiB": {
               "Min": 0,
               "Max": 0
           },
           "CpuManufacturers": [
               "intel"
           ],
           "MemoryGiBPerVCpu": {
               "Min": 0.0,
               "Max": 0.0
           },
           "ExcludedInstanceTypes": [
               ""
           ],
           "InstanceGenerations": [
               "current"
           ],
           "SpotMaxPricePercentageOverLowestPrice": 0,
           "OnDemandMaxPricePercentageOverLowestPrice": 0,
           "BareMetal": "included",
           "BurstablePerformance": "included",
           "RequireHibernateSupport": true,
           "NetworkInterfaceCount": {
               "Min": 0,
               "Max": 0
           },
           "LocalStorage": "included",
           "LocalStorageTypes": [
               "hdd"
           ],
           "TotalLocalStorageGB": {
               "Min": 0.0,
               "Max": 0.0
           },
           "BaselineEbsBandwidthMbps": {
               "Min": 0,
               "Max": 0
           },
           "AcceleratorTypes": [
               "gpu"
           ],
           "AcceleratorCount": {
               "Min": 0,
               "Max": 0
           },
           "AcceleratorManufacturers": [
               "nvidia"
           ],
           "AcceleratorNames": [
               "a100"
           ],
           "AcceleratorTotalMemoryMiB": {
               "Min": 0,
               "Max": 0
           },
           "NetworkBandwidthGbps": {
               "Min": 0.0,
               "Max": 0.0
           },
           "AllowedInstanceTypes": [
               ""
           ]
       },
       "MaxResults": 0,
       "NextToken": ""
   }
   ```

1. 前のステップの出力を使用して JSON 設定ファイルを作成し、次のように設定します。
**注記**  
`ArchitectureTypes`、`VirtualizationTypes`、`VCpuCount`、および `MemoryMiB` の値を指定する必要があります。その他の属性は省略できます。省略すると、デフォルト値が使用されます。  
各属性およびそのデフォルト値の説明については、「[get-instance-types-from-instance-requirements](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-instance-types-from-instance-requirements.html)」を参照してください。

   1. `ArchitectureTypes` に、1 つ以上のタイプのプロセッサアーキテクチャを指定します。

   1. `VirtualizationTypes` に、1 つまたは複数のタイプの仮想化を指定します。

   1. `VCpuCount` に、vCPU の最小数と最大数を指定します。最小制限を指定しない場合は、`Min` で、`0` を指定します。最大制限を指定しない場合は、`Max` パラメータを省略します。

   1. `MemoryMiB` に、最小値と最大値を MiB 単位で指定します。最小制限を指定しない場合は、`Min` で、`0` を指定します。最大制限を指定しない場合は、`Max` パラメータを省略します。

   1. オプションで、他の属性を 1 つ以上指定して、返されるインスタンスタイプのリストをさらに制約できます。

1. JSON ファイルで指定した属性を持つインスタンスタイプをプレビューするには、[get-instance-types-from-instance-requirements](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-instance-types-from-instance-requirements.html) コマンドを入力し、`--cli-input-json` パラメータを使用して、JSON ファイルの名前とパスを指定します。オプションで、出力が表形式で表示されるようにフォーマットできます。

   ```
   aws ec2 get-instance-types-from-instance-requirements \
       --cli-input-json file://attributes.json \
       --output table
   ```

   例: *attributes.json* ファイル

   この例では、JSON ファイルに必須属性が含まれています。それらは、`ArchitectureTypes`、`VirtualizationTypes`、`VCpuCount`、および `MemoryMiB` です。さらに、オプションで `InstanceGenerations` 属性も含まれます。`MemoryMiB` では、`Max` の値を省略し、制限がないことを示すことができることを注意してください。

   ```
   {
       
       "ArchitectureTypes": [
           "x86_64"
       ],
       "VirtualizationTypes": [
           "hvm"
       ],
       "InstanceRequirements": {
           "VCpuCount": {
               "Min": 4,
               "Max": 6
           },
           "MemoryMiB": {
               "Min": 2048
           },
           "InstanceGenerations": [
               "current"
           ]
       }
   }
   ```

    出力の例

   ```
   ------------------------------------------
   |GetInstanceTypesFromInstanceRequirements|
   +----------------------------------------+
   ||             InstanceTypes            ||
   |+--------------------------------------+|
   ||             InstanceType             ||
   |+--------------------------------------+|
   ||  c4.xlarge                           ||
   ||  c5.xlarge                           ||
   ||  c5a.xlarge                          ||
   ||  c5ad.xlarge                         ||
   ||  c5d.xlarge                          ||
   ||  c5n.xlarge                          ||
   ||  d2.xlarge                           ||
   ...
   ```

1. ニーズに合ったインスタンスタイプを特定したら、フリートリクエストを設定するときにそれらを使用できるように、使用したインスタンスの属性をメモしておきます。

# インスタンスの重み付けを使用して、EC2 フリートまたはスポットフリートのコストとパフォーマンスを管理する
<a name="ec2-fleet-instance-weighting"></a>

インスタンスの重み付けでは、EC2 フリートまたはスポットフリート内の各インスタンスタイプに重みを割り当てて、それぞれのコンピューティング能力とパフォーマンスを相対的に表します。この重みに基づいて、目的のターゲットキャパシティを満たしている限り、指定されたインスタンスタイプを任意に組み合わせて使用できます。そのため、フリートのコストとパフォーマンスを容易に管理できます。

重みは、インスタンスタイプが合計ターゲットキャパシティに寄与するキャパシティユニットを表します。

**例: パフォーマンス管理にインスタンスの重み付けを使用する**

例えば、フリートにインスタンスタイプが 2 つあり、以下のようにそれぞれのインスタンスタイプに異なる重みを割り当てているとします。数値は、各タイプが同じパフォーマンスを発揮するためにはそれぞれいくつ必要になるかを表しています。
+  `m5.large` – 重み: 1
+ `m5.2xlarge` – 重み: 4

こうした重みを割り当てることで、1 個の `m5.large` と同じパフォーマンスを発揮するためには 4 個の `m5.2xlarge` インスタンスが必要であることを示すことができます。

特定のターゲットキャパシティに必要なインスタンスの数をインスタンスタイプごとに計算するには、以下の式を使用します。

`target capacity / weight = number of instances`

ターゲットキャパシティが 8 ユニットである場合、フリートは以下のように `m5.large` または `m5.2xlarge`、あるいはその両方を混在させて、ターゲットキャパシティを達成できます。
+ 8 個の `m5.large` インスタンス (キャパシティ 8 / 重み 1 = 8 インスタンス)
+ 2 個の `m5.2xlarge` インスタンス (キャパシティ 8 / 重み 4 = 2 インスタンス)
+ 4 個の `m5.large` および 1 個の `m5.2xlarge`

**例: コスト管理にインスタンスの重み付けを使用する**

デフォルトでは、指定する料金は *1 インスタンス時間あたり* の料金となります。インスタンスの分量指定機能を使用すると、指定した料金は *ユニット時間ごと* の料金となります｡ ユニット時間あたりの使用料金はインスタンスタイプの料金を対応するユニット数で割って計算できます。フリートは、ターゲットキャパシティをインスタンスの重みで割ることで、起動するインスタンスの数を求めます。その結果が整数でなければ、フリートはその数を次の整数に切り上げ、これによりフリートのサイズがターゲット容量以上になります。起動されたインスタンスの容量がリクエストされたターゲット容量を超えた場合でも、フリートは起動仕様で指定したどのプールでも選択できます。

以下の表に、ターゲットキャパシティが 10 のフリートについてユニットあたりの料金を求める計算の例を示しています。


| インスタンスタイプ | インスタンスの分量 | ターゲット容量 | 起動されたインスタンスの数 | インスタンス時間あたりのスポット料金 | ユニット時間あたりの価格 | 
| --- | --- | --- | --- | --- | --- | 
| r3.xlarge |  2  | 10 |  5 (10 ÷ 2)  |  0.05 USD  |  0.025 USD (.05 ÷ 2)  | 
| r3.8xlarge |  8  | 10 |  2 (10 ÷ 8、結果切り上げ)  |  0.10 USD  |  0.0125 USD (.10 ÷ 8)  | 

以下のようにフリートインスタンスの重み付けを使用して、達成時にユニットあたりの料金が最も安くなるプールに目的のターゲットキャパシティをプロビジョニングします。

1. インスタンス (デフォルト) または任意のユニット (vCPU、メモリ、ストレージ、スループットなど) でフリートのターゲットキャパシティを設定します。

1. ユニットあたりの料金を設定します｡

1. 各起動条件で、インスタンスタイプがターゲット容量に対して必要なユニット数である分量を指定します。

**インスタンスの分量指定例**  
フリートリクエストが以下のように設定されている例を検討します。
+ ターゲット容量 24
+ `r3.2xlarge` のインスタンスタイプの起動条件と分量 6
+ `c3.xlarge` のインスタンスタイプの起動条件と分量 5

分量とは、インスタンスタイプがターゲット容量に対して必要なユニット数を表します。最初の起動仕様がユニットあたりの料金を最安値で提供する場合 (インスタンス時間あたりの `r3.2xlarge` の料金を 6 で割ったもの)、フリートはこれらのインスタンスのうち 4 つ (24 割る 6) を起動します。

2 番目の起動仕様がユニットあたりの料金を最安値で提供する場合 (インスタンス時間あたりの `c3.xlarge` の料金を 5 で割ったもの)、フリートはこれらのインスタンスのうち 5 つ (24 割る 5、結果を切り上げ) を起動します。

**インスタンスの分量指定と配分戦略**  
フリートリクエストが以下のように設定されている例を検討します。
+ ターゲット容量 30 スポットインスタンス
+ `c3.2xlarge` のインスタンスタイプの起動条件と分量 8
+ `m3.xlarge` のインスタンスタイプの起動条件と分量 8
+ `r3.xlarge` のインスタンスタイプの起動条件と分量 8

フリートは、4 つのインスタンス (30 割る 8、結果を切り上げ) を起動します。`diversified` 戦略では、フリートは 3 プールごとに 1 つのインスタンスを起動し、そしてこの 3 つのプールのいずれかから取得された 4 つ目のインスタンスがユニットあたりの最低価格を提供することになります。

# 配分戦略を使用して、EC2 フリートまたはスポットフリートがどのようにスポットキャパシティとオンデマンドキャパシティを満たすかを決定します。
<a name="ec2-fleet-allocation-strategy"></a>

EC2 フリートまたはスポットフリート内で複数のキャパシティプール (それぞれインスタンスタイプとアベイラビリティーゾーンで構成) を使用する場合は、配分戦略を使用して、そうしたキャパシティプールから Amazon EC2 がどのようにスポットキャパシティとオンデマンドキャパシティを満たすかを管理できます。配分戦略を使用すると、使用可能なキャパシティ、料金、インスタンスタイプを最適化できます。スポットインスタンスとオンデマンドインスタンスには、さまざまな配分戦略があります。

**Topics**
+ [

## スポットインスタンスの配分戦略
](#ec2-fleet-allocation-strategies-for-spot-instances)
+ [

## オンデマンドインスタンスの配分戦略
](#ec2-fleet-allocation-strategies-for-on-demand-instances)
+ [

## 適切なスポット配分戦略を選択する
](#ec2-fleet-allocation-use-cases)
+ [

## スポットインスタンスのターゲットキャパシティを維持する
](#ec2-fleet-maintain-fleet-capacity)
+ [

## オンデマンド容量に基づくインスタンスタイプの優先順位付け
](#ec2-fleet-on-demand-priority)

## スポットインスタンスの配分戦略
<a name="ec2-fleet-allocation-strategies-for-spot-instances"></a>

起動設定によって、EC2 フリートまたはスポットフリートがスポットインスタンスを起動できるすべてのスポットキャパシティプール (インスタンスタイプとアベイラビリティーゾーン) が決まります。ただし、インスタンスを起動する際、フリートは指定された配分戦略を使用して、使用可能なすべてのプールから特定のプールを選択してください。

**注記**  
(Linux インスタンスのみ) [AMD SEV-SNP](sev-snp.md) を有効にして起動するようにスポットインスタンスを設定すると、選択したインスタンスタイプの[オンデマンド時間料金](https://aws.amazon.com/ec2/pricing/on-demand/)の 10% に相当する追加の時間単位使用料が請求されます。配分戦略で料金を入力として使用する場合、フリートにはこの追加料金は含まれず、スポット料金のみが使用されます。

スポットインスタンスには次のいずれかの配分戦略を指定できます。

**料金キャパシティ最適化** (推奨)  
フリートは、起動中のインスタンスの数に最適なキャパシティを使用できるプールを特定します。つまり、短期的に中断の可能性が最も低いと思われるプールからスポットインスタンスをリクエストすることになります。次に、そうしたプールのうち料金が最も安いスポットインスタンスをリクエストします。  
**料金キャパシティ最適化**配分戦略は、ステートレスコンテナ化アプリケーション、マイクロサービス、ウェブアプリケーション、データおよび分析ジョブ、バッチ処理など、ほとんどのスポットワークロードに最適です。  
AWS CLI を使用している場合、パラメータ名は EC2 フリートでは `price-capacity-optimized`、スポットフリートでは `priceCapacityOptimized` となります。

**キャパシティ最適化**  
フリートは、起動中のインスタンスの数に最適なキャパシティを使用できるプールを特定します。つまり、短期的に中断の可能性が最も低いと思われるプールからスポットインスタンスをリクエストすることになります。  
スポットインスタンス では、価格は需要と供給の長期的な傾向に基づいて時間の経過とともに緩やかに変動しますが、容量はリアルタイムで変動します。**キャパシティ最適化**戦略では、リアルタイムのキャパシティデータを調べ、可用性の最も高いプールを予測することで、そのプールからスポットインスタンスを自動的に起動します。この戦略は、作業の再開に関連する中断のコストが高くなる可能性のあるワークロード (長時間の継続的インテグレーション (CI)、画像とメディアのレンダリング、深層学習およびハイパフォーマンスコンピューティング (HPC) など) に対応します。中断の可能性を低くすることにより、**キャパシティ最適化**戦略ではワークロードの全体的なコストを削減できます。  
また、**優先順位付きキャパシティ最適化**と共に優先パラメータを使用して、インスタンスタイプを優先順位の高い順から低い順に並べることができます。異なるインスタンスタイプに対し同じ優先順位を設定できます。フリートはまずキャパシティを最適化しますが、ベストエフォートに基づいてインスタンスタイプの優先順位を考慮します (例えば、優先順位を考慮しても、フリートの最適なキャパシティをプロビジョニングする能力に大きな影響を与えない場合など)。これは、中断の可能性を最小限に抑える必要があり、特定のインスタンスタイプを優先することが重要なワークロードに適したオプションです。なお、スポットキャパシティのインスタンスタイプの優先順位を設定する場合、オンデマンド配分戦略が**優先順位付き**に設定されていると、同じ優先順位がオンデマンドインスタンスにも適用されます。スポットフリートの場合、優先順位を使用できるのはフリートが起動テンプレートを使用している場合に限られます。  
AWS CLI を使用している場合、パラメータ名は EC2 フリートでは `capacity-optimized` と `capacity-optimized-prioritized`、スポットフリートでは `capacityOptimized` と `capacityOptimizedPrioritized` となります。

**分散**  
スポットインスタンス は、すべてのスポットキャパシティープールに分散されます。AWS CLI を使用している場合、パラメータ名は EC2 フリートでもスポットフリートでも `diversified` となります。

**最低料金** (非推奨)  
スポットインスタンスの中断リスクが非常に高いため、**最低料金**配分戦略はお勧めしません。
スポットインスタンスは、使用可能な容量を持つ最低価格のプールから取得されます。AWS CLI を使用する場合は、これがデフォルトの戦略です。ただし、**料金キャパシティ最適化**配分戦略を指定して、このデフォルトをオーバーライドすることをお勧めします。  
最低料金戦略では、料金が最も安いプールに使用可能なキャパシティがない場合、その次に料金が安く、かつ使用可能なキャパシティがあるプールからスポットインスタンスを取得します。目的のキャパシティを満たす前にプールのキャパシティが不足した場合、フリートはその次に料金が安いプールからキャパシティを引き出して、継続してリクエストを満たします。希望する容量を確実に満たすために、複数のプールからスポットインスタンスを受け取る場合があります。  
この戦略では、インスタンスの価格のみが考慮され、容量の可用性は考慮されないため、中断率が高くなる可能性があります。  
最低料金配分戦略は、AWS CLI を使用しているときにのみ利用できます。パラメータ名は EC2 フリートでは `lowest-price`、スポットフリートでは `lowestPrice` となります。

**使用するプールの数**  
ターゲットスポット容量を割り当てる先のスポットプールの数。配分戦略が**最低料金**に設定されている場合にのみ有効です。フリートは、最低料金のスポットプールを選択し、指定した数のスポットプールにターゲットスポットキャパシティを均等に割り当てます。  
その際、ベストエフォートに基づいて、指定したプール数からスポットインスタンスを引き出そうとします。ターゲットキャパシティを満たす前にプールのスポットキャパシティが不足した場合は、その次に料金が安いプールのキャパシティを利用して継続的にリクエストを満たします。ターゲット容量を確実に満たすために、スポットインスタンスが、指定した数を超えるプールから割り当てられることがあります。また、ほとんどのプールにスポット容量がない場合には、指定した数より少ないプールからターゲット容量のすべてが割り当てられることがあります。  
このパラメータは、**最低料金**配分戦略を指定し、AWS CLI を使用しているときにのみ利用できます。パラメータ名は、EC2 フリートでもスポットフリートでも `InstancePoolsToUseCount` となります。

## オンデマンドインスタンスの配分戦略
<a name="ec2-fleet-allocation-strategies-for-on-demand-instances"></a>

起動設定によって、EC2 フリートまたはスポットフリートがオンデマンドインスタンスを起動できるすべてのスポットキャパシティプール (インスタンスタイプとアベイラビリティーゾーン) が決まります。ただし、インスタンスを起動する際、フリートは指定された配分戦略を使用して、使用可能なすべてのプールから特定のプールを選択してください。

オンデマンドインスタンスには、以下のいずれかの配分戦略を指定できます。

**最低料金**  
オンデマンドインスタンスは、使用可能なキャパシティがある最低料金のプールから取得されます。これはデフォルトの戦略です。  
最低料金のプールに使用可能なキャパシティがない場合、その次に料金が安く、かつ使用可能なキャパシティがあるプールからオンデマンドインスタンスが取得されます。  
目的のキャパシティを満たす前にプールのキャパシティが不足した場合、フリートはその次に料金が安いプールからキャパシティを引き出して、継続してリクエストを満たします。目的のキャパシティを確実に満たすために、複数のプールからスポットインスタンスが取得される場合があります。

**優先順位付き**  
フリートは、各起動テンプレートのオーバーライドに割り当てられた優先順位に従って、まず優先順位が最も高いインスタンスタイプを起動します。この戦略は、属性ベースのインスタンスタイプの選択では使用できません。この配分戦略の使用方法の例については、「[オンデマンド容量に基づくインスタンスタイプの優先順位付け](#ec2-fleet-on-demand-priority)」を参照してください。

## 適切なスポット配分戦略を選択する
<a name="ec2-fleet-allocation-use-cases"></a>

適切なスポット割り当て戦略を選択することで、ユースケースに合わせてフリートを最適化できます。

### 最低価格と容量可用性のバランスをとる
<a name="ec2-fleet-strategy-balance-price-and-capacity-availability"></a>

料金が最も安いスポットキャパシティプールと、キャパシティの可用性が最も高いスポットキャパシティプールとのトレードオフのバランスをとるには、**料金キャパシティ最適化**配分戦略を使用することをお勧めします。この戦略では、プールの価格とプール内のスポットインスタンスの空き容量の両方に基づいて、どのプールからスポットインスタンスをリクエストするかを決定します。つまり、価格を考慮しながらも短期的に中断の可能性が最も低いと思われるプールからスポットインスタンスをリクエストすることになります。

コンテナ化されたアプリケーション、マイクロサービス、ウェブアプリケーション、データおよび分析ジョブ、バッチ処理など、レジリエントでステートレスなワークロードをフリートが実行している場合は、最適なコスト削減とキャパシティの可用性を実現する**料金キャパシティ最適化**配分戦略を使用してください。

作業の再開に関連する中断に伴うコストが高くなる可能性があるワークロードをフリートで実行している場合は、中断があった場合にアプリケーションがそのポイントから再起動できるようにチェックポイントの設定を実装する必要があります。チェックポイントを使用すると、スポットインスタンスの中断率も低い最低料金のプールからキャパシティが割り当てられるため、こうしたワークロードには**料金キャパシティ最適化**配分戦略が適しています。

**料金キャパシティ最適化**配分戦略を使用する JSON 設定の例については、以下を参照してください。
+ EC2 フリート - [例 10: price-capaity-optimized フリートでスポットインスタンスを起動する](ec2-fleet-examples.md#ec2-fleet-config11)
+ スポットフリート - [例 11: priceCapacityOptimized フリートでスポットインスタンスを起動する](spot-fleet-examples.md#fleet-config11)

### ワークロードの中断コストが高い場合
<a name="ec2-fleet-strategy-capacity-optimized"></a>

同様の料金のインスタンスタイプを使用するワークロードを実行する場合や、中断のコストが非常に高いために中断のわずかな増加に比べてコスト削減が不十分である場合は、必要に応じてこの**キャパシティ最適化**戦略を使用できます。この戦略では、中断の可能性がより低く、最も可用性の高いスポットキャパシティプールから容量を割り当てることで、ワークロードの総コストを削減することができます。

中断の可能性を最小限に抑える必要があるものの、特定のインスタンスタイプの優先順位が重要である場合は、**優先順位付きキャパシティ最適化**配分戦略を使用し、インスタンスタイプを優先順位の高い順に並べることでプールの優先順位を設定できます。

なお、**優先順位付きキャパシティ最適化**の優先順位を設定するとき、オンデマンド配分戦略が**優先順位付き**に設定されていると、同じ優先順位がオンデマンドインスタンスにも適用されます。また、スポットフリートの場合、優先順位を使用できるのはフリートが起動テンプレートを使用している場合に限られます。

**キャパシティ最適化**配分戦略を使用する JSON 設定の例については、以下を参照してください。
+ EC2 フリート - [例 8: 容量最適化フリートでスポットインスタンスを起動する](ec2-fleet-examples.md#ec2-fleet-config9)
+ スポットフリート - [例 9: 容量最適化フリートでスポットインスタンスを起動する](spot-fleet-examples.md#fleet-config9)

**優先順位付きキャパシティ最適化**配分戦略を使用する JSON 設定の例については、以下を参照してください。
+ EC2 フリート - [例 9: 優先順位のある容量最適化フリートでスポットインスタンスを起動する](ec2-fleet-examples.md#ec2-fleet-config10)
+ スポットフリート - [例 10: 優先順位のある容量最適化フリートでスポットインスタンスを起動する](spot-fleet-examples.md#fleet-config10)

### ワークロードに時間的な柔軟性があり、キャパシティの可用性が問題にならない場合
<a name="ec2-fleet-strategy-time-flexible-workload"></a>

フリートが小さい場合や実行時間が短い場合は、キャパシティの可用性を考慮しつつ、**料金キャパシティ最適化**を使用してコスト削減を最大化できます。

### フリートが大きい場合や長時間稼働している場合
<a name="ec2-fleet-strategy-large-workload-long-time"></a>

フリートが大きい場合や実行時間が長い場合は、**分散**戦略を使用して複数のプールにスポットインスタンスを分散させることで、フリートの可用性を改善できます。例えば、プール数を 10、ターゲットキャパシティを 100 インスタンスに指定した場合、フリートはプールごとに 10 個のスポットインスタンスを起動します。1 つのプールのスポット料金がこのプールの上限料金を超える場合、フリートの 10% のみに影響がおよびます。この戦略を使用すると、いずれのプールにおいても経時的にフリートが受けるスポット料金の上昇の影響を減少させます。**分散**戦略では、スポットフリートはスポット料金が[オンデマンド料金](https://aws.amazon.com/ec2/pricing/)以上のプールにあるスポットインスタンスを起動しません。

## スポットインスタンスのターゲットキャパシティを維持する
<a name="ec2-fleet-maintain-fleet-capacity"></a>

スポット料金やスポットキャパシティプールで使用可能なキャパシティが変動したためにスポットインスタンスが終了すると、タイプ `maintain` のフリートが代替スポットインスタンスを起動します。配分戦略によって、次のように置換先インスタンスを起動するプールが決まります。
+ 配分戦略が**料金キャパシティ最適化**の場合、フリートはスポットインスタンスキャパシティの可用性が最も高いプールで代替インスタンスを起動します。同時に料金も考慮し、料金が安くかつキャパシティの可用性が高いプールを特定します。
+ 配分戦略が**キャパシティ最適化**の場合、フリートはスポットインスタンスキャパシティの可用性が最も高いプールで代替インスタンスを起動します。
+ 配分戦略が**分散**の場合、フリートは残っているプール全体に代替スポットインスタンスを分散させます。

## オンデマンド容量に基づくインスタンスタイプの優先順位付け
<a name="ec2-fleet-on-demand-priority"></a>

EC2 フリートまたはスポットフリートがオンデマンドキャパシティを満たそうとする場合、デフォルトではまず料金が最も安いインスタンスタイプを起動します。オンデマンド配分戦略が**優先順位付き**の場合、フリートは優先順位に従って、オンデマンドキャパシティを満たす際に最初にどのインスタンスタイプを使用するかを決定します。優先度は起動テンプレートの上書きに割り当てられ、最も高い優先度が最初に起動されます。

**例: インスタンスタイプの優先付け**

例えば、3 つの起動テンプレートの上書きに、それぞれ異なるインスタンスタイプを設定したとします。

インスタンスタイプのオンデマンド料金は、幅があります。以下は、この例で使用しているインスタンスタイプで、料金の安いものから順に並んでいます。
+ `m4.large` — 最も安価
+ `m5.large`
+ `m5a.large`

優先度を使って順番を決めない場合、フリートは、最も価格が低いインスタンスタイプから始めてオンデマンドの容量を満たします。

ただし、最初に使用する `m5.large` リザーブドインスタンスが未使用である場合、次のように、インスタンスタイプが優先度順に使われるように、起動テンプレートの、上書きの優先度を設定できます。
+ `m5.large` – 優先度 1
+ `m4.large` – 優先度 2
+ `m5a.large` – 優先度 3

# EC2 フリートとスポットフリートでキャパシティの再調整を使用して、リスクのあるスポットインスタンスを置き換える
<a name="ec2-fleet-capacity-rebalance"></a>

キャパシティの再調整を使用すると、EC2 フリートまたはスポットフリートは中断のリスクがあるスポットインスタンスをプロアクティブに置き換えることで、目的のスポットキャパシティを維持できます。スポットインスタンスで中断のリスクが高まった場合、Amazon EC2 は[再調整推奨通知](rebalance-recommendations.md)を送信します。キャパシティの再調整が有効になっている場合、リスクのあるインスタンスが中断する前に、再調整推奨通知が新しいスポットインスタンスの起動をトリガーします。

キャパシティの再調整は、実行中のインスタンスが Amazon EC2 によって中断される前に、新しいスポットインスタンスでフリートをプロアクティブに強化することで、ワークロードの可用性を維持するのに効果的です。

**キャパシティの再調整を使用して代替スポットインスタンスを起動するように EC2 フリートを設定するには**  
[create-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-fleet.html) コマンド`MaintenanceStrategies` と構造内の関連するパラメータを使用します。JSON 設定の例については、「[例 7: 容量の再調整を設定して代替スポットインスタンスを起動する](ec2-fleet-examples.md#ec2-fleet-config8)」を参照してください。

**キャパシティの再調整を使用して代替スポットインスタンスを起動するようにスポットフリートを設定するには**  
Amazon EC2 コンソールまたは AWS CLI を使用して、キャパシティの再調整を設定できます。

(コンソール) スポットフリートを作成するとき、**[キャパシティの再調整]** チェックボックスをオンにします。詳細については、「[定義済みパラメータを使用してスポットフリートリクエストを作成する](create-spot-fleet.md#create-spot-fleet-advanced)」のステップ 6。d を参照してください。

(AWS CLI) [request-spot-fleet ](https://docs.aws.amazon.com/cli/latest/reference/ec2/request-spot-fleet.html)コマンドと `SpotMaintenanceStrategies` 構造内の関連するパラメータを使用します。JSON 設定の例については、「[例 8: 容量の再調整を設定して代替スポットインスタンスを起動する](spot-fleet-examples.md#fleet-config8)」を参照してください。

**Topics**
+ [

## 制限事項
](#ec2-fleet-capacity-rebalance-limitations)
+ [

## 設定オプション
](#ec2-fleet-capacity-rebalance-config-options)
+ [

## 考慮事項
](#ec2-fleet-capacity-rebalance-considerations)

## 制限事項
<a name="ec2-fleet-capacity-rebalance-limitations"></a>
+ 容量の再調整は、タイプ `maintain` のフリートでのみ使用可能です。
+ フリートが実行されているときは、容量の再調整設定を変更できません。容量の再調整設定を変更するには、フリートを削除し、新しいフリートを作成する必要があります。

## 設定オプション
<a name="ec2-fleet-capacity-rebalance-config-options"></a>

EC2 フリートとスポットフリートの `ReplacementStrategy` では、次の 2 つの値がサポートされています。

`launch-before-terminate`  
Amazon EC2 フリートは、新しい置換先スポットインスタンスが起動された後に、再調整通知を受信するスポットインスタンスを終了します。`launch-before-terminate` を指定する場合は、`termination-delay` の値も指定する必要があります。新しい置換先インスタンスが起動された後、Amazon EC2 フリートは `termination-delay` の時間だけ待って、古いインスタンスを終了させます。`termination-delay` では、最小値は 120 秒 (2 分)、最大値は 7200 秒 (2 時間) です。  
`launch-before-terminate` は、インスタンスのシャットダウン手順が完了するまでの時間が予測できる場合にのみ使用することをお勧めします。これにより、シャットダウン手順が完了した後にのみ、古いインスタンスが確実に終了されます。Amazon EC2 は、`termination-delay` の前に 2 分間の警告を行い、その後古いインスタンスを中断する可能性があることに注意してください。  
また、`lowest-price` (EC2 フリート) または `lowestPrice` (スポットフリート) 配分戦略を `launch-before-terminate` と組み合わせて使用することは、代替スポットインスタンスが中断するリスクが高まるため、お勧めしません。

`launch`  
Amazon EC2 フリートは、既存のスポットインスタンスに対して再調整通知が送信されると、置換先スポットインスタンスを起動します。Amazon EC2 フリートは、再調整通知を受け取るインスタンスを終了しません。古いインスタンスを終了することも、実行したままにすることもできます。実行中は、すべてのインスタンスに対して課金されます。

## 考慮事項
<a name="ec2-fleet-capacity-rebalance-considerations"></a>

キャパシティの再調整用に EC2 フリートまたはスポットフリートを設定する場合は、次の点を考慮してください。

**リクエストでは可能な限り多くのスポットキャパシティープールを指定する**  
複数のインスタンスタイプとアベイラビリティーゾーンを使用するようにフリートを設定します。これにより、さまざまなスポットキャパシティープールでスポットインスタンスを起動するための柔軟性が得られます。詳細については、「[インスタンスタイプとアベイラビリティーゾーンについて柔軟に対応する](spot-best-practices.md#be-instance-type-flexible)」を参照してください。

**代替スポットインスタンスが中断されるリスクの増大を回避する**  
中断のリスクが高まるのを避けるため、`capacity-optimized` または `capacity-optimized-prioritized` の割り当て戦略をお勧めします。これらの戦略により、代替スポットインスタンスが最適なスポットキャパシティプールで起動されるため、近い将来中断される可能性が低くなります。詳細については、「[価格と容量を最適化する配分戦略を使用する](spot-best-practices.md#use-capacity-optimized-allocation-strategy)」を参照してください。  
`lowest-price` 配分戦略を使用すると、代替スポットインスタンスが中断されるリスクが高まることがあります。これは、置換先スポットインスタンスが起動後すぐに中断される可能性があっても、Amazon EC2 は、その時点で利用可能な容量を持つ最低価格のプールでインスタンスを常に起動するためです。

**Amazon EC2 は、可用性が同じかそれ以上の場合にのみ、新しいインスタンスを起動します**  
容量の再調整の目的の 1 つは、スポットインスタンスの可用性を改善することです。既存のスポットインスタンスが再調整のレコメンデーションを受け取った場合、Amazon EC2 は、新しいインスタンスが既存のインスタンスと同等かそれ以上の可用性を提供する場合にのみ新しいインスタンスを起動します。新しいインスタンスの中断のリスクが既存のインスタンスよりもひどい場合、Amazon EC2 は新しいインスタンスを起動しません。ただし、Amazon EC2 は引き続きスポットキャパシティプールを評価し、可用性が向上したら新しいインスタンスを起動します。  
Amazon EC2 が新しいインスタンスをプロアクティブに起動しないと、既存のインスタンスが中断する可能性があります。これが発生する場合、Amazon EC2 は、新しいインスタンスの中断リスクが高いかどうかに関らず、新しいインスタンスの起動を試みます。

**キャパシティーの再調整は、スポットインスタンスの中断率を増加させるものではありません**  
キャパシティの再調整を有効にしても、[スポットインスタンスの中断率](spot-interruptions.md) (Amazon EC2 がキャパシティを取り戻す必要があるときに再利用されるスポットインスタンスの数) は増加しません。ただし、インスタンスに中断のリスクがあることを容量の再調整が検出した場合、Amazon EC2 Auto Scaling は直ちに新しいインスタンスの起動を試みます。その結果、リスクのあるインスタンスが中断された後に Amazon EC2 が新しいインスタンスを起動するのを待つ場合よりも多くのインスタンスが置き換えられる可能性があります。  
キャパシティーの再調整が有効になっているインスタンスをさらに置き換える可能性がありますが、インスタンスが中断される前にアクションを実行するための時間をより長く確保できるため、事後対応ではなくプロアクティブに対応できるというメリットがあります。[スポットインスタンスの中断通知](spot-instance-termination-notices.md)では、通常、インスタンスを正常にシャットダウンするための猶予期間が最大 2 分しかありません。キャパシティーの再調整で新しいインスタンスを事前に起動することで、既存のプロセスがリスクのあるインスタンスで完了する可能性が高くなり、インスタンスのシャットダウン手順を開始して、リスクのあるインスタンスで新しい作業がスケジュールされないようにできます。新しく起動したインスタンスの準備を開始して、アプリケーションを引き継ぐこともできます。キャパシティーの再調整のプロアクティブな置き換えにより、正常な継続性の恩恵を受けることができます。  
キャパシティーの再調整を使用するリスクとメリットを示す理論的な例として、次のシナリオを検討してください。  
+ 午後 2 時 – インスタンス A の再調整の推奨が受信され、Amazon EC2 は直ちに置換先インスタンス B の起動の試行を開始するため、シャットダウン手順を開始する時間を確保できます。\$1
+ 午後 2 時 30 分 – インスタンス B の再調整の推奨が受信され、インスタンス C に置き換えられるため、シャットダウン手順を開始する時間を確保できます。\$1
+ 午後 2 時 32 分 – キャパシティーの再調整が有効になっておらず、インスタンス A のスポットインスタンスの中断通知が午後 2 時 32 分に受信されていたとすれば、アクションを実行するための猶予期間は最大でも 2 分だけでしたが、インスタンス A はこの時間まで稼働していたことでしょう。
\$1 `launch-before-terminate` が指定されている場合、Amazon EC2 は、置換先インスタンスがオンラインになった後、リスクのあるインスタンスを終了します。

**Amazon EC2 フリート は、満たされた容量がターゲット容量の 2 倍になるまで、新しい置換先スポットインスタンスを起動できます**  
キャパシティの再調整に対応するように設定した場合、フリートはスポットインスタンスが再調整推奨通知を受け取るたびに、新しい代替スポットインスタンスを起動しようとします。スポットインスタンスが再調整勧告を受け取った後は、満たされた容量の一部としてカウントされなくなります。交換戦略に応じて、Amazon EC2 は事前設定された終了遅延の後にインスタンスを終了するか、インスタンスを実行のままにします。これにより、インスタンスで [再調整アクション](rebalance-recommendations.md#rebalancing-actions) を実行できるようになります。  
フリートがターゲットキャパシティの 2 倍に達すると、代替インスタンス自体が再調整に関する推奨事項を受け取った場合でも、新しい代替インスタンスの起動を停止します。  
例えば、100 個のスポットインスタンスをターゲットキャパシティとするスポットフリートを作成するとします。すべてのスポットインスタンスは、再調整に関するレコメンデーションを受け取ります。これにより、Amazon EC2 は 100 個の置換先スポットインスタンスを起動します。これにより、満たされたスポットインスタンスの数が 200 になり、ターゲットキャパシティの 2 倍になります。一部の代替インスタンスが再調整推奨通知を受け取るものの、フリートがターゲットキャパシティの 2 倍を超えることができないため、代替インスタンスはそれ以上起動されません。  
インスタンスの実行中は、すべてのインスタンスに対して課金されることに注意してください。

**再調整推奨通知を受け取ったスポットインスタンスを終了するようにフリートを設定することを推奨する**  
キャパシティの再調整に対応するようにフリートを設定する場合は、インスタンスのシャットダウン手順を完了するまでの時間が予測できる場合に限り、`launch-before-terminate` を選択して適切な終了遅延を設定することをお勧めします。これにより、シャットダウン手順が完了した後にのみ、古いインスタンスが確実に終了されます。  
再調整のために推奨されるインスタンスを終了する場合は、フリートのスポットインスタンスが受信する再調整レコメンデーションシグナルをモニタリングすることをお勧めします。シグナルをモニタリングすることで、Amazon EC2 が中断する前に、影響を受けるインスタンスで [再調整のアクション](rebalance-recommendations.md#rebalancing-actions) をすばやく実行し、手動で終了できます。インスタンスを終了しない場合、インスタンスの実行中、課金が継続します。Amazon EC2 は、再調整に関する推奨を受け取るインスタンスを自動的に終了しません。  
Amazon EventBridge またはインスタンスメタデータを使用して通知を設定できます。詳細については、「[再調整に関する推奨事項シグナルのモニタリング](rebalance-recommendations.md#monitor-rebalance-recommendations)」を参照してください。

**スケールインまたはスケールアウト中に満たされたキャパシティを計算する際、フリートが再調整推奨通知を受け取るインスタンスをカウントしない**  
キャパシティの再調整に対応するようにフリートが設定されている場合に、ターゲットキャパシティをスケールインまたはスケールアウトするように変更すると、次のように、フリートは再調整の対象としてマークされたインスタンスを、満たされたキャパシティの一部としてカウントしません。  
+ スケールイン – 希望するターゲット容量を減らすと、Amazon EC2 は目的の容量に達するまで、再調整の対象としてマークされていないインスタンスを終了します。再調整の対象としてマークされたインスタンスは、満たされた容量にはカウントされません。

  例えば、100 個のスポットインスタンスをターゲットキャパシティとするフリートを作成し、そのうち 10 個のインスタンスが再調整推奨通知を受け取ったとすると、Amazon EC2 が新たに 10 個の代替インスタンスを起動するため、110 個のインスタンスのキャパシティが満たされます。その後、ターゲット容量を 50 個に減らしますが (スケールイン)、再調整の対象としてマークされた 10 個のインスタンスは Amazon EC2 によって終了されないため、満たされた容量は実際には 60 インスタンスになります。このようなインスタンスは手動で終了する必要があります。または、実行したままにしておくことができます。
+ スケールアウト – 目的のターゲット容量を増やすと、目的の容量に達するまで Amazon EC2 は新しいインスタンスを起動します。再調整の対象としてマークされたインスタンスは、満たされた容量にはカウントされません。

  例えば、100 個のスポットインスタンスをターゲットキャパシティとするフリートを作成し、そのうち 10 個のインスタンスが再調整推奨通知を受け取ったとすると、フリートが新たに 10 個の代替インスタンスを起動するため、110 個のインスタンスのキャパシティが満たされます。その後、ターゲット容量を 200 個に増やし (スケールアウトし) ますが、再調整の対象としてマークされた 10 個のインスタンスは、フリートによってターゲット容量の一部としてカウントされないため、実際には 210 個のインスタンスになります。このようなインスタンスは手動で終了する必要があります。または、実行したままにしておくことができます。

# キャパシティ予約を使用して、EC2 フリートのオンデマンドキャパシティを予約する
<a name="ec2-fleet-on-demand-capacity-reservations"></a>

オンデマンド容量予約を使用すると、特定のアベイラビリティーゾーンで任意の所要時間だけ、オンデマンドインスタンスのコンピューティング性能を予約できます。オンデマンドインスタンスを起動するときに、容量予約を最初に使用するように EC2 フリートを設定できます。

オンデマンドキャパシティ予約は、リクエストタイプが `instant` に設定された EC2 フリートでのみ使用できます。

容量予約は、`open` または `targeted` のいずれかで設定されます。EC2 フリートは、オンデマンドインスタンスを `open` または `targeted` キャパシティ予約で設定できます (次のとおり)：
+ キャパシティ予約が `open` の場合、一致する属性を持つオンデマンドインスタンスは、リザーブドキャパシティで自動的に実行されます。
+ キャパシティ予約 が `targeted` の場合、オンデマンドインスタンスはそれがリザーブドキャパシティで実行されるように具体的に設定する必要があります。これは、特定のキャパシティ予約を使い切ったり、特定のキャパシティ予約をいつ使用するかを制御する場合に便利です。

また、`targeted` を使用した場合、EC2 フリートのキャパシティ予約では、ターゲットのオンデマンドキャパシティを満たすのに十分なキャパシティ予約が必要です。そうしないと、起動に失敗します。起動が失敗するのを避けるには、`targeted` キャパシティ予約をリソースグループに加え、リソースグループをターゲットにします。リソースグループは十分なキャパシティ予約を持っている必要はありません。ターゲットのオンデマンドキャパシティが満たされる前にキャパシティ予約がなくなった場合、フリートは残りのターゲットキャパシティを通常のオンデマンドキャパシティに起動できます。

**EC2 フリートでキャパシティ予約を使用するには**

1. フリートをタイプ `instant` として設定する: その他のタイプのフリートには、キャパシティーの予約を使用することはできません。

1. キャパシティ予約の使用戦略として、`use-capacity-reservations-first` を設定する。

1. 起動テンプレートで、**キャパシティ予約** には、**オープン** または **グループ別のターゲット** のいずれかを選択してください。**グループ別のターゲット** を選択した場合、キャパシティ予約リソースグループ ID を指定します。

フリートがオンデマンド容量を満たそうとしたときに、複数のインスタンスプールで一致するキャパシティ予約が未使用であることがわかった場合、オンデマンド割り当て戦略に基づいてオンデマンドインスタンスを起動するプールを決定します (`lowest-price` または `prioritized`)。

**関連リソース**
+ オンデマンドキャパシティを満たすために、キャパシティ予約を使用するようにフリートを設定する CLI の例については、「[EC2 フリートの CLI 設定の例](ec2-fleet-examples.md)」(特に例 5 から 7) を参照してください。
+ キャパシティ予約の作成、フリートでの使用、および残っているキャパシティ予約の数を確認する手順を説明するチュートリアルについては、「[チュートリアル: ターゲットのキャパシティ予約を使用してオンデマンドインスタンスを起動するように EC2 フリートを設定する](ec2-fleet-launch-on-demand-instances-using-targeted-capacity-reservations-walkthrough.md)」を参照してください。
+ キャパシティ予約の設定の詳細については、[EC2 オンデマンドキャパシティ予約を使用してコンピューティングキャパシティを予約](ec2-capacity-reservations.md) と [オンデマンドキャパシティ予約のよくある質問](https://aws.amazon.com/ec2/faqs/#On-Demand_Capacity_Reservation) を参照してください。

# EC2 フリートの操作
<a name="manage-ec2-fleet"></a>

EC2 フリートの使用を開始するには、リクエストを作成します。リクエストには、合計ターゲットキャパシティ、オンデマンドキャパシティ、スポットキャパシティのほか、フリート内のインスタンスの設定を記載した起動テンプレートを含めます。必要に応じて、さらに別のパラメータを指定したり、デフォルト値を使用するようにフリートを設定したりできます。また、フリートを作成するときに、フリートリクエスト、およびフリート内のインスタンスとボリュームにタグ付けすることもできます。

フリートは、使用可能なキャパシティがあるときはオンデマンドインスタンスを起動し、上限価格がスポット料金より大きく、キャパシティが利用可能なときはスポットインスタンスを起動します。

フリートを起動したら、フリートリクエスト、フリート内のインスタンス、およびフリートイベントの説明を記述できます。また、必要に応じてさらに別のタグを割り当てることもできます。

合計ターゲットキャパシティなどのフリートパラメータを変更する必要がある場合は、キャパシティを維持するように設定されているのであれば、フリートを変更できます。送信後にワンタイムリクエストのキャパシティを変更することはできません。

フリートリクエストは、期限切れになるか、お客様によって削除されるまで、アクティブのままになります。フリートリクエストを削除する場合、インスタンスを終了するか、実行したままにします。実行したままにする場合、オンデマンドインスタンスは、終了されるまで実行され、スポットインスタンスは中断されるか終了されるまで実行されます。

**Topics**
+ [

# EC2 フリートリクエストの状態
](EC2-fleet-states.md)
+ [

# EC2 フリートの前提条件
](ec2-fleet-prerequisites.md)
+ [

# EC2 フリートの作成
](create-ec2-fleet.md)
+ [

# 新規または既存の EC2 フリートリクエスト、およびそのフリートが起動するインスタンスとボリュームにタグ付けします。
](tag-ec2-fleet.md)
+ [

# EC2 フリート、そのインスタンス、イベントを記述する
](describe-ec2-fleet.md)
+ [

# EC2 フリート の変更
](modify-ec2-fleet.md)
+ [

# EC2 フリートリクエストおよびフリート内のインスタンスを削除する
](delete-fleet.md)

# EC2 フリートリクエストの状態
<a name="EC2-fleet-states"></a>

EC2 フリートリクエストは、いろいろある状態のいずれかになります。その状態ごとにリクエストライフサイクルのステージが異なり、状態を見ればインスタンスの管理状況がわかります。

EC2 フリート リクエストは、次に示す状態のいずれかになります。

`submitted`  
EC2 フリート リクエストは評価中です。Amazon EC2 は目標数のインスタンスを起動する準備をしています。フリートの上限を超えたリクエストは、即時削除されます。

`active`  
EC2 フリート リクエストは検証済みです。Amazon EC2 は実行中のインスタンスをターゲット数分、確保しようとしています。リクエストは、変更または削除されるまで、この状態のままになります。

`modifying`  
EC2 フリート リクエストは変更中です。リクエストは、変更が完全に処理されるか、 リクエストが削除されるまで、この状態のままになります。`maintain` フリートタイプのみを変更できます。この状態はその他のリクエストタイプには適用されません。

`deleted_running`  
EC2 フリートリクエストが削除され、追加のスポットインスタンスは起動されません。その既存のインスタンスは、手動で中断または終了されるまで実行され続けます。リクエストは、すべてのインスタンスが中断されるか終了されるまで、この状態のままになります。EC2 フリートリクエストが削除された後、タイプ `maintain` または `request` の EC2 フリート のみがインスタンスを実行できます。実行中のインスタンスを持つ削除した `instant` フリートはサポートされていません。この状態は `instant` フリートには適用されません。

`deleted_terminating`  
EC2 フリートリクエストが削除され、そのインスタンスが終了します。リクエストは、すべてのインスタンスが終了されるまで、この状態のままになります。

`deleted`  
EC2 フリート リクエストが削除され、実行中のインスタンスがありません。リクエストは、そのインスタンスが終了されてから 2 日後に削除されます。

# EC2 フリートの前提条件
<a name="ec2-fleet-prerequisites"></a>

**Topics**
+ [

## 起動テンプレート
](#ec2-fleet-prerequisites-launch-template)
+ [

## EC2 フリート用のサービスにリンクされたロール
](#ec2-fleet-service-linked-role)
+ [

## 暗号化された AMI および EBS スナップショット用のカスタマー管理された型キーへのアクセス権限の付与
](#ec2-fleet-service-linked-roles-access-to-cmks)
+ [

## EC2 フリートユーザーのアクセス許可
](#ec2-fleet-iam-users)

## 起動テンプレート
<a name="ec2-fleet-prerequisites-launch-template"></a>

起動テンプレートには、インスタンスタイプやアベイラビリティーゾーンなど、起動するインスタンスに関する設定情報を指定します。起動テンプレートの詳細については、「[Amazon EC2 起動テンプレートにインスタンス起動パラメータを保存する](ec2-launch-templates.md)」を参照してください。

## EC2 フリート用のサービスにリンクされたロール
<a name="ec2-fleet-service-linked-role"></a>

`AWSServiceRoleForEC2Fleet` ロールは、インスタンスのリクエスト、起動、終了、タグ付けを行う許可を EC2 フリートに付与します。Amazon EC2 は、このサービスにリンクされたロールを使用して、以下のアクションを完了します。
+ `ec2:RunInstances` – インスタンスを起動します。
+ `ec2:RequestSpotInstances` – スポットインスタンスをリクエストします。
+ `ec2:TerminateInstances` – インスタンスを終了します。
+ `ec2:DescribeImages` - インスタンスの Amazon マシンイメージ (AMI) を表示します。
+ `ec2:DescribeInstanceStatus` - インスタンスのステータスを表示します。
+ `ec2:DescribeSubnets` - インスタンスのサブネットを表示します。
+ `ec2:CreateTags` – EC2 フリート、インスタンス、ボリュームにタグを追加します。

AWS CLI または API を使用して EC2 フリート を作成する前に、このロールが存在していることを確認します。

**注記**  
`instant` EC2 フリート に、このロールは必要ありません。

ロールを作成するには、IAM コンソールを次のように使用します。

**EC2 フリート の AWSServiceRoleForEC2Fleet ロールを作成するには**

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

1. ナビゲーションペインで **Roles (ロール) ** を選択してください。

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

1. **[信頼されたエンティティを選択]** ページで、以下の操作を実行してください。

   1. **[信頼できるエンティティタイプ]** で、**[AWS サービス]** を選択してください。

   1. **[ユースケース]** の **[サービスまたはユースケース]** で、**[EC2 - フリート]** を選択してください。
**ヒント**  
必ず **[EC2 - フリート]** を選択してください。**[EC2]** を選択した場合、**[EC2 - フリート]** ユースケースは **[ユースケース]** リストに表示されません。**[EC2 - フリート]** ユースケースでは、必要な IAM アクセス許可を持つポリシーが自動的に作成され、ロール名として **AWSServiceRoleForEC2Fleet** が提案されます。

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

1. **[アクセス許可を追加]** ページで **[次へ]** を選択してください。

1. **[名前、確認、および作成]** ページで、**[ロールの作成]** をクリックしてください。

EC2 フリート を使用する必要がなくなった場合は、**AWSServiceRoleForEC2Fleet** ロールを削除することをお勧めします。このロールがアカウントから削除された後で、別のフリートを作成した場合はロールを再度作成できます。

詳細については「*IAM ユーザーガイド*」の「[Service-linked roles](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create-service-linked-role.html)」を参照してください。

## 暗号化された AMI および EBS スナップショット用のカスタマー管理された型キーへのアクセス権限の付与
<a name="ec2-fleet-service-linked-roles-access-to-cmks"></a>

[暗号化された AMI](AMIEncryption.md) または暗号化された Amazon EBS スナップショットを EC2 フリートで指定し、暗号化の AWS KMS キーを使用する場合は、カスタマー管理された型キーを使用して、Amazon EC2 がユーザーの代わりにインスタンスを起動する許可を、**AWSServiceRoleForEC2Fleet** ロールに付与する必要があります。これを行うには、次の手順で示すように、カスタマー管理された型キーに許可を追加する必要があります。

アクセス権限を設定するときは付与がキーポリシーの代わりになります。詳細については、「*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)」を参照してください。

**AWSServiceRoleForEC2Fleet ロールにカスタマー管理された型キーを使用する許可を付与するには**
+ [許可の作成](https://docs.aws.amazon.com/cli/latest/reference/kms/create-grant.html) コマンドを使用して、カスタマー管理された型キーに許可を付与し、オペレーションを実行する許可を追加するプリンシパル (**AWSServiceRoleForEC2Fleet** サービスにリンクされたロール) を指定します。カスタマー管理された型キーは、`key-id` パラメーターとカスタマー管理された型キーの ARN を指定されます。プリンシパルを指定するには、`grantee-principal` パラメータと **AWSServiceRoleForEC2Fleet** サービスにリンクされたロールの 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/AWSServiceRoleForEC2Fleet \
      --operations "Decrypt" "Encrypt" "GenerateDataKey" "GenerateDataKeyWithoutPlaintext" "CreateGrant" "DescribeKey" "ReEncryptFrom" "ReEncryptTo"
  ```

## EC2 フリートユーザーのアクセス許可
<a name="ec2-fleet-iam-users"></a>

ユーザーが EC2 フリートを作成または管理する場合、必ず必要な許可を付与してください。

**EC2 フリートのポリシーを作成するには**

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

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

1. **[Create policy]** (ポリシーの作成) を選択してください。

1. **[Create policy]** (ポリシーの作成) ページで、**JSON** タブを選択し、テキストを以下に置き換えて **[Review policy]** (ポリシーの確認) を選択してください。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "ec2:*"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": [
                 "iam:ListRoles",
                 "iam:PassRole",
                 "iam:ListInstanceProfiles"
               ],
               "Resource":"arn:aws:iam::123456789012:role/DevTeam*"
           }
       ]
   }
   ```

------

   `ec2:*` は、ユーザーにすべての Amazon EC2 API アクションを呼び出す許可を付与します。特定の Amazon EC2 API アクションに制限するには、代わりにこれらのアクションを指定します。

   IAM ユーザーは、既存の IAM ロールを列挙する `iam:ListInstanceProfiles` アクション、EC2 フリートロールを指定する `iam:PassRole` アクション、および既存のインスタンスプロファイルを列挙する `iam:ListRoles` アクションを呼び出すには、許可が必要です。

   (オプション) ユーザーが IAM コンソールを使用してロールまたはインスタンスプロファイルを作成できるようにするには、次のアクションをポリシーに追加する必要もあります。
   + `iam:AddRoleToInstanceProfile`
   + `iam:AttachRolePolicy`
   + `iam:CreateInstanceProfile`
   + `iam:CreateRole`
   + `iam:GetRole`
   + `iam:ListPolicies`

1. **[Review policy]** (ポリシーの確認) ページでポリシー名と説明を入力し、**[Create policy]** (ポリシーの作成) を選択してください。

1. アクセス権限を付与するにはユーザー、グループ、またはロールにアクセス許可を追加します。
   + 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) の指示に従います。

# EC2 フリートの作成
<a name="create-ec2-fleet"></a>

EC2 フリートを作成するには、JSON ファイルにフリート設定を定義し、 [create-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-fleet.html) マンドでそのファイルを参照してください。JSON ファイルでは、フリートの合計ターゲットキャパシティ、スポットインスタンスとオンデマンドインスタンスの個別のターゲットキャパシティ、および起動テンプレートを指定する必要があります。起動テンプレートにはフリート内のインスタンスの設定、例えば AMI、インスタンスタイプ、サブネットやアベイラビリティーゾーン、1 つ以上のセキュリティグループなどを定義します。必要に応じて、さらに別の設定を指定できます。例えば、起動テンプレート設定をオーバーライドするためのパラメータ、EC2 キャパシティプールからスポットインスタンスとオンデマンドインスタンスを選択するための配分戦略、フリートに対する最大支出金額などです。詳細については、「[EC2 フリートまたはスポットフリートの設定オプション](ec2-fleet-configuration-strategies.md)」を参照してください。

EC2 フリートは、キャパシティが使用可能であるときはオンデマンドインスタンスを起動し、最大料金がスポット料金を超えていてキャパシティが使用可能であるときはスポットインスタンスを起動します。

フリートにスポットインスタンスが含まれ、タイプが `maintain` である場合、Amazon EC2 はスポットインスタンスが中断したときにフリートのターゲットキャパシティを維持しようとします。

## EC2 フリート の制限事項
<a name="EC2-fleet-limitations"></a>

以下の制限が EC2 フリート に適用されます。
+ EC2 フリートは、[Amazon EC2 API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateFleet.html)、[AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-fleet.html)、[AWS SDK](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateFleet.html#API_CreateFleet_SeeAlso)、および [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-ec2fleet.html) からのみ作成できます。
+ EC2 フリート リクエストは、AWS リージョンにまたがることはできません。リージョンごとに別個の EC2 フリート を作成する必要があります。
+ EC2 フリート リクエストは、同じアベイラビリティーゾーンから複数の異なるサブネットにまたがることはできません。

## EC2 フリートの作成
<a name="create-ec2-fleet-procedure"></a>

EC2 フリートを使用して複数のインスタンスからなるフリートを起動する場合、必要な手順はフリートリクエストに以下のパラメータを指定することだけです。その他のパラメータには、デフォルト値が使用されます。
+ `LaunchTemplateId` または `LaunchTemplateName` — 使用する起動テンプレートを指定します (インスタンスタイプやアベイラビリティーゾーンなど、起動するインスタンスのパラメータを指定します)。
+ `TotalTargetCapacity` — フリートの合計ターゲット容量を指定します。
+ `DefaultTargetCapacityType` — デフォルトの購入オプションをオンデマンドにするかスポットにするかを指定します。

起動テンプレートに指定されているパラメータをオーバーライドするには、1 つ以上のオーバーライドを指定します。各オーバーライドはインスタンスタイプ、アベイラビリティーゾーン、サブネット、最大料金によって異なり、オーバーライドごとに加重キャパシティを変えることができます。インスタンスタイプを指定する代わりに、インスタンスに必要な属性を指定でき、Amazon EC2 はそうした属性ですべてのインスタンスタイプを識別します。詳細については、「[EC2 フリートまたはスポットフリートのインスタンスタイプを選択するための属性を指定する](ec2-fleet-attribute-based-instance-type-selection.md)」を参照してください。

EC2 フリートのタイプが `instant` の場合、AMI ID ではなく Systems Manager パラメータを指定できます。Systems Manager パラメータは、オーバーライドまたは起動テンプレートに指定できます。詳細については、「[AMI ID のかわりに Systems Manager パラメータを使用する](create-launch-template.md#use-an-ssm-parameter-instead-of-an-ami-id)」を参照してください。

JSON ファイルにフリートパラメータを指定できます。指定可能なすべてのパラメータについては、「[EC2 フリートの設定オプションをすべて表示する](#ec2-fleet-cli-skeleton)」を参照してください。

フリート設定の例については、「[EC2 フリートの CLI 設定の例](ec2-fleet-examples.md)」を参照してください。

EC2 フリートを作成するためのコンソールのサポートは現在ありません。

**EC2 フリートを作成するには**  
 [create-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-fleet.html) コマンドを使用して、フリートを作成し、フリート設定パラメータを記載した JSON ファイルを指定します。

```
aws ec2 create-fleet --cli-input-json file://file_name.json
```

タイプ `request` またはタイプ `maintain` のフリートの出力例を次に示します。

```
{
    "FleetId": "fleet-12a34b55-67cd-8ef9-ba9b-9208dEXAMPLE"
}
```

ターゲット容量を起動したタイプ `instant` のフリートの出力例を次に示します。

```
{
  "FleetId": "fleet-12a34b55-67cd-8ef9-ba9b-9208dEXAMPLE",
  "Errors": [],
  "Instances": [
    {
      "LaunchTemplateAndOverrides": {
        "LaunchTemplateSpecification": {
          "LaunchTemplateId": "lt-01234a567b8910abcEXAMPLE",
          "Version": "1"
        },
        "Overrides": {
          "InstanceType": "c5.large",
          "AvailabilityZone": "us-east-1a"
        }
      },
      "Lifecycle": "on-demand",
      "InstanceIds": [
        "i-1234567890abcdef0",
        "i-9876543210abcdef9" 
      ],
      "InstanceType": "c5.large",
      "Platform": null
    },
    {
      "LaunchTemplateAndOverrides": {
        "LaunchTemplateSpecification": {
          "LaunchTemplateId": "lt-01234a567b8910abcEXAMPLE",
          "Version": "1"
        },
        "Overrides": {
          "InstanceType": "c4.large",
          "AvailabilityZone": "us-east-1a"
        }
      },
      "Lifecycle": "on-demand",
      "InstanceIds": [
        "i-5678901234abcdef0",
        "i-5432109876abcdef9" 
      ]
  ]
}
```

ターゲット容量の一部を起動し、起動されなかったインスタンスをエラーとするタイプ `instant` のフリートの出力例を次に示します。

```
{
  "FleetId": "fleet-12a34b55-67cd-8ef9-ba9b-9208dEXAMPLE",
  "Errors": [
    {
      "LaunchTemplateAndOverrides": {
        "LaunchTemplateSpecification": {
          "LaunchTemplateId": "lt-01234a567b8910abcEXAMPLE",
          "Version": "1"
        },
        "Overrides": {
          "InstanceType": "c4.xlarge",
          "AvailabilityZone": "us-east-1a",
        }
      },
      "Lifecycle": "on-demand",
      "ErrorCode": "InsufficientInstanceCapacity",
      "ErrorMessage": ""
    },
  ],
  "Instances": [
    {
      "LaunchTemplateAndOverrides": {
        "LaunchTemplateSpecification": {
          "LaunchTemplateId": "lt-01234a567b8910abcEXAMPLE",
          "Version": "1"
        },
        "Overrides": {
          "InstanceType": "c5.large",
          "AvailabilityZone": "us-east-1a"
        }
      },
      "Lifecycle": "on-demand",
      "InstanceIds": [
        "i-1234567890abcdef0",
        "i-9876543210abcdef9" 
      ]
  ]
}
```

インスタンスを起動しなかったタイプ `instant` のフリートの出力例を次に示します。

```
{
  "FleetId": "fleet-12a34b55-67cd-8ef9-ba9b-9208dEXAMPLE",
  "Errors": [
    {
      "LaunchTemplateAndOverrides": {
        "LaunchTemplateSpecification": {
          "LaunchTemplateId": "lt-01234a567b8910abcEXAMPLE",
          "Version": "1"
        },
        "Overrides": {
          "InstanceType": "c4.xlarge",
          "AvailabilityZone": "us-east-1a",
        }
      },
      "Lifecycle": "on-demand",
      "ErrorCode": "InsufficientCapacity",
      "ErrorMessage": ""
    },
    {
      "LaunchTemplateAndOverrides": {
        "LaunchTemplateSpecification": {
          "LaunchTemplateId": "lt-01234a567b8910abcEXAMPLE",
          "Version": "1"
        },
        "Overrides": {
          "InstanceType": "c5.large",
          "AvailabilityZone": "us-east-1a",
        }
      },
      "Lifecycle": "on-demand",
      "ErrorCode": "InsufficientCapacity",
      "ErrorMessage": ""
    },
  ],
  "Instances": []
}
```

## 異常なスポットインスタンスを置き換える EC2 フリートを作成する
<a name="ec2-fleet-health-checks"></a>

EC2 フリート は、2 分ごとにフリートのインスタンスのヘルスステータスをチェックします。インスタンスのヘルスステータスは `healthy` または `unhealthy` です。

EC2 フリート は Amazon EC2 によって提供されるステータスチェックを使用して、インスタンスのヘルスステータスを判断します。インスタンスステータスチェックまたはシステムステータスチェックのいずれかのステータスが 3 回の連続したヘルスステータスチェックで `impaired` の場合、インスタンスは `unhealthy` と判断されます。詳細については、「[Amazon EC2 インスタンスのステータスチェック](monitoring-system-instance-status-check.md)」を参照してください。

フリートを設定して、異常のある スポットインスタンス を置き換えることができます。`ReplaceUnhealthyInstances` を `true` に設定した後、`unhealthy` として報告されたときにスポットインスタンスが置き換えられます。異常のあるスポットインスタンスを置き換えている間、最大数分間、フリートがターゲット容量を下回る場合があります。

**要件**
+ ヘルスチェックによる置き換えは、タイプ `request` または `instant` のフリートではなく、ターゲットキャパシティを維持している EC2 フリート (タイプ `maintain` のフリート) でのみサポートされます。
+ ヘルスチェックによる置き換えは、スポットインスタンス でのみサポートされます。この機能は オンデマンドインスタンス ではサポートされていません。
+ 作成時のみ異常なインスタンスを置き換えるよう EC2 フリート を設定できます。
+ ユーザーは、`ec2:DescribeInstanceStatus` アクションを呼び出す許可を持っている場合のみ、ヘルスチェックの置き換えを使用できます。

**異常のある スポットインスタンス を置き換えるように EC2 フリート を設定するには**

1. 「[EC2 フリートの作成](#create-ec2-fleet-procedure)」で EC2 フリートを作成するための情報を使用します。

1. 異常のあるスポットインスタンスを置き換えるようにフリートを設定するには、JSON ファイルの `ReplaceUnhealthyInstances` に `true` を指定します。

## EC2 フリートの設定オプションをすべて表示する
<a name="ec2-fleet-cli-skeleton"></a>

フリート設定パラメータの詳細なリストを見るには、JSON ファイルを次のように作成できます。各パラメータの説明については [create-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-fleet.html) を参照してください。

**使用可能なすべての EC2 フリートパラメータを含めて JSON ファイルを生成するには**  
[create-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-fleet.html) AWS CLIコマンドと `--generate-cli-skeleton` パラメータを使用して、EC2 フリート JSON ファイルを生成し、出力のファイルへの保存を指示します。

```
aws ec2 create-fleet \
    --generate-cli-skeleton input > ec2createfleet.json
```

以下は出力の例です。

```
{
    "DryRun": true,
    "ClientToken": "",
    "SpotOptions": {
        "AllocationStrategy": "price-capacity-optimized",
        "MaintenanceStrategies": {
            "CapacityRebalance": {
                "ReplacementStrategy": "launch"
            }
        },
        "InstanceInterruptionBehavior": "hibernate",
        "InstancePoolsToUseCount": 0,
        "SingleInstanceType": true,
        "SingleAvailabilityZone": true,
        "MinTargetCapacity": 0,
        "MaxTotalPrice": ""
    },
    "OnDemandOptions": {
        "AllocationStrategy": "prioritized",
        "CapacityReservationOptions": {
            "UsageStrategy": "use-capacity-reservations-first"
        },
        "SingleInstanceType": true,
        "SingleAvailabilityZone": true,
        "MinTargetCapacity": 0,
        "MaxTotalPrice": ""
    },
    "ExcessCapacityTerminationPolicy": "termination",
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateId": "",
                "LaunchTemplateName": "",
                "Version": ""
            },
            "Overrides": [
                {
                    "InstanceType": "r5.metal",
                    "MaxPrice": "",
                    "SubnetId": "",
                    "AvailabilityZone": "",
                    "WeightedCapacity": 0.0,
                    "Priority": 0.0,
                    "Placement": {
                        "AvailabilityZone": "",
                        "Affinity": "",
                        "GroupName": "",
                        "PartitionNumber": 0,
                        "HostId": "",
                        "Tenancy": "dedicated",
                        "SpreadDomain": "",
                        "HostResourceGroupArn": ""
                    },
                    "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": "included",
                        "BurstablePerformance": "required",
                        "RequireHibernateSupport": true,
                        "NetworkInterfaceCount": {
                            "Min": 0,
                            "Max": 0
                        },
                        "LocalStorage": "excluded",
                        "LocalStorageTypes": [
                            "ssd"
                        ],
                        "TotalLocalStorageGB": {
                            "Min": 0.0,
                            "Max": 0.0
                        },
                        "BaselineEbsBandwidthMbps": {
                            "Min": 0,
                            "Max": 0
                        },
                        "AcceleratorTypes": [
                            "inference"
                        ],
                        "AcceleratorCount": {
                            "Min": 0,
                            "Max": 0
                        },
                        "AcceleratorManufacturers": [
                            "amd"
                        ],
                        "AcceleratorNames": [
                            "a100"
                        ],
                        "AcceleratorTotalMemoryMiB": {
                            "Min": 0,
                            "Max": 0
                        }
                    }
                }
            ]
        }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 0,
        "OnDemandTargetCapacity": 0,
        "SpotTargetCapacity": 0,
        "DefaultTargetCapacityType": "on-demand",
        "TargetCapacityUnitType": "memory-mib"
    },
    "TerminateInstancesWithExpiration": true,
    "Type": "instant",
    "ValidFrom": "1970-01-01T00:00:00",
    "ValidUntil": "1970-01-01T00:00:00",
    "ReplaceUnhealthyInstances": true,
    "TagSpecifications": [
        {
            "ResourceType": "fleet",
            "Tags": [
                {
                    "Key": "",
                    "Value": ""
                }
            ]
        }
    ],
    "Context": ""
}
```

# 新規または既存の EC2 フリートリクエスト、およびそのフリートが起動するインスタンスとボリュームにタグ付けします。
<a name="tag-ec2-fleet"></a>

EC2 フリートリクエスト、およびそのフリートが起動するインスタンスとボリュームを分類および管理しやすくするために、カスタムメタデータでタグ付けできます。EC2 フリート タグは、作成時または作成後にリクエストに割り当てることができます。同様に、インスタンスとボリュームにも、フリートによって起動されるときまたは起動後に、タグを割り当てることができます。

フリートリクエストにタグを付けると、フリートによって起動されるインスタンスとボリュームには自動的にタグ付けされません。フリートによって起動されるインスタンスとボリュームには、明示的にタグを付ける必要があります。タグは、フリートリクエストのみに割り当てるか、フリートによって起動されたインスタンスのみに割り当てるか、フリートによって起動されたインスタンスにアタッチされたボリュームのみに割り当てるか、またはそのすべてに割り当てるかを選択できます。

**注記**  
`instant` フリートタイプでは、 オンデマンドインスタンス および スポットインスタンス にアタッチされているボリュームにタグ付けできます。`request` または `maintain` フリートタイプでは、オンデマンドインスタンス にアタッチされているボリュームにのみタグ付けできます。

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

**前提条件**

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

**リソースにタグ付けする許可をユーザーに付与するには**  
以下を含む IAM ポリシーを作成します。
+ `ec2:CreateTags` アクション。これにより、タグを作成する許可がユーザーに付与されます。
+ `ec2:CreateFleet` アクション。これにより、EC2 フリートリクエストを作成する許可がユーザーに付与されます。
+ `Resource` に対しては、`"*"` を指定することをお勧めします。これにより、ユーザーはすべてのリソースタイプにタグ付けできます。

アクセス権限を付与するにはユーザー、グループ、またはロールにアクセス許可を追加します。
+ 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) の指示に従います。

**新しい EC2 フリート リクエストにタグ付けするには**  
作成時に EC2 フリート リクエストをタグ付けするには、フリートを作成するために使用した [JSON ファイル](create-ec2-fleet.md#ec2-fleet-cli-skeleton) でキーと値のペアを指定します。`ResourceType` の値は `fleet` にする必要があります。別の値で指定すると、フリートリクエストは失敗します。

**EC2 フリート によって起動されたインスタンスおよびボリュームにタグ付けするには**  
フリートが起動したインスタンスおよびボリュームにタグ付けするには、EC2 フリート リクエストで参照される [起動テンプレート](create-launch-template.md) でタグを指定します。

**注記**  
`request` または `maintain` フリートタイプによって起動される スポットインスタンス にアタッチされたボリュームにタグを付けることはできません。

**既存の EC2 フリートリクエスト、インスタンス、ボリュームにタグ付けするには**  
[create-tags](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-tags.html) コマンドを使用して、既存のリソースにタグを付けます。

```
aws ec2 create-tags \
    --resources fleet-12a34b55-67cd-8ef9-ba9b-9208dEXAMPLE i-1234567890abcdef0 vol-1234567890EXAMPLE \
    --tags Key=purpose,Value=test
```

# EC2 フリート、そのインスタンス、イベントを記述する
<a name="describe-ec2-fleet"></a>

EC2 フリートの設定、EC2 フリートのインスタンス、EC2 フリートのイベント履歴を記述できます。

**Topics**
+ [

## EC2 フリートを記述する
](#describe-all-ec2-fleets)
+ [

## EC2 フリート内のすべてのインスタンスを記述する
](#describe-instances-in-ec2-fleet)
+ [

## EC2 フリートのイベント履歴を表示する
](#describe-ec2-fleet-event-history)

## EC2 フリートを記述する
<a name="describe-all-ec2-fleets"></a>

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

**EC2 フリートを記述するには**  
[describe-fleets](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-fleets.html) コマンドを使用します。

```
aws ec2 describe-fleets \
    --fleet-ids fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE
```

以下は出力の例です。

```
{
    "Fleets": [
        {
            "ActivityStatus": "fulfilled",
            "CreateTime": "2022-02-09T03:35:52+00:00",
            "FleetId": "fleet-364457cd-3a7a-4ed9-83d0-7b63e51bb1b7",
            "FleetState": "active",
            "ExcessCapacityTerminationPolicy": "termination",
            "FulfilledCapacity": 2.0,
            "FulfilledOnDemandCapacity": 0.0,
            "LaunchTemplateConfigs": [
                {
                    "LaunchTemplateSpecification": {
                        "LaunchTemplateName": "my-launch-template",
                        "Version": "$Latest"
                    }
                }
            ],
            "TargetCapacitySpecification": {
                "TotalTargetCapacity": 2,
                "OnDemandTargetCapacity": 0,
                "SpotTargetCapacity": 2,
                "DefaultTargetCapacityType": "spot"
            },
            "TerminateInstancesWithExpiration": false,
            "Type": "maintain",
            "ReplaceUnhealthyInstances": false,
            "SpotOptions": {
                "AllocationStrategy": "capacity-optimized",
                "InstanceInterruptionBehavior": "terminate"
            },
            "OnDemandOptions": {
                "AllocationStrategy": "lowestPrice"
            }
        }
    ]
}
```

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

**EC2 フリートを記述するには**  
[Get-EC2FleetList](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2FleetList.html) コマンドレットを使用します。

```
Get-EC2FleetList `
    -FleetId fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE
```

------

## EC2 フリート内のすべてのインスタンスを記述する
<a name="describe-instances-in-ec2-fleet"></a>

実行中のインスタンスの返されるリストは定期的に更新されますが、古い可能性もあります。

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

**指定した EC2 フリートのインスタンスを記述するには**  
[describe-fleet-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-fleet-instances.html) コマンドを使用します。

```
aws ec2 describe-fleet-instances \
    --fleet-id fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE
```

以下は出力の例です。

```
{
    "ActiveInstances": [
        {
            "InstanceId": "i-09cd595998cb3765e", 
            "InstanceHealth": "healthy", 
            "InstanceType": "m4.large", 
            "SpotInstanceRequestId": "sir-86k84j6p"
        }, 
        {
            "InstanceId": "i-09cf95167ca219f17", 
            "InstanceHealth": "healthy", 
            "InstanceType": "m4.large", 
            "SpotInstanceRequestId": "sir-dvxi7fsm"
        }
    ], 
    "FleetId": "fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE"
}
```

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

**指定した EC2 フリートのインスタンスを記述するには**  
[Get-EC2FleetInstanceList](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2FleetInstanceList.html) コマンドレットを使用します。

```
Get-EC2FleetInstanceList `
    -FleetId fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE
```

------

## EC2 フリートのイベント履歴を表示する
<a name="describe-ec2-fleet-event-history"></a>

イベント履歴のイベントの詳細については、「[EC2 フリート イベントタイプ](monitor-ec2-fleet-using-eventbridge.md#ec2-fleet-event-types)」を参照してください。

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

**指定した EC2 フリートのイベントを記述するには**  
[describe-fleet-history](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-fleet-history.html) コマンドを使用します。

```
aws ec2 describe-fleet-history \
    --fleet-id fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE \
    --start-time 2020-06-01T00:00:00Z
```

以下は出力の例です。

```
{
    "HistoryRecords": [
        {
            "EventInformation": {
                "EventSubType": "submitted"
            },
            "EventType": "fleetRequestChange",
            "Timestamp": "2020-09-01T18:26:05.000Z"
        },
        {
            "EventInformation": {
                "EventSubType": "active"
            },
            "EventType": "fleetRequestChange",
            "Timestamp": "2020-09-01T18:26:15.000Z"
        },
        {
            "EventInformation": {
                "EventDescription": "t2.small, ami-07c8bc5c1ce9598c3, ...",
                "EventSubType": "progress"
            },
            "EventType": "fleetRequestChange",
            "Timestamp": "2020-09-01T18:26:17.000Z"
        },
        {
            "EventInformation": {
                "EventDescription": "{\"instanceType\":\"t2.small\", ...}",
                "EventSubType": "launched",
                "InstanceId": "i-083a1c446e66085d2"
            },
            "EventType": "instanceChange",
            "Timestamp": "2020-09-01T18:26:17.000Z"
        },
        {
            "EventInformation": {
                "EventDescription": "{\"instanceType\":\"t2.small\", ...}",
                "EventSubType": "launched",
                "InstanceId": "i-090db02406cc3c2d6"
            },
            "EventType": "instanceChange",
            "Timestamp": "2020-09-01T18:26:17.000Z"
        }
    ], 
    "FleetId": "fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE", 
    "LastEvaluatedTime": "1970-01-01T00:00:00.000Z", 
    "StartTime": "2020-06-01T00:00:00.000Z"
}
```

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

**指定した EC2 フリートのイベントを記述するには**  
[Get-EC2FleetHistory](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2FleetHistory.html) コマンドレットを使用します。

```
Get-EC2FleetHistory `
    -FleetId fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE `
    -UtcStartTime 2020-06-01T00:00:00Z
```

------

# EC2 フリート の変更
<a name="modify-ec2-fleet"></a>

EC2 フリートの合計ターゲットキャパシティ、スポットキャパシティ、オンデマンドキャパシティを変更できます。また、新しい合計ターゲットキャパシティがフリートの現在のサイズを下回った場合に、実行中のインスタンスを終了すべきかどうかも変更できます。

## 考慮事項
<a name="modify-ec2-fleet-considerations"></a>

EC2 フリートを変更するときは、以下の点を考慮してください。
+ **フリートタイプ** - 変更できるのは、`maintain` タイプの EC2 フリートだけです。タイプが `request` や `instant` の EC2 フリートは変更できません。
+ **フリートパラメータ** - EC2 フリートの以下のパラメータを変更できます。
  + `target-capacity-specification` – 以下のターゲットキャパシティを増やすか減らします。
    + `TotalTargetCapacity`
    + `OnDemandTargetCapacity`
    + `SpotTargetCapacity`
  + `excess-capacity-termination-policy` – EC2 フリート の合計ターゲット容量がフリートの現在のサイズより小さくなった場合、実行中のインスタンスが終了されるかどうか。次の値を指定できます。
    + `no-termination`
    + `termination`
+ **合計ターゲットキャパシティを増やしたときのフリートの動作** – 合計ターゲットキャパシティを増やすと、EC2 フリートは `DefaultTargetCapacityType` に指定されているインスタンス購入オプションに従ってさらに別のインスタンスを起動します。これはオンデマンドインスタンスかスポットインスタンスのいずれかであり、指定された[配分戦略](ec2-fleet-allocation-strategy.md)に従います。
+ **スポットターゲットキャパシティを減らしたときのフリートの動作** – ターゲットキャパシティを減らすと、EC2 フリートは新しいターゲットキャパシティを超えるすべてのオープンリクエストをキャンセルします。フリートのサイズが新しいターゲットキャパシティに達するまで、スポットインスタンスを終了させるようにリクエストできます。ターゲット容量が減ったために EC2 フリートがスポットインスタンスを終了する場合、インスタンスはスポットインスタンスの中断通知を受け取ります。

  インスタンスは、割り当て戦略に応じて、終了対象として選択されます。
  + `capacity-optimized` – 使用可能なキャパシティが最も少ないプールからのインスタンスを終了します。
  + `price-capacity-optimized` – 価格と使用可能なキャパシティの組み合わせを使用します。使用可能なキャパシティが最も少ないプールの中で、最高価格のプールからのインスタンスを終了します。
  + `diversified` – すべてのプールのインスタンスを終了します。
  + `lowest-price` – 最高価格のプールからのインスタンスを終了します。

  あるいは、EC2 フリートの現在のサイズを維持するようにリクエストすることもできますが、中断されたスポットインスタンスや手動で終了したインスタンスの置き換えはできません。
+ **フリート状態** - 状態が `submitted` または `active` の EC2 フリートを変更できます。フリートを変更すると、そのフリートは `modifying` 状態に移行します。

## EC2 フリートを変更するためのコマンド
<a name="modify-ec2-fleet-commands"></a>

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

**EC2 フリートの合計ターゲットキャパシティを変更するには**  
[modify-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-fleet.html) コマンドを使用します。

```
aws ec2 modify-fleet \
    --fleet-id fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE \
    --target-capacity-specification TotalTargetCapacity=20
```

ターゲットキャパシティを小さくしてもフリートの現在のサイズを保持する場合は、前の例を以下のように変更できます。

```
aws ec2 modify-fleet \
    --fleet-id fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE \
    --target-capacity-specification TotalTargetCapacity=10 \
    --excess-capacity-termination-policy no-termination
```

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

**EC2 フリートの合計ターゲットキャパシティを変更するには**  
[Edit-EC2Fleet](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2Fleet.html) コマンドレットを使用します。

```
Edit-EC2Fleet `
    -FleetId "fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" `
    -TargetCapacitySpecification_TotalTargetCapacity 20
```

ターゲットキャパシティを小さくしてもフリートの現在のサイズを保持する場合は、前の例を以下のように変更できます。

```
Edit-EC2Fleet `
    -FleetId "fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" `
    -TargetCapacitySpecification_TotalTargetCapacity 20 `
    -ExcessCapacityTerminationPolicy "NoTermination"
```

------

# EC2 フリートリクエストおよびフリート内のインスタンスを削除する
<a name="delete-fleet"></a>

EC2 フリートリクエストが不要になった場合には削除できます。フリートリクエストを削除すると、そのフリートに関連付けられているすべてのスポットリクエストがキャンセルされるため、新しいスポットインスタンスは起動されません。

EC2 フリートリクエストを削除するときは、そのインスタンスをすべて終了させるかどうかを指定する必要があります。これには、オンデマンドインスタンスとスポットインスタンスの両方が含まれます。`instant` フリートの場合、EC2 フリートはフリートの削除時にインスタンスを終了する必要があります。実行中のインスタンスを持つ削除した `instant` フリートはサポートされていません。

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

フリートリクエストを削除するときに、インスタンスを終了するように指定した場合、フリートリクエストは `deleted_terminating` 状態に移行します。それ以外の場合は `deleted_running` 状態になり、インスタンスは中断または手動終了されるまで、引き続き実行されます。

**制限事項**
+ 1 回の操作で最大 25 個の `instant` タイプのフリートを削除できます。
+ 1 回の操作で最大 100 個の `maintain` または `request` タイプのフリートを削除できます。
+ 上記のように、各フリートタイプのクォータを超えない場合は、1 回の操作で最大 125 個のフリートを削除できます。
+ 削除するフリートの指定された数を超えると、フリートは削除されません。
+ 実行中のインスタンスを持つ削除した `instant` フリートはサポートされていません。`instant` フリートを削除すると、Amazon EC2 はすべてのインスタンスを自動的に終了させます。1000 個を超えるインスタンスで構成された `instant` フリートの場合、削除リクエストは失敗する可能性があります。1000 個を超えるインスタンスで構成されたフリートの場合は、まずほとんどのインスタンスを手動で終了させ、残りのインスタンスが 1000 個以下になるようにします。次に、フリートを削除すると、残りのインスタンスは自動的に終了します。

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

**EC2 フリートリクエストを削除してインスタンスを終了するには**  
[delete-fleets](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-fleets.html) コマンドを `--terminate-instances` オプションと共に使用します。

```
aws ec2 delete-fleets \
    --fleet-ids fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE \
    --terminate-instances
```

以下は出力の例です。

```
{
    "UnsuccessfulFleetDeletions": [], 
    "SuccessfulFleetDeletions": [
        {
            "CurrentFleetState": "deleted_terminating", 
            "PreviousFleetState": "active", 
            "FleetId": "fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE"
        }
    ]
}
```

**インスタンスを終了せずに EC2 フリートリクエストを削除するには**  
代わりに `--no-terminate-instances` オプションを使用して、前の例を変更します。`--no-terminate-instances` は `instant` フリートではサポートされていないことに注意してください。

```
aws ec2 delete-fleets \
    --fleet-ids fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE \
    --no-terminate-instances
```

以下は出力の例です。

```
{
    "UnsuccessfulFleetDeletions": [], 
    "SuccessfulFleetDeletions": [
        {
            "CurrentFleetState": "deleted_running", 
            "PreviousFleetState": "active", 
            "FleetId": "fleet-4b8aaae8-dfb5-436d-a4c6-3dafa4c6b7dcEXAMPLE"
        }
    ]
}
```

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

**EC2 フリートリクエストを削除してインスタンスを終了するには**  
[Remove-EC2Fleet](https://docs.aws.amazon.com/powershell/latest/reference/items/Remove-EC2Fleet.html) コマンドレットを `-TerminateInstance` パラメータと共に使用します。

```
Remove-EC2Fleet `
    -FleetId "fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" `
    -TerminateInstance $true
```

**インスタンスを終了せずに EC2 フリートリクエストを削除するには**  
`-TerminateInstance` パラメータの値を変更して、前の例を変更します。

```
Remove-EC2Fleet `
    -FleetId "fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" `
    -TerminateInstance $false
```

------

## フリートの削除に失敗した場合のトラブルシューティング
<a name="troubleshoot-delete-fleet"></a>

EC2 フリートリクエスト の削除に失敗すると、出力中の `UnsuccessfulFleetDeletions` は EC2 フリートリクエスト の ID、エラーコード、エラーメッセージを返します。

エラーコードは次のとおりです。
+ `ExceededInstantFleetNumForDeletion`
+ `fleetIdDoesNotExist`
+ `fleetIdMalformed`
+ `fleetNotInDeletableState`
+ `NoTerminateInstancesNotSupported`
+ `UnauthorizedOperation`
+ `unexpectedError`

**`ExceededInstantFleetNumForDeletion` のトラブルシューティング**  
1 回のリクエストで 25 個 を超える `instant` フリートを削除しようとすると、`ExceededInstantFleetNumForDeletion` エラーが返されます。このエラーの出力例を次に示します。

```
{
    "UnsuccessfulFleetDeletions": [
     {
          "FleetId": " fleet-5d130460-0c26-bfd9-2c32-0100a098f625",
          "Error": {
                  "Message": "Can’t delete more than 25 instant fleets in a single request.",
                  "Code": "ExceededInstantFleetNumForDeletion"
           }
     },
     {
           "FleetId": "fleet-9a941b23-0286-5bf4-2430-03a029a07e31",
           "Error": {
                  "Message": "Can’t delete more than 25 instant fleets in a single request.",
                  "Code": "ExceededInstantFleetNumForDeletion"
            }
     }
     .
     .
     .
     ],
     "SuccessfulFleetDeletions": []
}
```

**`NoTerminateInstancesNotSupported` のトラブルシューティング**  
フリートを削除するときに `instant` フリート内のインスタンスを終了しないように指定した場合、`NoTerminateInstancesNotSupported` エラーが返されます。`--no-terminate-instances` は `instant` フリートではサポートされていません。このエラーの出力例を次に示します。

```
{
      "UnsuccessfulFleetDeletions": [
            {
                  "FleetId": "fleet-5d130460-0c26-bfd9-2c32-0100a098f625",
                  "Error": {
                          "Message": "NoTerminateInstances option is not supported for instant fleet",
                          "Code": "NoTerminateInstancesNotSupported"
                   }
            }
       ],
       "SuccessfulFleetDeletions": []
}
```

**`UnauthorizedOperation` のトラブルシューティング**  
インスタンスを終了するアクセス許可がない場合、インスタンスを終了する必要があるフリートを削除するときに `UnauthorizedOperation` エラーが発生します。以下はエラーレスポンスです。

```
<Response><Errors><Error><Code>UnauthorizedOperation</Code><Message>You are not authorized to perform this 
operation. Encoded authorization failure message: VvuncIxj7Z_CPGNYXWqnuFV-YjByeAU66Q9752NtQ-I3-qnDLWs6JLFd
KnSMMiq5s6cGqjjPtEDpsnGHzzyHasFHOaRYJpaDVravoW25azn6KNkUQQlFwhJyujt2dtNCdduJfrqcFYAjlEiRMkfDHt7N63SKlweKUl
BHturzDK6A560Y2nDSUiMmAB1y9UNtqaZJ9SNe5sNxKMqZaqKtjRbk02RZu5V2vn9VMk6fm2aMVHbY9JhLvGypLcMUjtJ76H9ytg2zRlje
VPiU5v2s-UgZ7h0p2yth6ysUdhlONg6dBYu8_y_HtEI54invCj4CoK0qawqzMNe6rcmCQHvtCxtXsbkgyaEbcwmrm2m01-EMhekLFZeJLr
DtYOpYcEl4_nWFX1wtQDCnNNCmxnJZAoJvb3VMDYpDTsxjQv1PxODZuqWHs23YXWVywzgnLtHeRf2o4lUhGBw17mXsS07k7XAfdPMP_brO
PT9vrHtQiILor5VVTsjSPWg7edj__1rsnXhwPSu8gI48ZLRGrPQqFq0RmKO_QIE8N8s6NWzCK4yoX-9gDcheurOGpkprPIC9YPGMLK9tug
</Message></Error></Errors><RequestID>89b1215c-7814-40ae-a8db-41761f43f2b0</RequestID></Response>
```

エラーを解決するには、次の例に示すように、`ec2:TerminateInstances` アクションを IAM ポリシーに追加する必要があります。

# スポットフリートを操作する
<a name="work-with-spot-fleets"></a>

スポットフリートの使用を開始するには、スポットインスタンスの合計ターゲットキャパシティ、オプションのオンデマンド部分を含むリクエストを作成し、AMI とキーペアを手動で指定するか、フリート内のインスタンスの設定を含む起動テンプレートを指定します。必要に応じて、さらに別のパラメータを指定したり、デフォルト値を使用するようにフリートを設定したりできます。また、フリートを作成するときに、フリートリクエスト、およびフリート内のインスタンスとボリュームにタグ付けすることもできます。

フリートは、使用可能なキャパシティがあるときはオンデマンドインスタンスを起動し、上限価格がスポット料金より大きく、キャパシティが利用可能なときはスポットインスタンスを起動します。

フリートを起動したら、フリートリクエスト、フリート内のインスタンス、およびフリートイベントの説明を記述できます。また、必要に応じてさらに別のタグを割り当てることもできます。

合計ターゲットキャパシティなどのフリートパラメータを変更する必要がある場合は、キャパシティを維持するように設定されているのであれば、フリートを変更できます。送信後にワンタイムリクエストのキャパシティを変更することはできません。

フリートリクエストは、期限切れになるかお客様によってキャンセル (削除) されるまで、アクティブのままになります。フリートリクエストをキャンセルするときは、インスタンスを終了することも、実行したままにすることもできます。実行したままにする場合、オンデマンドインスタンスは、終了されるまで実行され、スポットインスタンスは中断されるか終了されるまで実行されます。

**Topics**
+ [

# スポットフリートリクエストの状態
](spot-fleet-states.md)
+ [

# スポットフリートアクセス許可
](spot-fleet-prerequisites.md)
+ [

# スポットフリートを作成する
](create-spot-fleet.md)
+ [

# 新しいまたは既存のスポットフリートリクエスト、およびそのフリートが起動するインスタンスとボリュームにタグ付けする
](tag-spot-fleet.md)
+ [

# スポットフリートリクエスト、そのインスタンス、イベント履歴を記述する
](manage-spot-fleet.md)
+ [

# スポットフリートリクエストを変更します。
](modify-spot-fleet.md)
+ [

# スポットフリートリクエストをキャンセル (削除) します。
](cancel-spot-fleet.md)
+ [

# スポットフリートの自動スケーリングについて
](spot-fleet-automatic-scaling.md)

# スポットフリートリクエストの状態
<a name="spot-fleet-states"></a>

スポットフリートリクエストはさまざまな状態の 1 つであり、各状態はリクエストライフサイクルとインスタンスの管理の異なる段階を示します。

スポットフリートリクエストは、次の状態のいずれかになります。

`submitted`  
スポットフリートリクエストは評価中です。Amazon EC2 は目標数のインスタンスを起動する準備をしています。スポットフリートのクォータを超えたリクエストは、即時キャンセルされます。

`active`  
スポットフリートは検証済みです。Amazon EC2 はターゲット数の実行中のスポットインスタンスを維持しようとしています。リクエストは、変更またはキャンセルされるまで、この状態のままになります。

`modifying`  
スポットフリートリクエストは変更中です。リクエストは、変更が完全に処理されるか、リクエストがキャンセルされるまで、この状態のままになります。`maintain` フリートタイプのみを変更できます。この状態は 1 回限りの `request` フリートタイプには適用されません。

`cancelled_running`  
スポットフリートはキャンセル (削除) され、追加のスポットインスタンスを起動しません。その既存のインスタンスは、手動で中断または終了されるまで実行され続けます。リクエストは、すべてのインスタンスが中断されるか終了されるまで、この状態のままになります。

`cancelled_terminating`  
スポットフリートがキャンセル (削除) され、そのインスタンスが終了しています。リクエストは、すべてのインスタンスが終了されるまで、この状態のままになります。

`cancelled`  
このスポットフリートはキャンセル (削除) されており、実行中のインスタンスはありません。リクエストは、そのインスタンスが終了されてから 2 日後に削除されます。

# スポットフリートアクセス許可
<a name="spot-fleet-prerequisites"></a>

ユーザーがスポットフリートを作成または管理する場合、必要な許可を付与する必要があります。

Amazon EC2 コンソールを使用してスポットフリートを作成した場合、`AWSServiceRoleForEC2SpotFleet` および `AWSServiceRoleForEC2Spot` というサービスにリンクされた 2 つのロールと、`aws-ec2-spot-fleet-tagging-role` というロールが作成されます。ユーザーの代わりに、リソースのリクエスト、起動、終了、タグ付けを行うアクセス許可をスポットフリートに与えます。AWS CLI または API を使用する場合は、これらのロールが存在することを確認する必要があります。

次の手順に従って、必要なアクセス許可を付与し、ロールを作成します。

**Topics**
+ [

## ユーザーにスポットフリートの許可を付与する
](#spot-fleet-iam-users)
+ [

## スポットフリート用のサービスにリンクされたロール
](#service-linked-roles-spot-fleet-requests)
+ [

## スポットインスタンス用のサービスにリンクされたロール
](#service-linked-roles-spot-instances)
+ [

## スポットフリートにタグ付けするための IAM ロール
](#spot-fleet-service-linked-role)

## ユーザーにスポットフリートの許可を付与する
<a name="spot-fleet-iam-users"></a>

ユーザーがスポットフリートを作成または管理する場合、必ず必要な許可を付与してください。

**スポットフリートのポリシーを作成するには**

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

1. ナビゲーションペインで、[Policies]、[Create policy] の順に選択してください。********

1. [ポリシーの作成] ページで、 [JSON] を選択し、テキストを以下に置き換えます。********

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "ec2:RunInstances",
                   "ec2:CreateTags",
                   "ec2:RequestSpotFleet",
                   "ec2:ModifySpotFleetRequest",
                   "ec2:CancelSpotFleetRequests",
                   "ec2:DescribeSpotFleetRequests",
                   "ec2:DescribeSpotFleetInstances",
                   "ec2:DescribeSpotFleetRequestHistory"
               ],
               "Resource": "*"
           },
           {
               "Effect": "Allow",
               "Action": "iam:PassRole",
               "Resource": "arn:aws:iam::*:role/aws-ec2-spot-fleet-tagging-role"
           },
           {
               "Effect": "Allow",
               "Action": [
                   "iam:CreateServiceLinkedRole",
                   "iam:ListRoles",
                   "iam:ListInstanceProfiles"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

   前述したポリシーの例では、ほとんどのスポットフリートのユースケースで必要な許可をユーザーに付与します。特定の API アクションに制限するには、代わりにこれらの API アクションのみを指定します。

   必要な EC2 および IAM の API****

   ポリシーには、次の API を含める必要があります。
   + `ec2:RunInstances` - スポットフリートでインスタンスを起動するために必要
   + `ec2:CreateTags` - スポットフリートのリクエスト、インスタンス、またはボリュームのタグ付けに必要
   + `iam:PassRole` - スポットフリートロールを指定するために必要
   + `iam:CreateServiceLinkedRole` - サービスにリンクされたロールの作成に必要
   + `iam:ListRoles` - 既存の IAM ロールを列挙するために必要
   + `iam:ListInstanceProfiles` - 既存のインスタンスプロファイルを列挙するために必要
**重要**  
起動仕様または起動テンプレートで IAM インスタンスプロファイルのロールを指定する場合は、そのロールをサービスに渡す許可をユーザーに付与する必要があります。これを行うには、IAM ポリシーで `iam:PassRole` アクションのリソースとして `"arn:aws:iam::*:role/IamInstanceProfile-role"` を含めます。詳細については、「IAM ユーザーガイド」の「[AWS サービスにロールを渡すアクセス権限をユーザーに付与する](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html)」を参照してください。

   スポットフリートの API****

   必要に応じて、次のスポットフリート API アクションをポリシーに追加します。
   + `ec2:RequestSpotFleet`
   + `ec2:ModifySpotFleetRequest`
   + `ec2:CancelSpotFleetRequests`
   + `ec2:DescribeSpotFleetRequests`
   + `ec2:DescribeSpotFleetInstances`
   + `ec2:DescribeSpotFleetRequestHistory`

   オプションの IAM API****

   (オプション) ユーザーが IAM コンソールを使用してロールまたはインスタンスプロファイルを作成できるようにするには、次のアクションをポリシーに追加する必要があります。
   + `iam:AddRoleToInstanceProfile`
   + `iam:AttachRolePolicy`
   + `iam:CreateInstanceProfile`
   + `iam:CreateRole`
   + `iam:GetRole`
   + `iam:ListPolicies`

1. [**ポリシーの確認**] を選択してください。

1. [**ポリシーの確認**] ページでポリシー名と説明を入力し、[**ポリシーの作成**] を選択してください。

1. アクセス権限を付与するにはユーザー、グループ、またはロールにアクセス許可を追加します。
   + 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="service-linked-roles-spot-fleet-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 は、AWSServiceRoleForEC2SpotFleet という、サービスにリンクされたロールを使用して、ユーザーの代わりにインスタンスを起動して管理します。****

**重要**  
[暗号化された AMI](AMIEncryption.md) または暗号化された Amazon EBS スナップショットをスポットフリートで指定した場合は、CMK を使用して Amazon EC2 がユーザーの代わりにインスタンスを起動する許可を **AWSServiceRoleForEC2SpotFleet** ロールに付与する必要があります。詳細については、「[暗号化された AMI および EBS スナップショット用の CMK へのアクセス権の付与](#spot-fleet-service-linked-roles-access-to-cmks)」を参照してください。

### AWSServiceRoleForEC2SpotFleet によって付与されるアクセス許可
<a name="service-linked-role-permissions-granted-by-AWSServiceRoleForEC2SpotFleet"></a>

**[AWSServiceRoleForEC2SpotFleet]** ロールは、ユーザーに代わってインスタンスのリクエスト、起動、終了、タグ付けを行う許可をスポットフリートに付与します。Amazon EC2 は、このサービスにリンクされたロールを使用して、以下のアクションを完了します。
+ `ec2:RequestSpotInstances` - スポットインスタンスをリクエスト
+ `ec2:RunInstances` - インスタンスを起動
+ `ec2:TerminateInstances` - インスタンスを終了
+ `ec2:DescribeImages` - インスタンスの Amazon マシンイメージ (AMI) を表示
+ `ec2:DescribeInstanceStatus` - インスタンスのステータスを表示
+ `ec2:DescribeSubnets` - インスタンスのサブネットを記述
+ `ec2:CreateTags` - スポットフリートリクエスト、インスタンス、ボリュームにタグを追加
+ `elasticloadbalancing:RegisterInstancesWithLoadBalancer` - 指定されたインスタンスを指定されたロードバランサーに追加
+ `elasticloadbalancing:RegisterTargets` - 指定されたターゲットを指定されたターゲットグループに登録

### サービスにリンクされたロールの作成
<a name="service-linked-role-creating-for-spot-fleet"></a>

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

Amazon EC2 がこのサービスにリンクされたロールのサポートを開始した 2017 年 10 月よりも前にアクティブなスポットフリートリクエストを行った場合、Amazon EC2は AWS アカウントで **AWSServiceRoleForEC2SpotFleet** ロールを作成します｡ 詳細については、IAM ユーザーガイドの「 アカウントに新しいロールが表示される」を参照してください。[AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_roles.html#troubleshoot_roles_new-role-appeared)**

AWS CLI または API を使用してスポットフリートを作成する場合、最初にこのロールが存在しているか確認する必要があります。

**コンソールを使用してスポットフリートの [AWSServiceRoleForEC2SpotFleet] ロールを作成するには**

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

1. ナビゲーションペインで **Roles (ロール) ** を選択してください。

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

1. **[信頼されたエンティティを選択]** ページで、以下の操作を実行してください。

   1. **[信頼できるエンティティタイプ]** で、**[AWS サービス]** を選択してください。

   1. **[ユースケース]** の **[サービスまたはユースケース]** で、**[EC2]** を選択してください。

   1. **[ユースケース]** で、**[EC2 - スポットフリート]** を選択してください。
**注記**  
**[EC2 - スポットフリート]** ユースケースでは、必要な IAM アクセス許可を持つポリシーが自動的に作成され、ロール名として **[AWSEC2SpotFleetServiceRolePolicy]** が提案されます。

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

1. **[アクセス許可を追加]** ページで **[次へ]** を選択してください。

1. **[名前、確認、および作成]** ページで、**[ロールの作成]** をクリックしてください。

**AWS CLI を使用してスポットフリートの [AWSServiceRoleForEC2SpotFleet] ロールを作成するには**  
次のように、create-service-linked-role コマンドを使用します。[https://docs.aws.amazon.com/cli/latest/reference/iam/create-service-linked-role.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-service-linked-role.html)

```
aws iam create-service-linked-role --aws-service-name spotfleet.amazonaws.com
```

スポットフリートを使用する必要がなくなった場合は、**AWSServiceRoleForEC2SpotFleet** ロールを削除することをお勧めします。このロールがアカウントから削除された後、コンソールを使用してスポットフリートをリクエストすると､ Amazon EC2 はロールを再作成します。詳細については、「*IAM ユーザーガイド*」の「[サービスにリンクされたロールの削除](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_delete.html#id_roles_manage_delete_slr)」を参照してください。

### 暗号化された AMI および EBS スナップショット用の CMK へのアクセス権の付与
<a name="spot-fleet-service-linked-roles-access-to-cmks"></a>

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

アクセス権限を設定するときは、付与がキーポリシーの代わりになります。詳細については、 デベロッパーガイドの「許可の使用」と「 でのキーポリシーの使用」を参照してください。[https://docs.aws.amazon.com/kms/latest/developerguide/grants.html](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html)[AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)*AWS Key Management Service*

**CMK を使用するアクセス許可を AWSServiceRoleForEC2SpotFleet ロールに付与するには**
+ create-grant コマンドを使用して CMK に付与を追加し、プリンシパル (サービスにリンクされたロール AWSServiceRoleForEC2SpotFleet) を指定します。このプリンシパルには、付与が許可するオペレーションを実行するためのアクセス許可が提供されます。[https://docs.aws.amazon.com/cli/latest/reference/kms/create-grant.html](https://docs.aws.amazon.com/cli/latest/reference/kms/create-grant.html)****CMK を指定するには、 パラメータと CMK の ARN を使用します。`key-id`プリンシパルを指定するには、 パラメータとサービスにリンクされたロール AWSServiceRoleForEC2SpotFleet の ARN を使用します。`grantee-principal`****

  ```
  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/spotfleet.amazonaws.com/AWSServiceRoleForEC2SpotFleet \
      --operations "Decrypt" "Encrypt" "GenerateDataKey" "GenerateDataKeyWithoutPlaintext" "CreateGrant" "DescribeKey" "ReEncryptFrom" "ReEncryptTo"
  ```

## スポットインスタンス用のサービスにリンクされたロール
<a name="service-linked-roles-spot-instances"></a>

Amazon EC2 は、AWSServiceRoleForEC2Spot という、サービスにリンクされたロールを使用して、ユーザーの代わりに スポットインスタンス を起動して管理します。****詳細については、「[スポットインスタンスリクエスト向けのサービスにリンクされたロール](service-linked-roles-spot-instance-requests.md)」を参照してください。

## スポットフリートにタグ付けするための IAM ロール
<a name="spot-fleet-service-linked-role"></a>

`aws-ec2-spot-fleet-tagging-role` IAM ロールは、スポットフリートリクエスト、インスタンス、ボリュームにタグ付けするアクセス権限をスポットフリートに付与します。詳細については、「[新しいまたは既存のスポットフリートリクエスト、およびそのフリートが起動するインスタンスとボリュームにタグ付けする](tag-spot-fleet.md)」を参照してください。

**重要**  
フリートのインスタンスにタグ付けすることを選択し、ターゲット容量を維持することを選択した場合 (スポットフリートリクエストのタイプは `maintain`)、ユーザーと `IamFleetRole` の許可の違いにより、フリートのインスタンスのタグ付け動作に整合性がなくなる可能性があります。`IamFleetRole` に `CreateTags` アクセス許可が含まれていない場合、フリートによって起動されたインスタンスの一部がタグ付けされていない可能性があります。当社はこの不整合の修正に取り組んでいますが、フリートによって起動されたすべてのインスタンスがタグ付けされるようにするために、`IamFleetRole`には`aws-ec2-spot-fleet-tagging-role`ロールを使用することをお勧めします。または、既存のロールを使用するには、`AmazonEC2SpotFleetTaggingRole` の AWS 管理ポリシーを既存のロールにアタッチします。それ以外の場合は、既存のポリシーに `CreateTags` アクセス許可を手動で追加する必要があります。

**スポットフリートにタグ付けする IAM ロールを作成するには**

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

1. ナビゲーションペインで **Roles (ロール) ** を選択してください。

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

1. **[Select trusted entity]** (信頼できるエンティティの選択) ページの **[Trusted entity type]** (信頼できるエンティティタイプ) で、**[AWS service]** ( のサービス) を選択してください。

1. **[Use case]** (ユースケース) で、**[Use cases for other AWS services]** (他の サービスでのユースケース) から **[EC2]** を選択し、**[EC2 - Spot Fleet Tagging]** (EC2 - スポットフリートのタグ付け) を選択してください。

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

1. **[アクセス許可を追加]** ページで **[次へ]** を選択してください。

1. **[Name, review, and create]** (名前、レビュー、および作成) ページで、**[Role name]** (ロール名) にロールの名前 (例えば、**aws-ec2-spot-fleet-tagging-role**) を入力してください。

1. ページ内の情報を確認し、**[Create role]** (ロールを作成) をクリックしてください。

### サービス間の混乱した代理の防止
<a name="cross-service-confused-deputy-prevention"></a>

[「混乱した代理」問題](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html)は、アクションを実行するためのアクセス許可を持たないエンティティが、より特権のあるエンティティにアクションの実行を強制できてしまう場合に生じる、セキュリティ上の問題です。`aws-ec2-spot-fleet-tagging-role` 信頼ポリシー内で [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) と [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) のグローバル条件コンテキストキーを使用して、リソースについてスポットフリートが別のサービスに付与するアクセス許可を制限することをお勧めします。

**aws:SourceArn および aws:SourceAccount 条件キーを `aws-ec2-spot-fleet-tagging-role` 信頼ポリシーに追加するには**

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

1. ナビゲーションペインで **[Roles]** (ロール) を選択してください。

1. 前に作成した `aws-ec2-spot-fleet-tagging-role` を見つけ、リンク (チェックボックスではありません) を選択してください。

1. **[Summary]** (概要) にある **[Trust relationships]** (信頼関係) タブを開き、**[Edit trust policy]** (信頼ポリシーの編集) をクリックしてください。

1. [「混乱した代理」問題](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html)を防止するために、JSON ステートメント内で、以下のようにグローバル条件コンテキストキー `aws:SourceAccount` および `aws:SourceArn` を含む `Condition` 要素を追加ます。

   ```
   "Condition": {
         "ArnLike": {
           "aws:SourceArn": "arn:aws:ec2:us-east-1:111122223333:spot-fleet-request/sfr-*"
         },
         "StringEquals": {
           "aws:SourceAccount": "111122223333"
         }
   ```
**注記**  
`aws:SourceArn` の値にアカウント ID が含まれており、上記のグローバル条件コンテキストキーの両方を同じポリシーステートメント内で使用する場合、`aws:SourceAccount` 値と `aws:SourceArn` 値の中のアカウントには、同じアカウント ID を使用する必要があります。

   最終的な信頼ポリシーは次のようになります。

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": {
       "Sid": "ConfusedDeputyPreventionExamplePolicy",
       "Effect": "Allow",
       "Principal": {
         "Service": "spotfleet.amazonaws.com"
       },
       "Action": "sts:AssumeRole",
       "Condition": {
         "ArnLike": {
           "aws:SourceArn": "arn:aws:ec2:us-east-1:111122223333:spot-fleet-request/sfr-*"
         },
         "StringEquals": {
           "aws:SourceAccount": "111122223333"
         }
       }
     }
   }
   ```

------

1. [**ポリシーの更新**] を選択してください。

次の表に、`aws-ec2-spot-fleet-tagging-role` の範囲を制限するために想定される `aws:SourceArn` の値を、その特異性の様々なレベルについてまとめました。


****  

| API オペレーション: | 呼び出されたサービス | スコープ | `aws:SourceArn` | 
| --- | --- | --- | --- | 
| RequestSpotFleet | AWS STS (AssumeRole) | aws-ec2-spot-fleet-tagging-role が持つ AssumeRole の機能を、指定されたアカウントの spot-fleet-requests に制限します。 | arn:aws:ec2:\$1:123456789012:spot-fleet-request/sfr-\$1 | 
| RequestSpotFleet | AWS STS (AssumeRole) | aws-ec2-spot-fleet-tagging-roleが持つ AssumeRole の機能を、指定されたアカウントおよび指定されたリージョンの spot-fleet-requests に制限します。このロールは他のリージョンでは使用できないことに注意してください。 | arn:aws:ec2:us-east-1:123456789012:spot-fleet-request/sfr-\$1 | 
| RequestSpotFleet | AWS STS (AssumeRole) | aws-ec2-spot-fleet-tagging-role が持つ AssumeRoleの機能を、フリート sfr-11111111-1111-1111-1111-111111111111 に影響を与えるアクションのみに制限します。このロールは、他のスポットフリートでは使用できない場合があることに注意してください。また、このロールを使用して request-spot-fleet により新しいスポットフリートを起動することはできません。 | arn:aws:ec2:us-east-1:123456789012:spot-fleet-request/sfr-11111111-1111-1111-1111-111111111111 | 

# スポットフリートを作成する
<a name="create-spot-fleet"></a>

AWS マネジメントコンソールを使用すると、AMI と、必要な合計のターゲットキャパシティのみを選択して、スポットフリートリクエストをすばやく作成することができます。Amazon EC2 は、ユーザーのニーズに最も適したフリートを設定し、スポットのベストプラクティスに従います。あるいは、デフォルト設定のいずれかを変更することができます。

フリートにオンデマンドインスタンスを含める場合は、リクエストで起動テンプレートを指定し、希望するオンデマンドキャパシティを指定する必要があります。

フリートは、キャパシティが使用可能であるときはオンデマンドインスタンスを起動し、最大料金がスポット料金を超えていてキャパシティが使用可能であるときはスポットインスタンスを起動します。

フリートにスポットインスタンスが含まれ、タイプが `maintain` である場合、Amazon EC2 はスポットインスタンスが中断したときにフリートのターゲットキャパシティを維持しようとします。

**必要なアクセス許可**  
詳細については、「[スポットフリートアクセス許可](spot-fleet-prerequisites.md)」を参照してください。

**Topics**
+ [

## スポットフリートリクエストをすばやく作成する
](#create-spot-fleet-quick)
+ [

## 定義済みパラメータを使用してスポットフリートリクエストを作成する
](#create-spot-fleet-advanced)
+ [

## 異常なスポットインスタンスを置き換えるスポットフリートを作成する
](#spot-fleet-health-checks)

## スポットフリートリクエストをすばやく作成する
<a name="create-spot-fleet-quick"></a>

Amazon EC2 でスポットフリートリクエストをすばやく作成するには、次の手順に従います。

**推奨設定を使用してスポットフリートリクエストを作成するには**

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

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

1. スポットを初めて使用する場合は、ウェルカムページが表示されるので、そこで [**Get started**] を選択してください。それ以外の場合は、**[スポットフリートリクエストの作成]** を選択します。

1. **[Launch parameters]** (起動パラメータ) で、**[Manually configure launch parameters]** (起動パラメータを手動で構成する) を選択してください。

1. **AMI** で、AMI を選択してください。

1. **[Target capacity]** (ターゲット容量) の下の **[Total target capacity]** (総ターゲット容量) で、リクエストする単位数を指定します。ユニットのタイプには、**[インスタンス]**、**[vCPU]**、または **[メモリ (MiB)]** を選択できます。

1. **[フリートリクエストの概要]** で、フリートの設定を確認し、**[起動]** を選択してください。

## 定義済みパラメータを使用してスポットフリートリクエストを作成する
<a name="create-spot-fleet-advanced"></a>

定義済みパラメータを使用して、スポットフリートを作成できます。

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

**定義済みパラメータを使用してスポットフリートリクエストを作成するには**

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

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

1. スポットを初めて使用する場合は、ウェルカムページが表示されるので、そこで [**Get started**] を選択してください。それ以外の場合は、**[スポットフリートリクエストの作成]** を選択します。

1. **[起動パラメータ]** では、以下のように、起動パラメータを手動で設定することも、起動テンプレートを使用することもできます。

   1. [手動設定] Amazon EC2 コンソールで起動パラメータを定義するには、**[起動パラメータを手動で構成する]** を選択し、以下の手順を実行します。

      1. **[AMI]** で、AWS が提供する基本 AMI のいずれかを選択してください。あるいは、**[Search for AMI]** (AMI を検索) をクリックして、ユーザーコミュニティの AMI、AWS Marketplace、または独自の AMI を選択することも可能です。
**注記**  
起動パラメータで指定された AMI が登録解除または無効になっている場合、AMI から新しいインスタンスを起動することはできません。ターゲット容量を維持するように設定されたフリートの場合、ターゲット容量は維持されません。

      1. (オプション) [Key pair name] で、既存のキーペアを使用するか、新しいキーペアを作成するかを選択してください。****

         [既存のキーペア] キーペアを選択してください。

         [新しいキーペア] **[新しいキーペアの作成]** を選択して **[キーペア]** ページに進みます。完了したら、**[Spot Requests]** (スポットリクエスト) ページに戻ってリストを更新します。

      1. (オプション) **[Additional launch parameters]** (追加の起動パラメータ) を展開し、次の操作を実行します。

         1. (オプション) Amazon EBS 最適化を有効にするには、**[EBS-optimized]** (EBS に最適化された) で **[Launch EBS-optimized instances]** (EBS に最適化されたインスタンスの起動) を選択してください。

         1. (オプション) インスタンス用の一時ブロックレベルストレージを追加するには、**[Instance store]** (インスタンスストア) で **[Attach at launch]** (起動時にアタッチ) を選択してください。

         1. (オプション) ストレージを追加するには、**[Add new volume]** (新しいボリュームの追加) を選択し、インスタンスタイプに応じて追加のインスタンスストアボリュームまたは Amazon EBS ボリュームを指定します。

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

         1. (オプション) 専有スポットインスタンスを実行するには、**[Tenancy]** (テナンシー) で **[Dedicated - run a dedicated instance]** (専有 - 専有インスタンスの実行) を選択してください。

         1. (オプション) [Security groups] で、1 つ以上のセキュリティグループを選択するか、新しいセキュリティグループを作成します。****

            [既存のセキュリティグループ] 1 つ以上のセキュリティグループを選択してください。

            [新しいセキュリティグループ] **[Create new security group]** (新しいセキュリティグループの作成) を選択し、**[Security Groups]** (セキュリティグループ) ページに移動します。完了したら、**[Spot Requests]** (スポットリクエスト) に戻ってリストを更新します。

         1. (オプション) インスタンスにインターネットからアクセスできるようにするには、**[Auto-assign IPv4 Public IP]** (IPv4 パブリック IP の自動割り当て) で **[Enable]** (有効化) を選択してください。

         1. (オプション) IAM ロールを指定して スポットインスタンス を起動するには、[IAM instance profile] でロールを選択してください。****

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

         1. (オプション) タグを追加するには、**[Create tag]** (タグの作成) を選択し、タグのキーと値を入力してから **[Create]** (作成) を選択してください。各タグについて、これを繰り返します。

            タグごとに、インスタンスとスポットフリートリクエストに同じタグを付けるには、**[Instances]** と **[Fleet]** (フリート) の両方が選択されていることを確認します。フリートによって起動されたインスタンスのみにタグ付けするには、**[Fleet]** (フリート) をクリアします。スポットフリートリクエストのみにタグ付けするには、**[Istances]** をクリアします。

   1. [起動テンプレート] 起動テンプレートで作成した設定を使用するには、**[起動テンプレートの使用]** を選択し、**[起動テンプレート]** で起動テンプレートを選択してください。
**注記**  
スポットフリートでオンデマンドキャパシティが必要な場合は、起動テンプレートを指定する必要があります。

1. [Additional request details] で、以下を実行します｡****

   1. 追加リクエストの詳細を確認します。変更するには、[Apply defaults] をオフにします。****

   1. (オプション) [IAM fleet role] で、デフォルトのロールを使用するか、または別のロールを選択できます。****ロールの変更後にデフォルトのロールを使用するには、[Use default role] を選択してください。****

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

   1. (オプション) デフォルトでは、スポットフリートリクエストの有効期限が切れると Amazon EC2 がスポットインスタンスを終了します。リクエストの有効期限が切れた後も実行し続ける場合、[Terminate the instances when the request expires] をオフにします。****

   1. (オプション) ロードバランサーを使用する スポットインスタンス を登録するには、[Receive traffic from one or more load balancers] を選択して、1 つ以上の クラシックロードバランサー またはターゲットグループを選択してください。****

1. **[Target capacity]** (ターゲット容量) で、以下の操作を実行します。

   1. **[Total target capacity]** (総ターゲット容量) で、ターゲット容量にリクエストする単位数を指定します。ユニットのタイプには、**[Instances]** (ユニット)、**[vCPU]**、または **[Memory (MiB)]** (メモリ (MiB)) を選択できます。ターゲットキャパシティを 0 に指定して後でキャパシティを追加できるようにするには、**[ターゲット容量を維持する]** を選択する必要があります。

   1. (オプション) **[Include On-Demand base capacity]** (オンデマンドベースの容量を含める) で、リクエストするオンデマンド単位数を指定します。数値は **[Total target capacity]** (ターゲットキャパシティの合計) 未満にする必要があります。Amazon EC2 は差分を計算し、この差をリクエストするスポット単位に割り当てます。
**重要**  
 オプションのオンデマンド容量を指定する場合、最初に起動テンプレートを選択する必要があります。

   1. (オプション) デフォルトでは、Amazon EC2 は中断されるとスポットインスタンスを削除します。ターゲット容量を維持するには、[ターゲット容量を維持する] を選択してください。****これで、中断時に Amazon EC2 がスポットインスタンスを終了、停止、または休止するように指定できます。これを行うには、[Interruption behavior] から対応するオプションを選択してください。****
**注記**  
起動パラメータで指定された AMI が登録解除または無効になっている場合、AMI から新しいインスタンスを起動することはできません。この場合、ターゲットキャパシティを維持するようにフリートが設定されていても、ターゲットキャパシティは維持されません。

   1. (オプション) フリートの既存スポットインスタンスにインスタンスの再調整の通知が発行されたときに、スポットフリートが代替スポットインスタンスを起動できるようにするには、**[Capacity rebalance]** (容量の再調整) を選択し、インスタンス置換戦略を選択してください。**[終了前に起動]** を選択した場合、Amazon EC2 が古いインスタンスを終了させるまでの遅延時間 (秒単位) を指定します。詳細については、「[EC2 フリートとスポットフリートでキャパシティの再調整を使用して、リスクのあるスポットインスタンスを置き換える](ec2-fleet-capacity-rebalance.md)」を参照してください。

   1. (オプション) フリートのすべての スポットインスタンスに対して 1 時間あたりに支払う金額を制御するには、**[Set maximum cost for Spot Instances]** (スポットインスタンスの上限価格を設定する) を選択し、1 時間あたりに支払うことができる上限の合計金額を入力してください。上限の合計金額に達すると、ターゲット容量に満たない場合でも、スポットフリートはスポットインスタンスの起動を停止します。詳細については、「[EC2 フリートまたはスポットフリートの支出制限を設定する](ec2-fleet-control-spending.md)」を参照してください。

1. **[Network]** (ネットワーク) で、以下の操作を実行します。

   1. **[Network]** (ネットワーク) で既存の VPC を選択するか、新しい VPC を作成します。

      [既存の VPC] VPC を選択してください。

      [新しい VPC] [新しい VPC の作成] を選択して Amazon VPC コンソールにアクセスします。****完了したら、この画面に戻ってリストを更新します。

   1. (オプション) **[アベイラビリティーゾーン]** では、自分のアベイラビリティーゾーンに適したスポットインスタンスを Amazon EC2 に選択させるか、自分で 1 つ以上のアベイラビリティーゾーンを指定します。

      アベイラビリティーゾーンに複数のサブネットがある場合、[Subnet] から適切なサブネットを選択してください。****サブネットを追加するには、[Create new subnet] を選択して Amazon VPC にアクセスします。****完了したら、この画面に戻ってリストを更新します。

1. **[Instance type requirements]** (インスタンスタイプの要件) では、インスタンス属性を指定して、Amazon EC2 にこれらの属性を持つ最適なインスタンスタイプを識別させるか、またはインスタンスのリストを指定することができます。詳細については、「[EC2 フリートまたはスポットフリートのインスタンスタイプを選択するための属性を指定する](ec2-fleet-attribute-based-instance-type-selection.md)」を参照してください。

   1. **[Specify instance attributes that match your compute requirements]** (コンピューティング要件に一致するインスタンス属性を指定する) を選択した場合、インスタンス属性を次のように指定します。

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

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

      1. (オプション) **[追加のインスタンス属性]** では、必要に応じて 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. **[Manually select instance types]** (インスタンスタイプを手動で選択する) を選択すると、スポットフリートはインスタンスタイプのデフォルトのリストを提供します。さらにインスタンスタイプを選択するには、**[Add instance types]** (インスタンスタイプの追加) を選択し、リクエストで使用するインスタンスタイプを選択してから **[Select]** (選択) を選択してください。インスタンスタイプを削除するには、インスタンスタイプを選択し、**[Delete]** (削除) を選択してください。

1. **[配分戦略]** では、ニーズを満たすスポット配分戦略とオンデマンド配分戦略を選択してください。詳細については、「[配分戦略を使用して、EC2 フリートまたはスポットフリートがどのようにスポットキャパシティとオンデマンドキャパシティを満たすかを決定します。](ec2-fleet-allocation-strategy.md)」を参照してください。

1. **[Your fleet request at a glance]** (フリートリクエストの概要) で、フリートの設定を確認し、必要な調整を行います。

1. (オプション) AWS CLI で使用される起動設定のコピーをダウンロードするには、**[JSON config]** (JSON 設定) を選択してください。

1. スポットフリートを起動する準備が整ったら、**[起動]** を選択してください。

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

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

**スポットフリートリクエストを作成するには**  
[request-spot-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/request-spot-fleet.html) コマンドを使用します。

```
aws ec2 request-spot-fleet --spot-fleet-request-config file://config.json
```

設定ファイルの例については、「[スポットフリートの CLI 設定の例](spot-fleet-examples.md)」を参照してください。

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

**スポットフリートリクエストを作成するには**  
[Request-EC2SpotFleet](https://docs.aws.amazon.com/powershell/latest/reference/items/Request-EC2SpotFleet.html) コマンドレットを使用します。次の例では、キャパシティ最適化フリートでスポットインスタンスを起動します。

```
Request-EC2SpotFleet `
    -SpotFleetRequestConfig_TargetCapacity 50 `
    -SpotFleetRequestConfig_AllocationStrategy "CapacityOptimized" `
    -SpotFleetRequestConfig_IamFleetRole "arn:aws:iam::123456789012:role/my-spot-fleet-role" `
    -SpotFleetRequestConfig_LaunchTemplateConfig @($launchConfig)
```

起動設定を次のように定義し、起動テンプレートを設定し、必要なプロパティを上書きします。設定例については[スポットフリートの CLI 設定の例](spot-fleet-examples.md)を参照してください。

```
$lcSpec = Amazon.EC2.Model.FleetLaunchTemplateSpecification
# To do - Set FleetLaunchTemplateSpecification properties
$lcOverrides = New-Object Amazon.EC2.Model.LaunchTemplateOverrides
# To do - Set LaunchTemplateOverrides properties
$launchConfig = New-Object Amazon.EC2.Model.LaunchTemplateConfig
$launchConfig.LaunchTemplateSpecification $lcSpec
$launchConfig.Overrides @($lcOverrides)
```

------

## 異常なスポットインスタンスを置き換えるスポットフリートを作成する
<a name="spot-fleet-health-checks"></a>

スポットフリートは、2 分ごとにフリートのスポットインスタンスのヘルスステータスをチェックします。インスタンスのヘルスステータスは `healthy` または `unhealthy` です。

スポットフリートは、Amazon EC2 が提供するステータスチェックを使用して、インスタンスのヘルスステータスを判断します。インスタンスステータスとシステムステータスのいずれかのチェック結果において、ステータスが 3 回連続して `impaired` を示した場合、そのインスタンスは `unhealthy` と判断されます。詳細については、「[Amazon EC2 インスタンスのステータスチェック](monitoring-system-instance-status-check.md)」を参照してください。

フリートを設定して、異常のある スポットインスタンス を置き換えることができます。ヘルスチェックによる置き換えを有効化すると、 と報告されたスポットインスタンスが置き換えられます。`unhealthy`異常なスポットインスタンスの置き換え中、最大数分間フリートがターゲット容量を下回る場合があります。

**要件**
+ ヘルスチェックによる置き換えは、1 回限りの スポットフリート (`maintain` のフリート) ではなく、ターゲットキャパシティを維持しているスポットフリート (タイプ `request` のフリート) でのみサポートされます。
+ ヘルスチェックによる置き換えは、スポットインスタンス でのみサポートされます。この機能は オンデマンドインスタンス ではサポートされていません。
+ 作成時のみ、異常なインスタンスを置き換えるようスポットフリートを設定できます。
+ ユーザーは、`ec2:DescribeInstanceStatus` アクションを呼び出す許可を持っている場合のみ、ヘルスチェックの置き換えを使用できます。

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

**異常なスポットインスタンスは置き換えるようにスポットフリートを設定するには**

1. [定義済みパラメータを使用してスポットフリートリクエストを作成する](#create-spot-fleet-advanced) の手順に従ってスポットフリートを作成します。

1. 異常なスポットインスタンスを置き換えるようにフリートを設定するには、**[追加の起動パラメータ]** を展開し、**[ヘルスチェック]** で、**[異常なインスタンスを置き換える]** を選択してください。このオプションを有効にするには、まず **[Maintain target capacity]**(ターゲット容量の維持) を選択する必要があります。

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

**異常なスポットインスタンスは置き換えるようにスポットフリートを設定するには**  
[request-spot-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/request-spot-fleet.html) コマンドを `SpotFleetRequestConfig` の `ReplaceUnhealthyInstances` プロパティと共に使用します。

```
{
    "SpotFleetRequestConfig": {
        "AllocationStrategy": "lowestPrice",
        "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
        "TargetCapacity": 10,
        "ReplaceUnhealthyInstances": true
    }
}
```

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

**異常なスポットインスタンスは置き換えるようにスポットフリートリクエストを設定するには**  
[Request-EC2SpotFleet](https://docs.aws.amazon.com/powershell/latest/reference/items/Request-EC2SpotFleet.html) コマンドレットを `-SpotFleetRequestConfig_ReplaceUnhealthyInstance` パラメータと共に使用します。

```
-SpotFleetRequestConfig_ReplaceUnhealthyInstance $true
```

------

# 新しいまたは既存のスポットフリートリクエスト、およびそのフリートが起動するインスタンスとボリュームにタグ付けする
<a name="tag-spot-fleet"></a>

スポットフリートリクエスト、およびそのフリートが起動するインスタンスとボリュームを分類および管理しやすくするために、カスタムメタデータでタグ付けできます。スポットフリートリクエストへのタグの割り当ては、リクエストの作成時または作成後に行うことができます。同様に、インスタンスとボリュームにも、フリートによって起動されるときまたは起動後に、タグを割り当てることができます。

フリートリクエストにタグを付けると、フリートによって起動されるインスタンスとボリュームには自動的にタグ付けされません。フリートによって起動されるインスタンスとボリュームには、明示的にタグを付ける必要があります。タグは、フリートリクエストのみに割り当てるか、フリートによって起動されたインスタンスのみに割り当てるか、フリートによって起動されたインスタンスにアタッチされたボリュームのみに割り当てるか、またはそのすべてに割り当てるかを選択できます。

**注記**  
オンデマンドインスタンスにアタッチされているボリュームにのみタグ付けできます。スポットインスタンス にアタッチされているボリュームにタグを付けることはできません。

Amazon EC2 コンソールまたはコマンドラインツールを使用してタグを割り当てることができます。

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

**Topics**
+ [

## 前提条件
](#tag-spot-fleet-prereqs)
+ [

## 新しいスポットフリート、およびそれが起動するインスタンスおよびボリュームにタグ付けします。
](#tag-new-spot-fleet-and-resources)
+ [

## 既存のスポットフリートにタグを付けます。
](#tag-existing-spot-fleet)
+ [

## スポットフリートリクエストタグを表示する
](#view-spot-fleet-tags)

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

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

**リソースにタグ付けする許可をユーザーに付与するには**  
以下を含む IAM ポリシーを作成します。
+ `ec2:CreateTags` アクション。これにより、タグを作成する許可がユーザーに付与されます。
+ `ec2:RequestSpotFleet` アクション。これにより、スポットフリートリクエストを作成する許可がユーザーに付与されます。
+ `Resource` で、`"*"` を指定する必要があります。これにより、ユーザーはすべてのリソースタイプにタグ付けできます。

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

****  

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

------

**重要**  
現在、`spot-fleet-request` リソースに対するリソースレベルのアクセス許可はサポートされていません。リソースとして `spot-fleet-request` を指定した場合、フリートにタグ付けしようとすると、不正な例外が発生します。以下の例は、ポリシーを設定 *しない* 方法を示しています。  

```
{
    "Effect": "Allow",
    "Action": [
        "ec2:CreateTags",
        "ec2:RequestSpotFleet"
    ],
    "Resource": "arn:aws:ec2:us-east-1:111122223333:spot-fleet-request/*"
}
```

アクセス権限を付与するにはユーザー、グループ、またはロールにアクセス許可を追加します。
+ 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="tag-new-spot-fleet-and-resources"></a>

**新しいスポットフリートリクエスト、およびそのフリートがコンソールを使用して起動するインスタンスとボリュームにタグ付けするには**

1. [定義済みパラメータを使用してスポットフリートリクエストを作成する](create-spot-fleet.md#create-spot-fleet-advanced)の手順に従います。

1. タグを追加する方法は、フリートを手動で設定したか、起動テンプレートを使用したかによって異なります。
   + フリートを手動で設定した場合は、次の操作を行います。

     タグを追加するには、**[追加の起動パラメータ]** を展開し、**[タグの作成]** を選択して、タグのキーと値を入力してください。各タグについて、これを繰り返します。

     タグごとに、スポットフリートリクエストとインスタンスに同じタグを付けることができます。両方にタグを付けるには、**[インスタンス]** と **[フリート]** の両方が選択されていることを確認します。スポットフリートリクエストのみにタグ付けするには、**[Istances]** をクリアします。フリートによって起動されたインスタンスのみにタグ付けするには、**[フリートタグ]**をクリアします。
**注記**  
フリートを手動で設定する場合、ボリュームにタグを付けるオプションはありません。ボリュームタグは、オンデマンドインスタンス にアタッチされたボリュームでのみサポートされます。フリートを手動で設定する場合、オンデマンドインスタンスを指定することはできません。
   + 起動テンプレートを使用した場合は、次の操作を行います。

     フリートリクエストにタグを追加するには、**[タグ]** で **[タグの作成]** を選択し、タグのキーと値を入力してください。各タグについて、これを繰り返します。

     フリート内のリソースにタグを付けるには、[起動テンプレート](create-launch-template.md)でタグを指定する必要があります。

**新しいスポットフリートリクエストと、 を使用して起動するインスタンスおよびボリュームにタグ付けするにはAWS CLI**  
作成時にスポットフリートリクエストにタグ付けし、フリートがインスタンスを起動するときにインスタンスおよびボリュームにタグ付けするには、スポットフリートリクエスト設定を次のようにします。

**スポットフリートリクエストのタグ**
+ スポットフリートリクエストのタグを `SpotFleetRequestConfig` で指定します。
+ `ResourceType` の場合、`spot-fleet-request` を指定します。別の値を指定すると、フリートリクエストは失敗します。
+ `Tags` で、キーと値のペアを指定します。キーと値のペアは複数指定できます。

**インスタンスタグ:**
+ `LaunchSpecifications` で、インスタンスのタグを指定します。
+ `ResourceType` の場合、`instance` を指定します。別の値を指定すると、フリートリクエストは失敗します。
+ `Tags` で、キーと値のペアを指定します。キーと値のペアは複数指定できます。

  または、スポットフリートリクエストで参照される起動テンプレートで、インスタンスのタグを指定できます。[Amazon EC2 起動テンプレートを作成する](create-launch-template.md)

**ボリュームタグ:**
+ スポットフリートリクエストで参照される起動テンプレートのボリュームのタグを指定します。[Amazon EC2 起動テンプレートを作成する](create-launch-template.md)`LaunchSpecifications` でのボリュームのタグ付けはサポートされていません。

以下の例では、スポットフリートリクエストに 2 つのタグ (Key=Environment、Value=Production、および Key=Cost-Center、Value=123) が付けられています。フリートが起動するインスタンスには、1 つのタグ (スポットフリートリクエストのタグの 1 つと同じ) Key=Cost-Center and Value=123 が付けられます。

```
{
    "SpotFleetRequestConfig": {
        "AllocationStrategy": "priceCapacityOptimized",
        "ExcessCapacityTerminationPolicy": "default",
        "IamFleetRole": "arn:aws:iam::111122223333:role/aws-ec2-spot-fleet-tagging-role",
        "LaunchSpecifications": [
            {
                "ImageId": "ami-0123456789EXAMPLE",
                "InstanceType": "c4.large",
                "TagSpecifications": [
                    {
                        "ResourceType": "instance",
                        "Tags": [
                            {
                                "Key": "Cost-Center",
                                "Value": "123"
                            }
                        ]
                    }
                ]
            }
        ],
        "SpotPrice": "5",
        "TargetCapacity": 2,
        "TerminateInstancesWithExpiration": true,
        "Type": "maintain",
        "ReplaceUnhealthyInstances": true,
        "InstanceInterruptionBehavior": "terminate",
        "InstancePoolsToUseCount": 1,
        "TagSpecifications": [
            {
                "ResourceType": "spot-fleet-request",
                "Tags": [
                    {
                        "Key": "Environment",
                        "Value":"Production"
                    },
                    {
                        "Key": "Cost-Center",
                        "Value":"123"
                    }
                ]
            }
        ]
    }
}
```

**AWS CLI を使用して、スポットフリートが起動したインスタンスにタグ付けするには**  
フリートがインスタンスを起動するときにインスタンスにタグ付けするには、スポットフリートリクエストで参照される起動テンプレートでタグを指定するか、以下のようにスポットフリートリクエスト設定でタグを指定できます。[Amazon EC2 起動テンプレートを作成する](create-launch-template.md)
+ `LaunchSpecifications` で、インスタンスのタグを指定します。
+ `ResourceType` の場合、`instance` を指定します。別の値を指定すると、フリートリクエストは失敗します。
+ `Tags` で、キーと値のペアを指定します。キーと値のペアは複数指定できます。

以下の例では、フリートによって起動されるインスタンスに 1 つのタグ (Key=Cost-Center and Value=123) が付けられています。

```
{
    "SpotFleetRequestConfig": {
        "AllocationStrategy": "priceCapacityOptimized",
        "ExcessCapacityTerminationPolicy": "default",
        "IamFleetRole": "arn:aws:iam::111122223333:role/aws-ec2-spot-fleet-tagging-role",
        "LaunchSpecifications": [
            {
                "ImageId": "ami-0123456789EXAMPLE",
                "InstanceType": "c4.large",
                "TagSpecifications": [
                    {
                        "ResourceType": "instance",
                        "Tags": [
                            {
                                "Key": "Cost-Center",
                                "Value": "123"
                            }
                        ]
                    }
                ]
            }
        ],
        "SpotPrice": "5",
        "TargetCapacity": 2,
        "TerminateInstancesWithExpiration": true,
        "Type": "maintain",
        "ReplaceUnhealthyInstances": true,
        "InstanceInterruptionBehavior": "terminate",
        "InstancePoolsToUseCount": 1
    }
}
```

**AWS CLI を使用して、スポットフリートが起動するオンデマンドインスタンスにアタッチされたボリュームにタグ付けするには**  
フリートが作成したときにボリュームにタグ付けするには、スポットフリートリクエストで参照される起動テンプレートでタグを指定する必要があります。[Amazon EC2 起動テンプレートを作成する](create-launch-template.md)

**注記**  
ボリュームタグは、オンデマンドインスタンス にアタッチされたボリュームでのみサポートされます。スポットインスタンス にアタッチされているボリュームにタグを付けることはできません。  
`LaunchSpecifications` でのボリュームのタグ付けはサポートされていません。

## 既存のスポットフリートにタグを付けます。
<a name="tag-existing-spot-fleet"></a>

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

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

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

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

1. スポットフリートリクエストを選択してください。

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

**AWS CLI を使用して、既存のスポットフリートリクエストにタグ付けするには**  
create-tags コマンドを使用して、既存のリソースにタグ付けできます。[https://docs.aws.amazon.com/cli/latest/reference/ec2/create-tags.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-tags.html)以下の例では、既存のスポットフリートリクエストにタグ Key=purpose and Value=test が付けられています。

```
aws ec2 create-tags \
    --resources sfr-11112222-3333-4444-5555-66666EXAMPLE \
    --tags Key=purpose,Value=test
```

## スポットフリートリクエストタグを表示する
<a name="view-spot-fleet-tags"></a>

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

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

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

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

**スポットフリートリクエストタグを記述するには**  
describe-tags コマンドを使用して、指定したリソースのタグを表示します。[https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-tags.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-tags.html)以下の例では、指定したスポットフリートリクエストのタグを記述します。

```
aws ec2 describe-tags \
    --filters "Name=resource-id,Values=sfr-11112222-3333-4444-5555-66666EXAMPLE"
```

```
{
    "Tags": [
        {
            "Key": "Environment",
            "ResourceId": "sfr-11112222-3333-4444-5555-66666EXAMPLE",
            "ResourceType": "spot-fleet-request",
            "Value": "Production"
        },
        {
            "Key": "Another key",
            "ResourceId": "sfr-11112222-3333-4444-5555-66666EXAMPLE",
            "ResourceType": "spot-fleet-request",
            "Value": "Another value"
        }
    ]
}
```

スポットフリートリクエストを記述することで、スポットフリートリクエストのタグを表示することもできます。

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

```
aws ec2 describe-spot-fleet-requests \
    --spot-fleet-request-ids sfr-11112222-3333-4444-5555-66666EXAMPLE
```

```
{
    "SpotFleetRequestConfigs": [
        {
            "ActivityStatus": "fulfilled",
            "CreateTime": "2020-02-13T02:49:19.709Z",
            "SpotFleetRequestConfig": {
                "AllocationStrategy": "capacityOptimized",
                "OnDemandAllocationStrategy": "lowestPrice",
                "ExcessCapacityTerminationPolicy": "Default",
                "FulfilledCapacity": 2.0,
                "OnDemandFulfilledCapacity": 0.0,
                "IamFleetRole": "arn:aws:iam::111122223333:role/aws-ec2-spot-fleet-tagging-role",
                "LaunchSpecifications": [
                    {
                        "ImageId": "ami-0123456789EXAMPLE",
                        "InstanceType": "c4.large"
                    }
                ],
                "TargetCapacity": 2,
                "OnDemandTargetCapacity": 0,
                "Type": "maintain",
                "ReplaceUnhealthyInstances": false,
                "InstanceInterruptionBehavior": "terminate"
            },
            "SpotFleetRequestId": "sfr-11112222-3333-4444-5555-66666EXAMPLE",
            "SpotFleetRequestState": "active",
            "Tags": [
                {
                    "Key": "Environment",
                    "Value": "Production"
                },
                {
                    "Key": "Another key",
                    "Value": "Another value"
                }
            ]
        }
    ]
}
```

# スポットフリートリクエスト、そのインスタンス、イベント履歴を記述する
<a name="manage-spot-fleet"></a>

スポットフリートの設定、スポットフリートのインスタンス、スポットフリートのイベント履歴を記述できます。

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

**スポットフリートを記述するには**

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

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

1. スポットフリートリクエストを選択してください。ID は、**sfr-** で始まります。設定の詳細を表示するには、[Description] を選択してください。****

1. スポットフリートのスポットインスタンスを一覧表示するには、インスタンスを選択してください。****

1. スポットフリートの履歴を表示するには、[履歴] を選択してください。****

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

**スポットフリートリクエストを記述するには**  
[describe-spot-fleet-requests](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-spot-fleet-requests.html) コマンドを使用します。

```
aws ec2 describe-spot-fleet-requests \
    --spot-fleet-request-ids sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE
```

**指定したスポットフリートリクエストの実行中のインスタンスを記述するには**  
[describe-spot-fleet-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-spot-fleet-instances.html) コマンドを使用します。

```
aws ec2 describe-spot-fleet-instances \
    --spot-fleet-request-id sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE
```

**指定したスポットフリートリクエストのイベント履歴を記述するには**  
[describe-spot-fleet-request-history](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-spot-fleet-request-history.html) コマンドを使用します。

```
aws ec2 describe-spot-fleet-request-history \
    --spot-fleet-request-id sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE \
    --start-time 2024-05-18T00:00:00Z
```

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

**スポットフリートリクエストを記述するには**  
[Get-EC2SpotFleetRequest](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2SpotFleetRequest.html) コマンドレットを使用します。

```
Get-EC2SpotFleetRequest
```

**指定したスポットフリートリクエストの実行中のインスタンスを記述するには**  
[Get-EC2SpotFleetInstance](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2SpotFleetInstance.html) コマンドレットを使用します。

```
Get-EC2SpotFleetInstance `
    -SpotFleetRequestId "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE"
```

**指定したスポットフリートリクエストのイベント履歴を記述するには**  
[Get-EC2SpotFleetRequestHistory](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2SpotFleetRequestHistory.html) コマンドレットを使用します。

```
Get-EC2SpotFleetRequestHistory `
    -SpotFleetRequestId "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" `
    -UtcStartTime 2024-05-18T00:00:00Z
```

------

# スポットフリートリクエストを変更します。
<a name="modify-spot-fleet"></a>

以下のタスクを完了するように、アクティブスポットフリートリクエストを変更できます。
+ 合計ターゲットキャパシティとオンデマンド部分を増やす
+ 合計ターゲットキャパシティとオンデマンド部分を減らす

合計ターゲットキャパシティを増やすと、スポットフリートはスポットフリートリクエストの[配分戦略](ec2-fleet-allocation-strategy.md)に従って、追加のスポットインスタンスを起動します。オンデマンド部分を増やすと、スポットフリートは追加のオンデマンドインスタンスを起動します。

合計ターゲットキャパシティを減らすと、スポットフリートは新しいターゲットキャパシティを超えるすべてのオープンリクエストをキャンセルします。フリートのサイズが新しいターゲット容量に達するまで、スポットフリートがスポットインスタンスを終了させるようにリクエストできます。配分戦略が `diversified` の場合、スポットフリートはプール全体でインスタンスを終了させます。または、スポットフリートが現在のサイズを維持するようにリクエストすることもできますが、中断されたり手動で終了されたスポットインスタンスを置き換えることはできません。

**考慮事項**
+ ワンタイムスポットフリートリクエストは変更できません。スポットフリートリクエストの作成時に [ターゲット容量の維持] を選択した場合にのみ、スポットフリートリクエストを変更することができます。****
+ ターゲット容量が減ったためにスポットフリートがインスタンスを終了する場合、インスタンスはスポットインスタンスの中断通知を受け取ります。

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

**スポットフリートリクエストを変更するには**

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

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

1. スポットフリートリクエストを選択してください。

1. [Actions]、[Modify target capacity] の順に選択してください。********

1. [Modify target capacity] で、以下の操作を実行します。****

   1. 新しいターゲット容量とオンデマンド部分を入力してください。

   1. (オプション) ターゲット容量を小さくしてもスポット群の現在のサイズを保持する場合は、[Terminate instances] をオフにします。****

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

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

**スポットフリートリクエストを変更するには**  
modify-spot-fleet-requestコマンドを使用して、指定するスポットフリートリクエストのターゲット容量を更新します。[https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-spot-fleet-request.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-spot-fleet-request.html)

```
aws ec2 modify-spot-fleet-request \
    --spot-fleet-request-id sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE \
    --target-capacity 20
```

前のコマンドを以下のように変更して、結果的にいずれのスポットインスタンスも終了せずに、指定したスポットフリートのターゲット容量を減らすことができます。

```
aws ec2 modify-spot-fleet-request \
    --spot-fleet-request-id sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE \
    --target-capacity 10 \
    --excess-capacity-termination-policy NoTermination
```

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

**スポットフリートリクエストを変更するには**  
[Edit-EC2SpotFleetRequest](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2SpotFleetRequest.html) コマンドレットを使用して、指定したスポットフリートリクエストのターゲットキャパシティを更新します。

```
Edit-EC2SpotFleetRequest `
    -SpotFleetRequestId "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" `
    -TargetCapacity 20
```

前のコマンドを以下のように変更して、結果的にいずれのスポットインスタンスも終了せずに、指定したスポットフリートのターゲット容量を減らすことができます。

```
Edit-EC2SpotFleetRequest `
    -SpotFleetRequestId "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" `
    -TargetCapacity 20 `
    -ExcessCapacityTerminationPolicy "NoTermination"
```

------

# スポットフリートリクエストをキャンセル (削除) します。
<a name="cancel-spot-fleet"></a>

スポットフリートが不要になった場合は、スポットフリートリクエストをキャンセルできます。キャンセルすると、リクエストが削除されます。フリートリクエストをキャンセルすると、フリートに関連付けられているすべてのスポットリクエストがキャンセルされるため、新しいスポットインスタンスは起動されません。

スポットフリートをキャンセルするときは、そのインスタンスをすべて終了させるかどうかも指定する必要があります。これには、オンデマンドインスタンスとスポットインスタンスの両方が含まれます。

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

フリートリクエストをキャンセルするときにインスタンスを終了する必要があることを指定した場合、フリートリクエストは `cancelled_terminating` 状態へ移行します。それ以外の場合は `cancelled_running` 状態になり、インスタンスは中断または手動終了されるまで、引き続き実行されます。

**制限事項**
+ 1 回のリクエストで最大 100 個のフリートをキャンセルできます。指定した数を超えると、フリートはキャンセルされません。

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

**スポットフリートリクエストをキャンセル (削除) するには**

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

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

1. スポットフリートリクエストを選択してください。

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

1. **[スポットリクエストのキャンセル]** ダイアログボックスで、次の操作を行います。

   1. スポットフリートリクエストのキャンセルと同時に関連するインスタンスを終了するには、**[インスタンスの終了]** チェックボックスをオンのままにします。関連するインスタンスを終了せずにスポットフリートリクエストをキャンセルするには、**[インスタンスの終了]** チェックボックスをオフにします。

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

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

**スポットフリートリクエストをキャンセル (削除) し、そのインスタンスを終了するには**  
[cancel-spot-fleet-requests](https://docs.aws.amazon.com/cli/latest/reference/ec2/cancel-spot-fleet-requests.html) コマンドを `--terminate-instances` オプションと共に使用します。

```
aws ec2 cancel-spot-fleet-requests \
    --spot-fleet-request-ids sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE \
    --terminate-instances
```

以下は出力の例です。

```
{
    "SuccessfulFleetRequests": [
        {
            "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE",
            "CurrentSpotFleetRequestState": "cancelled_terminating",
            "PreviousSpotFleetRequestState": "active"
        }
    ],
    "UnsuccessfulFleetRequests": []
}
```

**そのインスタンスを終了せずにスポットフリートリクエストをキャンセル (削除) するには**  
代わりに `--no-terminate-instances` オプションを使用して、前の例を変更します。

```
aws ec2 cancel-spot-fleet-requests \
    --spot-fleet-request-ids sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE \
    --no-terminate-instances
```

以下は出力の例です。

```
{
    "SuccessfulFleetRequests": [
        {
            "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE",
            "CurrentSpotFleetRequestState": "cancelled_running",
            "PreviousSpotFleetRequestState": "active"
        }
    ],
    "UnsuccessfulFleetRequests": []
}
```

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

**スポットフリートリクエストをキャンセル (削除) し、そのインスタンスを終了するには**  
[Stop-EC2SpotFleetRequest](https://docs.aws.amazon.com/powershell/latest/reference/items/Stop-EC2SpotFleetRequest.html) コマンドレットを `-TerminateInstance` パラメータと共に使用します。

```
Stop-EC2SpotFleetRequest `
    -SpotFleetRequestId "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" `
    -TerminateInstance $true
```

**そのインスタンスを終了せずにスポットフリートリクエストをキャンセル (削除) するには**  
`-TerminateInstance` パラメータの値を変更して、前の例を変更します。

```
Stop-EC2SpotFleetRequest `
    -SpotFleetRequestId "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" `
    -TerminateInstance $false
```

------

# スポットフリートの自動スケーリングについて
<a name="spot-fleet-automatic-scaling"></a>

*自動スケーリング*により、需要に応じてスポットフリートのターゲットキャパシティを増減できます。自動スケーリングを使用すると、スポットフリートは、1 つ以上のスケーリングポリシーに応答して、指定された範囲内でインスタンスを起動 (スケールアウト) するか、インスタンスを終了 (スケールイン) できます。

スポットフリートの自動スケーリングは、Amazon EC2、Amazon CloudWatch、および Application Auto Scaling API の組み合わせによって可能になります。スポットフリートは Amazon EC2 で作成され、アラームは CloudWatch で作成され、スケーリングポリシーは Application Auto Scaling で作成されます。

**自動スケーリングのタイプ**

スポットフリートは、以下のタイプの自動スケーリングをサポートします。
+ [ターゲット追跡スケーリング](spot-fleet-target-tracking.md) – 特定のメトリクスの値をターゲットにすることで、フリートの現在のキャパシティを増減させます。これはサーモスタットで家の温度を管理する方法と似ています (希望の温度を選択すれば、後はサーモスタットがすべてを実行します)。
+ ステップスケーリング - アラーム違反のサイズに応じて変動する一連のスケーリング調整値 (ステップ調整値) に基づいて、フリートの現在の容量を増減させます。[ステップスケーリング: ステップスケーリングポリシーを使用して、スポットフリートをスケールする](spot-fleet-step-scaling.md)
+ スケジュールに基づくスケーリング - 日付と時刻に基づいて、フリートの現在の容量を増減させます。[スケジュールされたスケーリング: スケジュールに従ってスポットフリートをスケールする](spot-fleet-scheduled-scaling.md)

## 考慮事項
<a name="considerations-for-spot-fleet-automatic-scaling"></a>

スポットフリートに自動スケーリングを使用する場合は、次の点を考慮してください。
+ **インスタンスの重み付け** – [インスタンスの重み付け](ec2-fleet-instance-weighting.md)を使用している場合は、スポットフリートが必要に応じてターゲットキャパシティを超える可能性があることに注意してください。取得済みの容量が浮動小数点数となってもターゲット容量は整数でなければならないため、スポットフリートはその数を次の整数に切り上げます。アラームがトリガーされたときにスケーリングポリシーの結果を確認する際は、このような動作を考慮に入れる必要があります。例えば、ターゲット容量が 30、取得済み容量が 30.1 で、スケーリングポリシーが 1 を減算するとします。アラームがトリガーされると、自動スケーリングプロセスは 30.1 から 1 を減算して 29.1 を得るため、この数は 30 に切り上げられることになり、スケーリングアクションは実行されません。別の例として、選択したインスタンスの分量が 2、4、8 であり、ターゲット容量が 10 であるとします。分量 2 のインスタンスが利用できなかったために、スポットフリートは分量 4 と 8 のインスタンスをプロビジョニングして取得済みの容量が 12 になったとします。スケーリングポリシーがターゲット容量を 20% 減らしてアラームがトリガーされた場合、自動スケーリングプロセスは 12 から 12×0.2 を減算して 9.6 を得るため、この数は 10 に切り上げられることになり、スケーリングアクションは実行されません。
+ **クールダウン期間** - スポットフリート用に作成したスケーリングポリシーは、クールダウン期間をサポートしています。クールダウン期間は、以前のトリガー関連のスケーリングアクティビティが以後のスケーリングイベントに影響を及ぼすことができる期限であり、スケーリングアクティビティが終了した時点からの秒数として指定します。スケールアウトポリシーにクールダウン期間を設定すると、その期間中にクールダウンを開始したスケールアウトイベントによって追加された容量は、次のスケールアウトに予定される容量の一部として繰り入れられます。これにより、スケールアウトが継続的に (ただし過剰になることなく) 行われます。スケールインポリシーにクールダウン期間を設定すると、その期間が過ぎるまでは以後のスケールインリクエストがブロックされます。これにより、スケールインが抑制されてアプリケーションの可用性が確保されます。ただし、スケールイン後のクールダウン期間中に別のアラームによってスケールアウトポリシーがトリガーされると、自動スケーリングによってスケーラブルなターゲットが即座にスケールアウトされます。
+ **詳細モニタリングの使用** – 使用率の変化により迅速に対応できるように、1 分間隔でインスタンスメトリクスに基づいてスケールすることをお勧めします。5 分間隔でメトリクスをスケールすると、応答時間が低速になり、古いメトリクスデータに基づいてスケールすることになる可能性があります。1 分ごとにインスタンスのメトリクスデータを CloudWatch に送信するには、インスタンスで詳細モニタリングを有効にできます。詳細については、「[EC2 インスタンスの詳細モニタリングを管理する](manage-detailed-monitoring.md)」および「[定義済みパラメータを使用してスポットフリートリクエストを作成する](create-spot-fleet.md#create-spot-fleet-advanced)」を参照してください。
+ **AWS CLI** – AWS CLI を使用してスポットフリートのスケーリングを設定する場合は、[application-autoscaling](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling) CLI を使用します。

# スポットフリートの自動スケーリングに必要な IAM のアクセス許可
<a name="spot-fleet-auto-scaling-IAM"></a>

スポットフリートの自動スケーリングは、Amazon EC2、Amazon CloudWatch、および Application Auto Scaling API の組み合わせによって可能になります。スポットフリートは Amazon EC2 で作成され、アラームは CloudWatch で作成され、スケーリングポリシーは Application Auto Scaling で作成されます。Amazon EC2 と[スポットフリートの使用に必要な IAM アクセス許可](spot-fleet-prerequisites.md#spot-fleet-iam-users)に加えて、フリートスケーリング設定にアクセスするユーザーは、自動スケーリングをサポートするサービスに対する適切なアクセス許可が必要です。

スポットフリートの自動スケーリングを使用するには、ユーザーは次のポリシー例に示されているアクションを使用するアクセス許可を持っている必要があります。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "application-autoscaling:*",
                "ec2:DescribeSpotFleetRequests",
                "ec2:ModifySpotFleetRequest",
                "cloudwatch:DeleteAlarms",
                "cloudwatch:DescribeAlarmHistory",
                "cloudwatch:DescribeAlarms",
                "cloudwatch:DescribeAlarmsForMetric",
                "cloudwatch:GetMetricStatistics",
                "cloudwatch:ListMetrics",
                "cloudwatch:PutMetricAlarm",
                "cloudwatch:DisableAlarmActions",
                "cloudwatch:EnableAlarmActions",
                "iam:CreateServiceLinkedRole",
                "sns:CreateTopic",
                "sns:Subscribe",
                "sns:Get*",
                "sns:List*"
            ],
            "Resource": "*"
        }
    ]
}
```

------

独自の IAM ポリシーを作成し、アプリケーションの Auto Scaling API を呼び出すためのよりきめ細かなアクセス許可を付与することもできます。詳細については、「*Application Auto Scaling ユーザーガイド*」の「[Identity and Access Management for Application Auto Scaling](https://docs.aws.amazon.com/autoscaling/application/userguide/auth-and-access-control.html)」を参照してください。

Application Auto Scaling サービスには、スポットフリートおよび CloudWatch アラームを記述するアクセス許可、およびユーザーの代わりにスポットフリートターゲット容量を変更するアクセス許可も必要です。スポットフリートの自動スケーリングを有効にすると、サービスにリンクされた `AWSServiceRoleForApplicationAutoScaling_EC2SpotFleetRequest` というロールが作成されます。このサービスにリンクされたロールは、アプリケーションの Auto Scaling に対して、ポリシーのアラームの記述、フリートの現容量のモニタリング、およびフリートの容量の変更を行うためのアクセス許可を付与します。Application Auto Scaling の元の管理された型のスポットフリートロールは `aws-ec2-spot-fleet-autoscale-role` ですが、これは不要になりました。サービスにリンクされたロールは、Application Auto Scaling のデフォルトロールです。詳細については、「Application Auto Scaling ユーザーガイド」の「[Application Auto Scaling 用のサービスリンクロール](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-service-linked-roles.html)」を参照してください。

# ターゲット追跡スケーリング: 特定のメトリクスの値を対象にしてスポットフリートをスケールする
<a name="spot-fleet-target-tracking"></a>

ターゲット追跡スケーリングで、メトリクスを選択し、ターゲット値を設定することで、ターゲット追跡スケーリングポリシーを作成します。次に、スポットフリートは、スケーリングポリシーをトリガーする CloudWatch アラームを作成および管理し、選択したメトリクスとターゲット値に基づいてスケーリング調整を計算します。スケーリングポリシーは、必要に応じてインスタンスを追加または削除することでキャパシティを調整し、メトリクスを指定されたターゲット値またはそれに近い値に維持します。ターゲット追跡ポリシーは、メトリクスをターゲット値近くに維持することに加えて、負荷パターンの変動によるメトリクスの変動に合わせて調整し、急激なキャパシティの変動を最小化します。

各ポリシーが異なるメトリクスを使用していれば、スポットフリートに複数のターゲットの追跡スケーリングポリシーを作成できます。フリートは、最大のフリートキャパシティを指定するポリシーに基づいてスケールされます｡ これにより、複数のシナリオに対応して、アプリケーションワークロードに十分なキャパシティを確保できます。

アプリケーションの可用性を高めるために、フリートのスケールアウトはメトリクスに比例して可能な限り高速に行われますが、スケールインはより緩やかです。

ターゲットキャパシティが減ったためにスポットフリートがスポットインスタンスを終了する場合、インスタンスはスポットインスタンスの中断通知を受け取ります。

**注記**  
ターゲットの追跡スケーリングポリシーのためにスポットフリートが管理する CloudWatch アラームを編集または削除しないでください。ターゲット追跡スケーリングポリシーを削除すると、スポットフリートが自動的にアラームを削除します。

**前提条件**
+ スポットフリートリクエストには、タイプが `maintain` のリクエストが必要です。自動スケーリングはタイプ `request` のリクエストではサポートされていません。
+ [スポットフリートの自動スケーリングに必要な IAM のアクセス許可](spot-fleet-auto-scaling-IAM.md) を設定します。
+ 「[考慮事項](spot-fleet-automatic-scaling.md#considerations-for-spot-fleet-automatic-scaling)」を確認します。

**ターゲット追跡ポリシーを設定するには**

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

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

1. スポットフリートリクエストを選択してください。

1. 画面の下部にある **[自動スケーリング]** タブを選択してください。スポットフリートのリンクを選択した場合、タブはありません。代わりに、**[自動スケーリング]** セクションまでスクロールします。

1. 自動スケーリングが設定されていない場合は、[**Configure**] を選択してください。

1. スポットフリートの最小容量および最大容量を設定するには、[**Scale capacity between**] を使用します。自動スケーリングにより、最小容量以下または最大容量以上にスポットフリートがスケールされることはありません。

1. [**Policy Name**] にこのポリシーの名前を入力してください。

1. [Target metric] を選択します｡****

1. メトリクスの [Target value] を入力してください。****

1. **[クールダウン期間]** には、新しい値 (秒単位) を指定するか、デフォルトのままにします。

1. (オプション) 現在の構成に基づいてスケールインポリシーの作成を省略するには、**[スケールインの無効化]** を選択してください。別の構成を使用してスケールインポリシーを作成できます。

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

**AWS CLI を使用して、ターゲットの追跡スケーリングポリシーを設定します。**

1. [register-scalable-target](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html) コマンドを使用して、スケーラブルなターゲットとしてスポットフリートリクエストを登録します。

1. [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html) コマンドを使用して、スケーリングポリシーを作成します。

# ステップスケーリング: ステップスケーリングポリシーを使用して、スポットフリートをスケールする
<a name="spot-fleet-step-scaling"></a>

ステップスケーリングポリシーでは、CloudWatch アラームを指定してスケーリングプロセスをトリガーします。例えば、CPU 利用率が一定のレベルに達したときにスケールアウトする場合、Amazon EC2 によって提供される `CPUUtilization` メトリクスを使用してアラームを作成します。

ステップスケーリングポリシーを作成したら、次のいずれかのスケーリング調整タイプを指定する必要があります。
+ [追加] - 指定した数の容量ユニットまたは指定した割合の現在の容量で、スポットフリートのターゲット容量を増やします。****
+ [削除] - 指定した数の容量ユニットまたは指定した割合の現在の容量で、スポットフリートのターゲット容量を減らします。****
+ [設定] - 指定した数の容量ユニットに、スポットフリートのターゲット容量を設定します。****

アラームがトリガーされると、自動スケーリングプロセスは、取得済み容量およびスケーリングポリシーを使用して新しいターゲット容量を計算し、必要に応じてターゲット容量を更新します。例えば、ターゲット容量と取得済み容量がそれぞれ 10 で、スケーリングポリシーが 1 を加算するとします。アラームがトリガーされると、自動スケーリングプロセスは 10 に 1 を加えて 11 を得るため、スポットフリートは 1 インスタンスを起動します。

ターゲットキャパシティが減ったためにスポットフリートがスポットインスタンスを終了する場合、インスタンスはスポットインスタンスの中断通知を受け取ります。

**前提条件**
+ スポットフリートリクエストには、タイプが `maintain` のリクエストが必要です。自動スケーリングはタイプ `request` のリクエストではサポートされていません。
+ [スポットフリートの自動スケーリングに必要な IAM のアクセス許可](spot-fleet-auto-scaling-IAM.md) を設定します。
+ アプリケーションにとってどの CloudWatch メトリクスが重要化を検討します。AWS または独自のカスタムメトリクスが提供するメトリクスに基づいて、CloudWatch アラームを作成できます。
+ スケーリングポリシーで使用する AWS メトリクスについて、メトリクスを提供するサービスがデフォルトで有効にならない場合、CloudWatch メトリクスの収集を有効にします。
+ 「[考慮事項](spot-fleet-automatic-scaling.md#considerations-for-spot-fleet-automatic-scaling)」を確認します。

**CloudWatch アラームを作成するには**

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

1. ナビゲーションペインで、**[アラーム]** を展開し、**[すべてのアラーム]** を選択してください。

1. [**アラームの作成**] を選択してください。

1. **[Specify metric and conditions]** (メトリクスと条件の指定) ページで、**[Select metric]** (メトリクスの選択) を選択してください。

1. **[EC2 スポット]**、**[フリートリクエストメトリクス]** の順に選択し、メトリクス (**TargetCapacity** など) を選択して、**[メトリクスの選択]** を選択してください。

   [Specify metric and conditions (メトリクスと条件の指定)] ページに、選択したメトリクスに関するグラフや他の情報が表示されます。****

1. **[期間]** でアラームの評価期間 (**[1 分]** など) を選択してください。アラームを評価する場合、各期間は 1 つのデータポイントに集約されます。
**注記**  
期間が短いほど、作成されるアラームの感度が高くなります。

1. [条件] で、しきい値条件を定義してアラームを定義します。****例えば、メトリクスの値が 80% 以上になるたびにアラームをトリガーするように、しきい値を定義できます。

1. [Additional configuration (追加設定)] の [Datapoints to alarm (アラームするデータポイント)] で、アラームをトリガーするために ALARM 状態になる必要があるデータポイント (評価期間) の数を指定します (3 個の評価期間のうち 1 個または 2 個の評価期間など)。********これでアラームが作成されます。このアラームは、指定した数の期間で連続してしきい値を超過すると、ALARM 状態に移行します。詳細については、*Amazon CloudWatch ユーザーガイド* の[アラームを評価する](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html#alarm-evaluation)を参照してください。

1. [Missing data treatment (不足しているデータの扱い)] で、いずれかのオプションを選択します (または、デフォルトの [Treat missing data as missing (不足しているデータを不足として扱う)] のままにします)。********詳細については、*Amazon CloudWatch ユーザーガイド*の「[CloudWatch アラームが欠落データを処理する方法の設定](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html#alarms-and-missing-data)」を参照してください。

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

1. (オプション) スケーリングイベントの通知を受け取る場合は、[通知] で、通知を受け取るために使用する Amazon SNS トピックを選択または作成できます。****それ以外の場合は、通知を削除し、必要に応じて後で追加できます。

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

1. **[名前と説明の追加]** にアラームの名前と説明を入力し、**[次へ]** を選択してください。

1. [**アラームの作成**] を選択します。

**スポットフリートのステップスケーリングポリシーを設定するには**

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

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

1. スポットフリートリクエストを選択してください。

1. 画面の下部にある **[自動スケーリング]** タブを選択してください。スポットフリートのリンクを選択した場合、タブはありません。代わりに、**[自動スケーリング]** セクションまでスクロールします。

1. 自動スケーリングが設定されていない場合は、[**Configure**] を選択してください。

1. スポットフリートの最小容量および最大容量を設定するには、[**Scale capacity between**] を使用します。スケーリングポリシーにより、最小容量未満に、または最大容量を超えてフリートがスケールされることはありません。

1. **[スケーリングポリシー]** の **[ポリシータイプ]** で **[ステップスケーリングポリシー]** を選択してください。

1. 初期状態では、**[スケーリングポリシー]** には **ScaleUp** と **ScaleDown** という名前のステップスケーリングポリシーが含まれています。これらのポリシーは、完了するか、[Remove policy] を選択して削除できます。****[Add policy] を選択することもできます。****

1. ポリシーを定義するには、以下の作業を行います。

   1. [**Policy Name**] にこのポリシーの名前を入力してください。

   1. **[ポリシートリガー]** で、既存のアラームを選択するか、**[アラームを作成]** を選択して Amazon CloudWatch コンソールを開き、アラームを作成します。

   1. **[容量の変更]** では、スケーリングする量と、ステップ調整の下限と上限を指定します。特定の数のインスタンスまたは既存のグループサイズに対する割合を追加または削除したり、フリートを正確なサイズに設定したりできます。

      例えば、フリートのキャパシティを 30 パーセント増やすステップスケーリングポリシーを作成するには、**[追加]** を選択し、次のフィールドに **[30]** と入力して、**[パーセント]** を選択してください。デフォルトでは、[ポリシーを追加] の下限はアラームしきい値であり、上限は正 (\$1) の無限大です。デフォルトでは、[ポリシーを削除] の上限はアラームしきい値であり、下限は負 (-) の無限大です。

   1. (オプション) 別のステップを追加するには、**[ステップを追加]** を選択してください。

   1. **[クールダウン期間]** には、新しい値 (秒単位) を指定するか、デフォルトのままにします。

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

**AWS CLI を使用して、スポットフリートのステップスケーリングポリシーを設定するには**

1. [register-scalable-target](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html) コマンドを使用して、スケーラブルなターゲットとしてスポットフリートリクエストを登録します。

1. [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html) コマンドを使用して、スケーリングポリシーを作成します。

1. put-metric-alarm コマンドを使用してスケーリングポリシーをトリガーするアラームを作成します。[https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/put-metric-alarm.html](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/put-metric-alarm.html)

# スケジュールされたスケーリング: スケジュールに従ってスポットフリートをスケールする
<a name="spot-fleet-scheduled-scaling"></a>

スケジュールに従ってフリートをスケールすると、予想可能な需要の変化に応じてアプリケーションをスケールすることができます。*スケジュールされたアクション*を作成することで、スポットフリートに特定の時刻にスケーリングアクティビティを実行するように指示できます。スケジュールされたアクションを作成するには、既存のスポットフリート、スケーリングアクティビティを実行する必要がある時刻、および必要な最小キャパシティと最大キャパシティを指定する必要があります。スケジュールされたアクションは、1 回または定期的なスケジュールでスケールされるように設定できます。変更が必要な場合は、スケジュールされたアクションを編集または削除できます。

**前提条件**
+ スケジュールされたアクションは、既存のスポットフリートに対してのみ作成できます。スケジュールされたアクションは、スポットフリートの作成時に作成することはできません。
+ スポットフリートリクエストには、タイプが `maintain` のリクエストが必要です。自動スケーリングはタイプ `request` のリクエストではサポートされていません。
+ [スポットフリートの自動スケーリングに必要な IAM のアクセス許可](spot-fleet-auto-scaling-IAM.md) を設定します。
+ 「[考慮事項](spot-fleet-automatic-scaling.md#considerations-for-spot-fleet-automatic-scaling)」を確認します。

**1 回のアクションを作成するには**

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

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

1. スポットフリートリクエストを選択してください。

1. 画面の下部にある **[スケジュールされたスケーリング]** タブを選択してください。スポットフリートのリンクを選択した場合、タブはありません。代わりに、**[スケジュールされたスケーリング]** セクションまでスクロールします。

1. **[スケジュールされたアクションの作成]** を選択してください。

1. [名前] に、予定アクションの名前を指定します。****

1. [最小容量]、[最大容量]、または両方の値を入力してください。********

1. [繰り返し] で、[1 回] を選択してください。********

1. (オプション) [**開始時刻**]、[**終了時刻**]、またはその両方の日付と時刻を選択してください。

1. [**Create**] (作成) を選択してください。

**定期的なスケジュールされたアクションを作成するには**

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

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

1. スポットフリートリクエストを選択してください。

1. 画面の下部にある **[スケジュールされたスケーリング]** タブを選択してください。スポットフリートのリンクを選択した場合、タブはありません。代わりに、**[スケジュールされたスケーリング]** セクションまでスクロールします。

1. [名前] に、予定アクションの名前を指定します。****

1. [最小容量]、[最大容量]、または両方の値を入力してください。********

1. [繰り返し] で、事前定義済みのスケジュール (例えば、[毎日]) のいずれかを選択するか、[カスタム] を選択して cron 式を入力してください。************スケジュールされたスケーリングでサポートされる cron 式の詳細については、「*Amazon EventBridge ユーザーガイド*」の「[Cron expressions](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-scheduled-rule-pattern.html#eb-cron-expressions)」を参照してください。

1. (オプション) [**開始時刻**]、[**終了時刻**]、またはその両方の日付と時刻を選択してください。

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

**スケジュールされたアクションを編集するには**

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

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

1. スポットフリートリクエストを選択してください。

1. 画面の下部にある **[スケジュールされたスケーリング]** タブを選択してください。スポットフリートのリンクを選択した場合、タブはありません。代わりに、**[スケジュールされたスケーリング]** セクションまでスクロールします。

1. スケジュールされたアクション を選択して、[Actions]、[Edit] の順に選択してください。********

1. 必要な変更を加えて、[Submit] を選択してください。****

**スケジュールされたアクションを削除するには**

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

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

1. スポットフリートリクエストを選択してください。

1. 画面の下部にある **[スケジュールされたスケーリング]** タブを選択してください。スポットフリートのリンクを選択した場合、タブはありません。代わりに、**[スケジュールされたスケーリング]** セクションまでスクロールします。

1. スケジュールされたアクションを選択して、[アクション]、[削除] の順に選択してください。********

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

**AWS CLI を使用してスケジュールされたスケーリングを管理するには**

次のコマンドを使用します。
+ put-scheduled-action[https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scheduled-action.html](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scheduled-action.html)
+ describe-scheduled-actions[https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/describe-scheduled-actions.html](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/describe-scheduled-actions.html)
+ delete-scheduled-action[https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/delete-scheduled-action.html](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/delete-scheduled-action.html)

# EC2 フリートまたはスポットフリートをモニタリングする
<a name="fleet-monitor"></a>

EC2 フリートまたはスポットフリートの効果的なモニタリングは、最適なパフォーマンスを維持し、信頼性を確保するために不可欠です。これを実現するには、このトピックで説明する Amazon CloudWatch や Amazon EventBridge など、さまざまなツールがあります。

CloudWatch を使用して、メトリクスの収集と追跡、アラーム設定、フリートの状態の変更に対する自動的な対応ができます。

EventBridge を使用すると、フリートによって出力されたイベントをプログラムでモニタリングして対応できます。EventBridge でルールを定義することで、インスタンスの終了やフリート状態の変更などの特定のフリートイベントへの応答を自動化し、運用効率を向上させることができます。

**Topics**
+ [

# CloudWatch を使用して EC2 フリートまたはスポットフリートをモニタリングする
](ec2-fleet-cloudwatch-metrics.md)
+ [

# Amazon EventBridge を使用して EC2 フリートまたはスポットフリートによって出力されたイベントをモニタリングし、プログラムで応答します。
](monitor-ec2-fleet-using-eventbridge.md)

# CloudWatch を使用して EC2 フリートまたはスポットフリートをモニタリングする
<a name="ec2-fleet-cloudwatch-metrics"></a>

ここで説明する Amazon CloudWatch メトリクスを使用すると、EC2 フリートまたはスポットフリートをモニタリングできます。

**重要**  
正確性を確実にするため、これらのメトリクスを使用する際は詳細モニタリングを有効にすることをお勧めします。詳細については、「[EC2 インスタンスの詳細モニタリングを管理する](manage-detailed-monitoring.md)」を参照してください。

CloudWatch の使用の詳細については、「[CloudWatch を使用したインスタンスのモニタリング](using-cloudwatch.md)」を参照してください。

## EC2 フリートとスポットフリートのメトリクス
<a name="ec2-fleet-metrics"></a>

`AWS/EC2Spot` 名前空間には、フリートに使用できる次のメトリクスに加えて、フリート内のスポットインスタンスに使用できる CloudWatch メトリクスが含まれています。詳細については、「[インスタンスメトリクス](viewing_metrics_with_cloudwatch.md#ec2-cloudwatch-metrics)」を参照してください。


| メトリクス | 説明 | 
| --- | --- | 
| AvailableInstancePoolsCount |  フリートリクエストに指定されているスポットキャパシティプール。 単位: カウント  | 
| BidsSubmittedForCapacity |  Amazon EC2 がフリートリクエストを送信したキャパシティ。 単位: カウント  | 
| EligibleInstancePoolCount |  Amazon EC2 がリクエストを受理できるフリートリクエストに指定されたスポットキャパシティプール スポットインスタンスに支払う上限価格がスポット料金よりも低いか、スポット料金がオンデマンドインスタンス料金よりも高いプールでは、Amazon EC2 はリクエストを受理しません。 単位: カウント  | 
| FulfilledCapacity |  Amazon EC2 が落札した容量。 単位: カウント  | 
| MaxPercentCapacityAllocation |  フリートリクエストに指定されたすべてのフリートプールでの `PercentCapacityAllocation` の最大値。 単位: パーセント  | 
| PendingCapacity |  `TargetCapacity` と `FulfilledCapacity` の違い。 単位: カウント  | 
| PercentCapacityAllocation |  指定されたディメンションのスポットキャパシティープールに配分された容量。すべてのスポットキャパシティープールにおける最大値を取得するには、 を使用します。`MaxPercentCapacityAllocation` 単位: パーセント  | 
| TargetCapacity |  フリートリクエストのターゲットキャパシティ。 単位: カウント  | 
| TerminatingCapacity |  プロビジョニングされた容量が目標の容量より大きいために終了した容量。 単位: カウント  | 

メトリクスの測定単位が `Count` である場合、最も有用な統計は `Average` です。

## EC2 フリートとスポットフリートのディメンション
<a name="ec2-fleet-dimensions"></a>

フリートのデータをフィルタリングするには、次のディメンションを使用します。


| ディメンション | 説明 | 
| --- | --- | 
| AvailabilityZone |  アベイラビリティーゾーン別にデータをフィルタリングします。  | 
| FleetRequestId |  フリートのリクエスト別にデータをフィルタリングします。  | 
| InstanceType |  インスタンスタイプ別にデータをフィルタリングします。  | 

## EC2 フリートまたはスポットフリートの CloudWatch メトリクスを表示します。
<a name="view-ec2-fleet-metrics"></a>

Amazon CloudWatch コンソールを使用して、フリートの CloudWatch メトリクスを表示できます。これらのメトリクスは、モニタリング用のグラフのように表示されます。これらのグラフは、フリートがアクティブである場合にデータポイントを表示します。

メトリクスはまず名前空間ごとにグループ化され、次に各名前空間内の種々のディメンションの組み合わせごとにグループ化されます。例えば、すべてのフリートメトリクスまたはフリートメトリクスグループは、フリートリクエスト ID、インスタンスタイプ、またはアベイラビリティーゾーン別に表示できます。

**フリートメトリクスを表示するには**

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

1. ナビゲーションペインで、**[メトリクス]** を展開し、**[すべてのメトリクス]** を選択してください。

1. EC2 スポットの名前空間を選択してください。****
**注記**  
EC2 スポットの名前空間が表示されない場合、これには 2 つの原因があります。****リージョンで EC2 フリートもスポットフリートもまだ使用したことがありません。使用中の AWS サービスのみがメトリクスを Amazon CloudWatch に送信します。あるいは、リージョンで EC2 フリートまたはスポットフリートを使用したことはあるものの、過去 2 週間にはない場合には、名前空間が表示されません。

1. ディメンション別にメトリクスをフィルタリングするには、次のいずれかを選択してください。
   + **[フリートリクエストメトリクス]** - フリートリクエスト別にグループ化
   + **[アベイラビリティーゾーン別]** - フリートリクエストおよびアベイラビリティーゾーン別にグループ化
   + **[インスタンスタイプ別]** - フリートリクエストおよびインスタンスタイプ別にグループ化
   + **[アベイラビリティーゾーン/インスタンスタイプ別]** - フリートリクエスト、アベイラビリティーゾーン、インスタンスタイプ別にグループ化

1. メトリクスのデータを表示するには、メトリクスの横にあるチェックボックスをオンにします。

# Amazon EventBridge を使用して EC2 フリートまたはスポットフリートによって出力されたイベントをモニタリングし、プログラムで応答します。
<a name="monitor-ec2-fleet-using-eventbridge"></a>

EC2 フリートかスポットフリートの状態に変化があった場合、そのフリートから通知が発せられます。通知は、Amazon EventBridge (旧称 Amazon CloudWatch Events) に送信されるイベントとして利用できます。イベントは、ベストエフォートベースで出力されます。

Amazon EventBridge を使用して、イベントに応答してプログラムによるアクションをトリガーするルールを作成できます。例えば、フリートの状態が変更されたときにトリガーされるルールと、フリートのインスタンスが終了したときにトリガーされるルールという 2 つの EventBridge ルールを作成できます。この例の最初のルールでは、フリートの状態が変更された際に、ルールが SNS トピックを呼び出して E メール通知を送信するように設定できます。2 番目のルールでは、フリートのインスタンスが終了した場合に Lambda 関数を呼び出して、新しいインスタンスを起動するように設定できます。

**注記**  
タイプ `maintain` と `request` のフリートのみがイベントを発行します。タイプ `instant` のフリートは、同期された 1 回限りのリクエストを送信するため、イベントを発行しません。フリートの状態は応答ですぐに認識されます。Amazon EventBridge を使用してフリートイベントをモニタリングするには、リクエストタイプが `maintain` または `request` である必要があります。

フリートのイベント履歴を表示する方法については、「[EC2 フリートのイベント履歴を表示する](describe-ec2-fleet.md#describe-ec2-fleet-event-history)」を参照してください。

**Topics**
+ [

## EC2 フリートイベントまたはスポットフリートイベントをモニタリングする Amazon EventBridge ルールを作成する
](#fleet_create-eventbridge-rules)
+ [

## EC2 フリート イベントタイプ
](#ec2-fleet-event-types)
+ [

## スポットフリートイベントタイプ
](#spot-fleet-event-types)

## EC2 フリートイベントまたはスポットフリートイベントをモニタリングする Amazon EventBridge ルールを作成する
<a name="fleet_create-eventbridge-rules"></a>

EC2 フリートまたはスポットフリートの状態変更に関する通知が送信される場合、その通知のためのイベントが Amazon EventBridge に対し JSON ファイルとして送信されます。EventBridge がルールで定義されているパターンに一致するイベントパターンを検出すると、EventBridge はルールで指定されているターゲットを呼び出します。

EventBridge ルールを記述して、一致するイベントパターンに基づいてアクションを自動化できます。

イベント内の次のフィールドはイベントパターンを形成します。このパターンはルールで定義されます。

`"source": "aws.ec2fleet"`  
イベントが EC2 フリート からのものであることを特定します。

`"detail-type": "EC2 Fleet State Change"`  
イベントタイプを特定します。

`"detail": { "sub-type": "submitted" }`  
イベントのサブタイプを特定します。

EC2 フリートおよびスポットフリートのイベントの一覧とイベントデータの例については、「[EC2 フリート イベントタイプ](#ec2-fleet-event-types)」と「[スポットフリートイベントタイプ](#spot-fleet-event-types)」を参照してください。

**Topics**
+ [

### 通知を送信する EventBridge ルールを作成する
](#eventbridge-send-notification)
+ [

### Lambda 関数をトリガーする EventBridge ルールの作成
](#eventbridge-trigger-lambda)

### 通知を送信する EventBridge ルールを作成する
<a name="eventbridge-send-notification"></a>

次の例では、Amazon EC2 が EC2 フリート状態変更通知を発するたびに、E メール、テキストメッセージ、またはモバイルプッシュ通知を送信する EventBridge ルールを作成します。この例のシグナルは `EC2 Fleet State Change` イベントとして送信され、ルールによって定義されたアクションがトリガーされます。

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

**EventBridge ルールを作成して EC2 フリート状態が変更されたときに通知を送信するには**

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 Fleet Instance Change` イベントと一致するように以下のイベントパターンを指定します。

      ```
      {
       "source": ["aws.ec2fleet"],
       "detail-type": ["EC2 Fleet Instance Change"]
      }
      ```

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

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

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

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

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

         1. **[Event type]** (イベントタイプ) で、**[EC2 Fleet Instance Change]** (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)」を参照してください。

### Lambda 関数をトリガーする EventBridge ルールの作成
<a name="eventbridge-trigger-lambda"></a>

次の例では、Amazon EC2 が EC2 フリートインスタンスが起動したときのインスタンス変更通知を発するたびに Lambda 関数をトリガーする EventBridge ルールを作成します。この例のシグナルは `EC2 Fleet Instance Change` イベント、サブタイプ `launched` として発され、ルールによって定義されたアクションがトリガーされます。

EventBridge ルールを作成する前に、Lambda 関数を作成する必要があります。

**EventBridge ルールで使用する Lambda 関数を作成するには**

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

1. [**関数の作成**] を選択してください。

1. 関数の名前を入力し、コードを設定し、[**Create function (関数の作成)**] を選択してください。

   詳細については、「*AWS Lambda デベロッパーガイド*」の「[初めての Lambda 関数の作成](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html)」を参照してください。

**EC2 フリート のインスタンスの状態が変更されたときに Lambda 関数をトリガーする 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 Fleet Instance Change` イベントと `launched` サブタイプに一致するよう、以下のイベントパターンを指定します。

      ```
      {
       "source": ["aws.ec2fleet"],
       "detail-type": ["EC2 Fleet Instance Change"],
       "detail": {
         "sub-type": ["launched"]
      }
      ```

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

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

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

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

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

         1. **[Event type]** (イベントタイプ) で、**[EC2 Fleet Instance Change]** (EC2 フリートインスタンスの変更) を選択してください。

         1. **[Edit pattern]** (パターンの編集) を選択し、サンプルのイベントパターンに一致するように `"detail": {"sub-type": ["launched"]` を追加します。適切な JSON 形式を得るには、前にある角括弧 `]`の後にコンマ `,`を入力してください。

      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]** (トピック) で **[Lambda function]** (Lambda 関数) を選択し、**[Function]** (関数) では、イベント発生時に応答するように作成した関数を選択してください。

   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. **ルールの作成**を選択してください。

Lambda 関数を作成する方法のチュートリアルと Lambda 関数を実行する EventBridge ルールについては、*AWS Lambda デベロッパーガイド*の「[チュートリアル: EventBridge を使用して Amazon EC2 インスタンスの状態をログに記録する](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-log-ec2-instance-state.html)」を参照してください。

## EC2 フリート イベントタイプ
<a name="ec2-fleet-event-types"></a>

5 つの EC2 フリート イベントタイプがあります。イベントタイプごとに、いくつかのサブタイプがあります。

**Topics**
+ [

### EC2 フリートの状態の変更
](#ec2-fleet-state-change)
+ [

### EC2 フリートのスポットインスタンスリクエストの変更
](#ec2-fleet-spot-instance-request-change)
+ [

### EC2 フリートインスタンスの変更
](#ec2-fleet-instance-change)
+ [

### EC2 フリート情報
](#ec2-fleet-info)
+ [

### EC2 フリートエラー
](#ec2-fleet-config-not-valid)

### EC2 フリートの状態の変更
<a name="ec2-fleet-state-change"></a>

EC2 フリート は、EC2 フリート の状態が変更されたときに `EC2 Fleet State Change` イベントを Amazon EventBridge に送信します。

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

```
{
    "version": "0",
    "id": "715ed6b3-b8fc-27fe-fad6-528c7b8bf8a2",
    "detail-type": "EC2 Fleet State Change",
    "source": "aws.ec2fleet",
    "account": "123456789012",
    "time": "2020-11-09T09:00:20Z",
    "region": "us-east-1",
    "resources": [
        "arn:aws:ec2:us-east-1:123456789012:fleet/fleet-598fb973-87b7-422d-be4d-6b0809bfff0a"
    ],
    "detail": {
        "sub-type": "active"
    }
}
```

`sub-type` に指定できる値は次のとおりです。

`active`  
EC2 フリート リクエストは検証済みです。Amazon EC2 は実行中のインスタンスをターゲット数分、確保しようとしています。

`deleted`  
EC2 フリート リクエストが削除され、実行中のインスタンスがありません。EC2 フリート は、そのインスタンスが終了してから 2 日後に削除されます。

`deleted_running`  
EC2 フリート リクエストが削除され、追加のインスタンスは起動されません。その既存のインスタンスは、中断または終了されるまで実行され続けます。リクエストは、すべてのインスタンスが中断されるか終了されるまで、この状態のままになります。

`deleted_terminating`  
EC2 フリートリクエストが削除され、そのインスタンスが終了します。リクエストは、すべてのインスタンスが終了されるまで、この状態のままになります。

`expired`  
EC2 フリートリクエストが期限切れです。このリクエストが `TerminateInstancesWithExpiration` セットを使用して作成されている場合、後続の `terminated` イベントは、インスタンスが終了済みなことを示します。

`modify_in_progress`  
EC2 フリート リクエストは変更中です。リクエストは、この変更が完全に処理されるまで、同じ状態を維持します。

`modify_succeeded`  
EC2 フリートリクエストが変更されました。

`submitted`  
EC2 フリート リクエストは評価中です。Amazon EC2 は目標数のインスタンスを起動する準備をしています。

`progress`  
EC2 フリートリクエストは受理中です。

### EC2 フリートのスポットインスタンスリクエストの変更
<a name="ec2-fleet-spot-instance-request-change"></a>

EC2 フリート は、フリート内のスポットインスタンスリクエストの状態が変更されたときに `EC2 Fleet Spot Instance Request Change` イベントを Amazon EventBridge に送信します。

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

```
{
    "version": "0",
    "id": "19331f74-bf4b-a3dd-0f1b-ddb1422032b9",
    "detail-type": "EC2 Fleet Spot Instance Request Change",
    "source": "aws.ec2fleet",
    "account": "123456789012",
    "time": "2020-11-09T09:00:05Z",
    "region": "us-east-1",
    "resources": [
        "arn:aws:ec2:us-east-1:123456789012:fleet/fleet-83fd4e48-552a-40ef-9532-82a3acca5f10"
    ],
    "detail": {
        "spot-instance-request-id": "sir-rmqske6h",
        "description": "SpotInstanceRequestId sir-rmqske6h, PreviousState: cancelled_running",
        "sub-type": "cancelled"
    }
}
```

`sub-type` に指定できる値は次のとおりです。

`active`  
スポットインスタンスリクエストは受理された状態であり、スポットインスタンスの関連付けが完了しています。

`cancelled`  
スポットインスタンスリクエストがキャンセルされている、あるいは、そのリクエストの有効期限が切れています。

`disabled`  
スポットインスタンスが停止されています。

`submitted`  
スポットインスタンスリクエストは送信済みです。

### EC2 フリートインスタンスの変更
<a name="ec2-fleet-instance-change"></a>

EC2 フリート は、フリート内のインスタンスの状態が変更されたときに `EC2 Fleet Instance Change` イベントを Amazon EventBridge に送信します。

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

```
{
    "version": "0",
    "id": "542ce428-c8f1-0608-c015-e8ed6522c5bc",
    "detail-type": "EC2 Fleet Instance Change",
    "source": "aws.ec2fleet",
    "account": "123456789012",
    "time": "2020-11-09T09:00:23Z",
    "region": "us-east-1",
    "resources": [
        "arn:aws:ec2:us-east-1:123456789012:fleet/fleet-598fb973-87b7-422d-be4d-6b0809bfff0a"
    ],
    "detail": {
        "instance-id": "i-0c594155dd5ff1829",
        "description": "{\"instanceType\":\"c5.large\",\"image\":\"ami-6057e21a\",\"productDescription\":\"Linux/UNIX\",\"availabilityZone\":\"us-east-1d\"}",
        "sub-type": "launched"
    }
}
```

`sub-type` に指定できる値は次のとおりです。

`launched`  
新しいインスタンスが起動されました。

`terminated`  
このインスタンスは終了しています。

`termination_notified`  
フリートのターゲット容量のスケールダウン中 (ターゲット容量 が 4 から 3 に変更される場合など) に、Amazon EC2 によってスポットインスタンスが終了されたので、インスタンス終了通知が送信されました。

### EC2 フリート情報
<a name="ec2-fleet-info"></a>

EC2 フリート は、受理中にエラーが発生したときに `EC2 Fleet Information` イベントを Amazon EventBridge に送信します。情報イベントは、フリートがターゲット容量を満たすことをブロックしません。

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

```
{
    "version": "0",
    "id": "76529817-d605-4571-7224-d36cc1b2c0c4",
    "detail-type": "EC2 Fleet Information",
    "source": "aws.ec2fleet",
    "account": "123456789012",
    "time": "2020-11-09T08:17:07Z",
    "region": "us-east-1",
    "resources": [
        "arn:aws:ec2:us-east-1:123456789012:fleet/fleet-8becf5fe-bb9e-415d-8f54-3fa5a8628b91"
    ],
    "detail": {
        "description": "c4.xlarge, ami-0947d2ba12ee1ff75, Linux/UNIX, us-east-1a, Spot price in either SpotFleetRequestConfigData or SpotFleetLaunchSpecification or LaunchTemplate or LaunchTemplateOverrides is less than Spot market price $0.0619",
        "sub-type": "launchSpecUnusable"
    }
}
```

`sub-type` に指定できる値は次のとおりです。

`fleetProgressHalted`  
すべての起動仕様の料金は、スポット料金を下回っているため無効です (すべての起動仕様が `launchSpecUnusable` イベントを生成しました)。スポット料金が変更されると、起動仕様が有効になる場合があります。

`launchSpecTemporarilyBlacklisted`  
設定が有効ではなく、インスタンスを起動しようとして何回か失敗しました。詳細については、イベントの説明をご覧ください。

`launchSpecUnusable`  
この起動仕様の料金は、スポット料金を下回っているため無効です。

`registerWithLoadBalancersFailed`  
ロードバランサーにインスタンスを登録しようとして失敗しました。詳細については、イベントの説明をご覧ください。

### EC2 フリートエラー
<a name="ec2-fleet-config-not-valid"></a>

EC2 フリート は、受理中にエラーが発生したときに `EC2 Fleet Error` イベントを Amazon EventBridge に送信します。エラーイベントは、フリートがターゲット容量を満たすことをブロックします。

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

```
{
    "version": "0",
    "id": "69849a22-6d0f-d4ce-602b-b47c1c98240e",
    "detail-type": "EC2 Fleet Error",
    "source": "aws.ec2fleet",
    "account": "123456789012",
    "time": "2020-10-07T01:44:24Z",
    "region": "us-east-1",
    "resources": [
        "arn:aws:ec2:us-east-1:123456789012:fleet/fleet-9bb19bc6-60d3-4fd2-ae47-d33e68eafa08"
    ],
    "detail": {
        "description": "m3.large, ami-00068cd7555f543d5, Linux/UNIX: IPv6 is not supported for the instance type 'm3.large'. ",
        "sub-type": "spotFleetRequestConfigurationInvalid"
    }
}
```

`sub-type` に指定できる値は次のとおりです。

`iamFleetRoleInvalid`  
この EC2 フリートには、インスタンスの起動または終了に必要なアクセス許可がありません。

`allLaunchSpecsTemporarilyBlacklisted`  
有効な設定はありません。インスタンスを起動しようとして何回か失敗しました。詳細については、イベントの説明をご覧ください。

`spotInstanceCountLimitExceeded`  
起動できるスポットインスタンスの数の上限に達しました。

`spotFleetRequestConfigurationInvalid`  
設定が有効ではありません。詳細については、イベントの説明をご覧ください。

## スポットフリートイベントタイプ
<a name="spot-fleet-event-types"></a>

5 つのスポットフリートイベントタイプがあります。イベントタイプごとに、いくつかのサブタイプがあります。

**Topics**
+ [

### EC2 スポットフリートの状態の変更
](#spot-fleet-state-change)
+ [

### EC2 スポットフリートのスポットインスタンスリクエストの変更
](#spot-fleet-spot-instance-request-change)
+ [

### EC2 スポットフリートインスタンスの変更
](#spot-fleet-instance-change)
+ [

### EC2 スポットフリート情報
](#spot-fleet-info)
+ [

### EC2 スポットフリートのエラー
](#spot-fleet-config-not-valid)

### EC2 スポットフリートの状態の変更
<a name="spot-fleet-state-change"></a>

スポットフリートは、スポットフリートの状態が変更されたときに `EC2 Spot Fleet State Change` イベントを Amazon EventBridge に送信します。

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

```
{
    "version": "0",
    "id": "d1af1091-6cc3-2e24-203a-3b870e455d5b",
    "detail-type": "EC2 Spot Fleet State Change",
    "source": "aws.ec2spotfleet",
    "account": "123456789012",
    "time": "2020-11-09T08:57:06Z",
    "region": "us-east-1",
    "resources": [
        "arn:aws:ec2:us-east-1:123456789012:spot-fleet-request/sfr-4b6d274d-0cea-4b2c-b3be-9dc627ad1f55"
    ],
    "detail": {
        "sub-type": "submitted"
    }
}
```

`sub-type` に指定できる値は次のとおりです。

`active`  
このスポットフリートリクエストは検証済みです。Amazon EC2 は実行中のインスタンスを目標数分、確保しようとしています。

`cancelled`  
このスポットフリートリクエストはキャンセルされており、実行中のインスタンスはありません。スポットフリートは、そのインスタンスが終了されてから 2 日後に削除されます。

`cancelled_running`  
このスポットフリートリクエストはキャンセルされており、追加のインスタンスは起動されません。その既存のインスタンスは、中断または終了されるまで実行され続けます。リクエストは、すべてのインスタンスが中断されるか終了されるまで、この状態のままになります。

`cancelled_terminating`  
このスポットフリートリクエストはキャンセルされており、対象のインスタンスを終了中です。リクエストは、すべてのインスタンスが終了されるまで、この状態のままになります。

`expired`  
スポットフリートリクエストの有効期限が切れました。このリクエストが `TerminateInstancesWithExpiration` セットを使用して作成されている場合、後続の `terminated` イベントは、インスタンスが終了済みなことを示します。

`modify_in_progress`  
スポットフリートリクエストは変更中です。リクエストは、この変更が完全に処理されるまで、同じ状態を維持します。

`modify_succeeded`  
スポットフリートリクエストが変更されました。

`submitted`  
スポットフリートリクエストは評価中です。Amazon EC2 は目標数のインスタンスを起動する準備をしています。

`progress`  
スポットフリートリクエストは受理中です。

### EC2 スポットフリートのスポットインスタンスリクエストの変更
<a name="spot-fleet-spot-instance-request-change"></a>

スポットフリートは、フリート内のスポットインスタンスリクエストの状態が変更されたときに `EC2 Spot Fleet Spot Instance Request Change` イベントを Amazon EventBridge に送信します。

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

```
{
    "version": "0",
    "id": "cd141ef0-14af-d670-a71d-fe46e9971bd2",
    "detail-type": "EC2 Spot Fleet Spot Instance Request Change",
    "source": "aws.ec2spotfleet",
    "account": "123456789012",
    "time": "2020-11-09T08:53:21Z",
    "region": "us-east-1",
    "resources": [
        "arn:aws:ec2:us-east-1:123456789012:spot-fleet-request/sfr-a98d2133-941a-47dc-8b03-0f94c6852ad1"
    ],
    "detail": {
        "spot-instance-request-id": "sir-a2w9gc5h",
        "description": "SpotInstanceRequestId sir-a2w9gc5h, PreviousState: cancelled_running",
        "sub-type": "cancelled"
    }
}
```

`sub-type` に指定できる値は次のとおりです。

`active`  
スポットインスタンスリクエストは受理された状態であり、スポットインスタンスの関連付けが完了しています。

`cancelled`  
スポットインスタンスリクエストがキャンセルされている、あるいは、そのリクエストの有効期限が切れています。

`disabled`  
スポットインスタンスが停止されています。

`submitted`  
スポットインスタンスリクエストは送信済みです。

### EC2 スポットフリートインスタンスの変更
<a name="spot-fleet-instance-change"></a>

スポットフリートは、フリート内のインスタンスの状態が変更されたときに `EC2 Spot Fleet Instance Change` イベントを Amazon EventBridge に送信します。

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

```
{
    "version": "0",
    "id": "11591686-5bd7-bbaa-eb40-d46529c2710f",
    "detail-type": "EC2 Spot Fleet Instance Change",
    "source": "aws.ec2spotfleet",
    "account": "123456789012",
    "time": "2020-11-09T07:25:02Z",
    "region": "us-east-1",
    "resources": [
        "arn:aws:ec2:us-east-1:123456789012:spot-fleet-request/sfr-c8a764a4-bedc-4b62-af9c-0095e6e3ba61"
    ],
    "detail": {
        "instance-id": "i-08b90df1e09c30c9b",
        "description": "{\"instanceType\":\"r4.2xlarge\",\"image\":\"ami-032930428bf1abbff\",\"productDescription\":\"Linux/UNIX\",\"availabilityZone\":\"us-east-1a\"}",
        "sub-type": "launched"
    }
}
```

`sub-type` に指定できる値は次のとおりです。

`launched`  
新しいインスタンスが起動されました。

`terminated`  
このインスタンスは終了しています。

`termination_notified`  
フリートのターゲット容量のスケールダウン中 (ターゲット容量 が 4 から 3 に変更される場合など) に、Amazon EC2 によってスポットインスタンスが終了されたので、インスタンス終了通知が送信されました。

### EC2 スポットフリート情報
<a name="spot-fleet-info"></a>

スポットフリートは、受理中にエラーが発生したときに `EC2 Spot Fleet Information` イベントを Amazon EventBridge に送信します。情報イベントは、フリートがターゲット容量を満たすことをブロックしません。

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

```
{
    "version": "0",
    "id": "73a60f70-3409-a66c-635c-7f66c5f5b669",
    "detail-type": "EC2 Spot Fleet Information",
    "source": "aws.ec2spotfleet",
    "account": "123456789012",
    "time": "2020-11-08T20:56:12Z",
    "region": "us-east-1",
    "resources": [
        "arn:aws:ec2:us-east-1:123456789012:spot-fleet-request/sfr-2531ea06-af18-4647-8757-7d69c94971b1"
    ],
    "detail": {
        "description": "r3.8xlarge, ami-032930428bf1abbff, Linux/UNIX, us-east-1a, Spot bid price is less than Spot market price $0.5291",
        "sub-type": "launchSpecUnusable"
    }
}
```

`sub-type` に指定できる値は次のとおりです。

`fleetProgressHalted`  
すべての起動仕様の料金は、スポット料金を下回っているため無効です (すべての起動仕様が `launchSpecUnusable` イベントを生成しました)。スポット料金が変更されると、起動仕様が有効になる場合があります。

`launchSpecTemporarilyBlacklisted`  
設定が有効ではなく、インスタンスを起動しようとして何回か失敗しました。詳細については、イベントの説明をご覧ください。

`launchSpecUnusable`  
この起動仕様の料金は、スポット料金を下回っているため無効です。

`registerWithLoadBalancersFailed`  
ロードバランサーにインスタンスを登録しようとして失敗しました。詳細については、イベントの説明をご覧ください。

### EC2 スポットフリートのエラー
<a name="spot-fleet-config-not-valid"></a>

スポットフリートは、受理中にエラーが発生したときに `EC2 Spot Fleet Error` イベントを Amazon EventBridge に送信します。エラーイベントは、フリートがターゲット容量を満たすことをブロックします。

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

```
{
    "version": "0",
    "id": "10adc4e7-675c-643e-125c-5bfa1b1ba5d2",
    "detail-type": "EC2 Spot Fleet Error",
    "source": "aws.ec2spotfleet",
    "account": "123456789012",
    "time": "2020-11-09T06:56:07Z",
    "region": "us-east-1",
    "resources": [
        "arn:aws:ec2:us-east-1:123456789012:spot-fleet-request/sfr-38725d30-25f1-4f30-83ce-2907c56dba17"
    ],
    "detail": {
        "description": "r4.2xlarge, ami-032930428bf1abbff, Linux/UNIX: The associatePublicIPAddress parameter can only be specified for the network interface with DeviceIndex 0. ",
        "sub-type": "spotFleetRequestConfigurationInvalid"
    }
}
```

`sub-type` に指定できる値は次のとおりです。

`iamFleetRoleInvalid`  
このスポットフリートには、インスタンスの起動または終了に必要なアクセス許可がありません。

`allLaunchSpecsTemporarilyBlacklisted`  
有効な設定はありません。インスタンスを起動しようとして何回か失敗しました。詳細については、イベントの説明をご覧ください。

`spotInstanceCountLimitExceeded`  
起動できるスポットインスタンスの数の上限に達しました。

`spotFleetRequestConfigurationInvalid`  
設定が有効ではありません。詳細については、イベントの説明をご覧ください。

# EC2 フリートのチュートリアル
<a name="fleet-tutorials"></a>

EC2 フリートを設定するには、さまざまな方法があります。選択する設定は、特定のユースケースによって異なります。

以下のチュートリアルでは、考えられるユースケースの一部について説明し、その実装に必要なタスクについて説明します。


| ユースケース | チュートリアルへのリンク | 
| --- | --- | 
|  **インスタンスの重み付けを使用して、EC2 フリートの可用性とパフォーマンスを管理します。** インスタンスの重み付けでは、EC2 フリート内の各インスタンスタイプに重みを割り当てて、それぞれのコンピューティングキャパシティとパフォーマンスを相対的に表します。この重みに基づいて、目的のターゲットキャパシティを満たしている限り、指定されたインスタンスタイプを任意に組み合わせて使用できます。  | [チュートリアル: インスタンスの重み付けを使用するように EC2 フリートを設定する](ec2-fleet-instance-weighting-walkthrough.md) | 
|  **オンデマンドキャパシティを使用して、ピーク時の可用性を確保します。また、追加のスポットキャパシティを低コストで活用します。** ピーク時に使用可能なキャパシティを確保するために、プライマリキャパシティとしてオンデマンドインスタンスを使用するように EC2 フリートを設定します。また、Amazon EC2 がキャパシティを必要とする場合、スポットインスタンスが中断される可能性があることに留意しながら、スポットインスタンスにある程度のキャパシティを割り当てて、割引料金の恩恵を受けることができます。  | [チュートリアル: オンデマンドインスタンスをプライマリキャパシティとして使用するように EC2 フリートを設定する](ec2-fleet-on-demand-walkthrough.md) | 
|  **キャパシティ予約を使用して、オンデマンドインスタンスのコンピューティングキャパシティを予約します。** オンデマンドインスタンスを起動するときに、`targeted` キャパシティ予約を最初に使用するように EC2 フリートを設定します。キャパシティ要件が厳しく、一定レベルの長期または短期のキャパシティ保証を必要とするビジネスクリティカルなワークロードを実行している場合は、キャパシティ予約を作成して、必要なときに、必要な限り常に Amazon EC2 キャパシティにアクセスできるようにすることをお勧めします。  | [チュートリアル: ターゲットのキャパシティ予約を使用してオンデマンドインスタンスを起動するように EC2 フリートを設定する](ec2-fleet-launch-on-demand-instances-using-targeted-capacity-reservations-walkthrough.md) | 
|  **キャパシティブロックを使用して、ML ワークロードの非常に需要の高い GPU インスタンスを予約します。** キャパシティブロックにインスタンスを起動するように EC2 フリートを設定します。  | [チュートリアル: キャパシティブロックにインスタンスを起動するように EC2 フリートを設定する](ec2-fleet-launch-instances-capacity-blocks-walkthrough.md) | 
|  **中断可能なキャパシティ予約を使用して、アイドル状態のキャパシティを AWS 組織全体で一時的に再利用してコストを削減します。** AWS 組織内の予備容量を表す中断可能なキャパシティ予約に対してインスタンスを起動するように EC2 フリートを設定します。キャパシティ所有者はいつでもキャパシティを再利用できます。EC2 は再利用されると、2 分間の通知後にインスタンスを終了します。  | [チュートリアル: キャパシティ予約に対してインスタンスを起動するように EC2 フリートを設定する](ec2-fleet-launch-instances-interruptible-cr-walkthrough.md) | 

# チュートリアル: インスタンスの重み付けを使用するように EC2 フリートを設定する
<a name="ec2-fleet-instance-weighting-walkthrough"></a>

このチュートリアルでは、サンプル株式会社という名前の架空の会社を使用して、インスタンスの分量指定を使った EC2 フリートリクエストのプロセスを説明します。

## 目的
<a name="ec2-fleet-instance-weighting-walkthrough-objective"></a>

製薬会社であるサンプル株式会社は、癌と闘うために使用できる可能性のある化合物をスクリーニングするために Amazon EC2 の計算処理能力を活用したいと考えています。

## 計画
<a name="ec2-fleet-instance-weighting-walkthrough-planning"></a>

サンプル株式会社はまず、「[Spot Best Practices](https://aws.amazon.com/ec2/spot/getting-started/#bestpractices)」を確認します。次に、サンプル株式会社は EC2 フリート に関する要件を確認します。

**インスタンスタイプ**  
サンプル株式会社には、60 GB 以上のメモリと 8 つの仮想 CPU (vCPU) で最適に実行される、計算能力とメモリに負担がかかるアプリケーションがあります。同社は、できるだけ低価格でアプリケーション用のこれらのリソースを最大化したいと考えています。サンプル株式会社は、以下のいずれかの EC2 インスタンスタイプがそのニーズを満たすと判断します。


| インスタンスタイプ | メモリ (GiB) | vCPU | 
| --- | --- | --- | 
|  r3.2xlarge  |  61  |  8  | 
|  r3.4xlarge  |  122  |  16  | 
|  r3.8xlarge  |  244  |  32  | 

**ユニット単位のターゲット容量**  
インスタンスの分量指定を使用すると、ターゲット容量はインスタンスの数 (デフォルト)、またはコア (vCPU)、メモリ (GiB) とストレージ (GB) との要素の組み合わせで表すことができます。アプリケーションのベース (60 GB の RAM と 8 個の vCPU) を 1 ユニットとして考えることで、サンプル株式会社はこの量の 20 倍で十分ニーズに合うと決定します。これにより、会社は EC2 フリートリクエストのターゲットキャパシティを 20 ユニットに設定します。

**インスタンスの分量**  
ターゲット容量の決定後、サンプル株式会社はインスタンスの分量を計算します。各インスタンスタイプのインスタンスの分量を計算することは、以下のように、ターゲット容量に達するために必要な各インスタンスタイプのユニットの数を決定することです。
+ r3.2xlarge (61.0 GB、8 個の vCPU) = 1/20 ユニット
+ r3.4xlarge (122.0 GB、16 個の vCPU) = 2/20 ユニット
+ r3.8xlarge (244.0 GB、32 個の vCPU) = 4/20 ユニット

これよりサンプル株式会社は、1、2 と 4 のインスタンス分量を EC2 フリート リクエストのそれぞれの起動設定に割り当てます。

**ユニット時間あたりの価格**  
サンプル株式会社は、料金の出発点としてインスタンス時間あたりの「[オンデマンド料金](https://aws.amazon.com/ec2/pricing/)」を使用します。最近のスポット料金または 2 つの組み合わせを使用することもできます。ユニット時間あたりの料金を計算するために、インスタンス時間あたりの出発点の料金を分量で割ります。次に例を示します。


| インスタンスタイプ | オンデマンド価格 | インスタンスの分量 | ユニット時間あたりの価格 | 
| --- | --- | --- | --- | 
|  r3.2xLarge  |  \$10.7  |  1  |  \$10.7  | 
|  r3.4xLarge  |  \$11.4  |  2  |  \$10.7  | 
|  r3.8xLarge  |  \$12.8  |  4  |  \$10.7  | 

サンプル株式会社は、ユニット時間あたりのグローバルな料金として 0.7 USD を使用し、3 つのインスタンスタイプすべてで競争力を高めることもできます。また、`r3.8xlarge` の起動条件のなかで、1 ユニット時間あたりの全体料金を 0.7 USD、そして 1 ユニット時間あたりの指定入力料金を 0.9 USD とすることもできます。

## アクセス許可の確認
<a name="ec2-fleet-instance-weighting-walkthrough-permissions"></a>

EC2 フリート を作成する前に、サンプル株式会社は必要なアクセス許可の IAM ロールがあることを確認します。詳細については、「[EC2 フリートの前提条件](ec2-fleet-prerequisites.md)」を参照してください。

## 起動テンプレートの作成
<a name="ec2-fleet-instance-weighting-create-launch-template"></a>

次に、Example Corp は起動テンプレートを作成します。起動テンプレート ID は、次のステップで使用されます。詳細については、「[Amazon EC2 起動テンプレートを作成する](create-launch-template.md)」を参照してください。

## EC2 フリート の作成
<a name="ec2-fleet-instance-weighting-walkthrough-request"></a>

サンプル株式会社は、その EC2 フリート用に次の設定を使用して `config.json` ファイルを作成します。次の例では、リソース識別子を独自のリソース識別子に置き換えます。

```
{ 
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateId": "lt-07b3bc7625cdab851", 
                "Version": "1"
            }, 
            "Overrides": [
                {
                    "InstanceType": "r3.2xlarge", 
                    "SubnetId": "subnet-482e4972", 
                    "WeightedCapacity": 1
                },
                {
                    "InstanceType": "r3.4xlarge", 
                    "SubnetId": "subnet-482e4972", 
                    "WeightedCapacity": 2
                },
                {
                    "InstanceType": "r3.8xlarge", 
                    "MaxPrice": "0.90", 
                    "SubnetId": "subnet-482e4972", 
                    "WeightedCapacity": 4
                }
            ]
        }
    ], 
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 20, 
        "DefaultTargetCapacityType": "spot"
    }
}
```

サンプル株式会社は、次の create-fleet コマンドを使用して EC2 フリート を作成します。[https://docs.aws.amazon.com/cli/latest/reference/ec2/create-fleet.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-fleet.html)

```
aws ec2 create-fleet --cli-input-json file://config.json
```

詳細については、「[EC2 フリートの作成](create-ec2-fleet.md)」を参照してください。

## フルフィルメント
<a name="ec2-fleet-instance-weighting-walkthrough-fulfillment"></a>

配分戦略では、スポットインスタンスの提供元となるスポットキャパシティプールが決定されます。

`lowest-price` 戦略 (デフォルトの戦略) では、受理時にユニットあたりの料金が最低値であるプールから スポットインスタンス が取得されます。20 ユニットの容量を提供するためには、20 個の `r3.2xlarge` インスタンス (20 ÷ 1)、10 個の `r3.4xlarge` インスタンス (20 ÷ 2)、あるいは 5 個の `r3.8xlarge` インスタンス (20 ÷ 4) が EC2 フリート から起動されることになります。

サンプル株式会社が `diversified` 戦略を採用する場合、スポットインスタンス は 3 つのすべてのプールから取得されます。EC2 フリート は、6 個の `r3.2xlarge` インスタンス (6 ユニットを提供)、3 個の `r3.4xlarge` インスタンス (6 ユニットを提供)、そして 2 個の `r3.8xlarge` インスタンス (8 ユニットを提供) の全部で 20 ユニットを起動します。

# チュートリアル: オンデマンドインスタンスをプライマリキャパシティとして使用するように EC2 フリートを設定する
<a name="ec2-fleet-on-demand-walkthrough"></a>

このチュートリアルでは、ABC Online という架空の会社を使用して、プライマリ容量および使用可能な場合はスポット容量としてオンデマンドの EC2 フリートをリクエストするプロセスを説明します。

## 目的
<a name="ec2-fleet-on-demand-walkthrough-objective"></a>

レストラン向け配達会社である ABC Online は、EC2 インスタンスタイプおよび購入オプション間で Amazon EC2 キャパシティをプロビジョンし、必要なスケール、パフォーマンス、コストの実現を目指しています。

## プラン
<a name="ec2-fleet-on-demand-walkthrough-planning"></a>

ABC Online はピーク時に対応するために固定キャパシティを必要としていますが、より低コストで追加キャパシティの恩恵を受けたいと考えています。ABC Online は、EC2 フリートについて以下の要件を設定しました。
+ オンデマンドインスタンス容量 - ABC Online には、ピーク期間のトラフィックに対応できるように、15 個のオンデマンドインスタンスが必要です。
+ スポットインスタンスキャパシティ – 低価格でパフォーマンスを向上させるために、ABC Online は 5 つのスポットインスタンスをプロビジョニングする予定です。

## アクセス許可の確認
<a name="ec2-fleet-on-demand-walkthrough-permissions"></a>

EC2 フリート を作成する前に、ABC Online は必要なアクセス許可の IAM ロールがあることを確認します。詳細については、「[EC2 フリートの前提条件](ec2-fleet-prerequisites.md)」を参照してください。

## 起動テンプレートの作成
<a name="ec2-fleet-on-demand-walkthrough-create-launch-template"></a>

次に、ABC Online によって起動テンプレートが作成されます。起動テンプレート ID は、次のステップで使用されます。詳細については、「[Amazon EC2 起動テンプレートを作成する](create-launch-template.md)」を参照してください。

## EC2 フリート の作成
<a name="ec2-fleet-on-demand-walkthrough-request"></a>

ABC Online は、その EC2 フリート用に次の設定を使用して `config.json` ファイルを作成します。次の例では、リソース識別子を独自のリソース識別子に置き換えます。

```
{
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateId": "lt-07b3bc7625cdab851",
                "Version": "2"
            }

        }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 20,
        "OnDemandTargetCapacity":15,
        "DefaultTargetCapacityType": "spot"
    }
}
```

ABC Online は、次の create-fleet コマンドを使用して EC2 フリート を作成します。[https://docs.aws.amazon.com/cli/latest/reference/ec2/create-fleet.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-fleet.html)

```
aws ec2 create-fleet --cli-input-json file://config.json
```

詳細については、「[EC2 フリートの作成](create-ec2-fleet.md)」を参照してください。

## フルフィルメント
<a name="ec2-fleet-on-demand-walkthrough-fulfillment"></a>

配分戦略により、オンデマンドキャパシティが常に受理され、使用可能なキャパシティがある場合はターゲットキャパシティがスポットとして受理されることが決定されます。

# チュートリアル: ターゲットのキャパシティ予約を使用してオンデマンドインスタンスを起動するように EC2 フリートを設定する
<a name="ec2-fleet-launch-on-demand-instances-using-targeted-capacity-reservations-walkthrough"></a>

このチュートリアルでは実行するべきステップを段階的に解説しています。それにより、EC2 フリートがオンデマンドインスタンスを`targeted`キャパシティー予約で起動できるようにします。

オンデマンドインスタンスの起動時に、最初に`targeted`オンデマンドキャパシティー予約を使用するようにフリートを設定する方法を学習します。また、オンデマンドターゲット容量の合計が使用可能な未使用のキャパシティ予約数を超えた場合、フリートは指定された割り当て戦略を使用して、残りのターゲット容量を起動するインスタンスプールを選択するようにフリートを設定する方法についても学習します。

**EC2 フリートの設定**

このチュートリアルでは、フリートは次のように設定されます。
+ ターゲット容量:10 オンデマンドインスタンス
+ 未使用の合計`targeted`キャパシティー予約:6 (フリートの目標オンデマンド容量である 10 オンデマンドインスタンスを下回っています)
+ キャパシティ予約のプールの数:2 (`us-east-1a`および`us-east-1b`)
+ プールあたりのキャパシティ予約数:3
+ オンデマンド割り当て戦略：`lowest-price`(未使用キャパシティーの予約の数が目標オンデマンド容量より少ない場合、フリートは、オンデマンド配分戦略に基づいて、残りのオンデマンド容量を起動するプールを決定します)。

  また、`lowest-price`割り当て戦略の代わりに`prioritized`割り当て戦略を使用することもできます。

**`targeted`キャパシティ予約にオンデマンドインスタンスを起動するには、次のように、いくつかの手順を実行する必要があります：**
+ [

## ステップ 1: キャパシティー予約を作成する
](#ec2-fleet-odcr-step1)
+ [

## ステップ 2: キャパシティー予約のリソースグループを作成する
](#ec2-fleet-odcr-step2)
+ [

## ステップ 3: キャパシティ予約リソースグループにキャパシティ予約を追加する
](#ec2-fleet-odcr-step3)
+ [

## (オプション) ステップ 4: リソースグループのキャパシティーの予約を表示する
](#ec2-fleet-odcr-step4)
+ [

## ステップ 5: キャパシティ予約が特定のリソースグループをターゲットに指定する起動テンプレートを作成する
](#ec2-fleet-odcr-step5)
+ [

## (オプション) ステップ 6: 起動テンプレートを説明する
](#ec2-fleet-odcr-step6)
+ [

## ステップ 7: EC2 フリートを作成する
](#ec2-fleet-odcr-step7)
+ [

## (オプション) ステップ 8: 未使用のキャパシティ予約の残りの数を表示する
](#ec2-fleet-odcr-step8)

## ステップ 1: キャパシティー予約を作成する
<a name="ec2-fleet-odcr-step1"></a>

[キャパシティー予約の作成](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-capacity-reservation.html)コマンドを使用してキャパシティ予約を作成します。3 つは`us-east-1a`の目的に、別の3つは`us-east-1b`の目的にします。アベイラビリティーゾーンを除き、キャパシティー予約の他の属性は同じです。

**`us-east-1a`での 3 つのキャパシティー予約**

```
aws ec2 create-capacity-reservation \
    --availability-zone us-east-1a \
    --instance-type c5.xlarge \
    --instance-platform Linux/UNIX \
    --instance-count 3 \
    --instance-match-criteria targeted
```

キャパシティー予約 ID の結果の例

```
cr-1234567890abcdef1
```

**`us-east-1b`での 3 つのキャパシティー予約**

```
aws ec2 create-capacity-reservation \
    --availability-zone us-east-1b \
    --instance-type c5.xlarge \
    --instance-platform Linux/UNIX \
    --instance-count 3 \
    --instance-match-criteria targeted
```

キャパシティー予約 ID の結果の例

```
cr-54321abcdef567890
```

## ステップ 2: キャパシティー予約のリソースグループを作成する
<a name="ec2-fleet-odcr-step2"></a>

`resource-groups`サービスを使用する、および[グループを作成する](https://docs.aws.amazon.com/cli/latest/reference/resource-groups/create-group.html)コマンドを使用して、キャパシティー予約のリソースグループを作成します。この例では、プレイスメントグループ名は`my-cr-group`です。リソースグループを作成する必要がある理由の詳細については、[キャパシティ予約を使用して、EC2 フリートのオンデマンドキャパシティを予約する](ec2-fleet-on-demand-capacity-reservations.md)を参照してください。

```
aws resource-groups create-group \
    --name my-cr-group \
    --configuration '{"Type":"AWS::EC2::CapacityReservationPool"}' '{"Type":"AWS::ResourceGroups::Generic", "Parameters": [{"Name": "allowed-resource-types", "Values": ["AWS::EC2::CapacityReservation"]}]}'
```

## ステップ 3: キャパシティ予約リソースグループにキャパシティ予約を追加する
<a name="ec2-fleet-odcr-step3"></a>

`resource-groups`サービス、および[グループリソース](https://docs.aws.amazon.com/cli/latest/reference/resource-groups/group-resources.html)コマンドを使用して、手順 1 で作成したキャパシティ予約をキャパシティ予約リソースグループに追加します。オンデマンドキャパシティ予約は、ARN ごとに参照する必要があります。

```
aws resource-groups group-resources \
    --group my-cr-group \
    --resource-arns \
      arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-1234567890abcdef1 \
      arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-54321abcdef567890
```

 出力の例

```
{
   "Failed": [], 
   "Succeeded": [ 
   "arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-1234567890abcdef1", 
   "arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-54321abcdef567890" 
   ] 
}
```

## (オプション) ステップ 4: リソースグループのキャパシティーの予約を表示する
<a name="ec2-fleet-odcr-step4"></a>

`resource-groups`サービス、および[グループリソースを表示する](https://docs.aws.amazon.com/cli/latest/reference/resource-groups/list-group-resources.html)コマンドを使用して、キャパシティ予約を表示するリソースグループをオプションで記述します。

```
aws resource-groups list-group-resources --group my-cr-group
```

 出力の例

```
{
    "ResourceIdentifiers": [
        {
            "ResourceType": "AWS::EC2::CapacityReservation",
            "ResourceArn": "arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-1234567890abcdef1"
        },
        {
            "ResourceType": "AWS::EC2::CapacityReservation",
            "ResourceArn": "arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-54321abcdef567890"
        }
    ]
}
```

## ステップ 5: キャパシティ予約が特定のリソースグループをターゲットに指定する起動テンプレートを作成する
<a name="ec2-fleet-odcr-step5"></a>

[起動テンプレートを作成する](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-launch-template.html)コマンドを使用して、使用するキャパシティー予約を指定する起動テンプレートを作成します。この例では、フリートは`targeted`キャパシティー予約を使用して、ソースグループに追加されます。したがって、起動テンプレートデータでは、キャパシティ予約が特定のリソースグループをターゲットに指定します。次の例で、プレイスメントグループ名は`my-launch-template`です。

```
aws ec2 create-launch-template \
    --launch-template-name my-launch-template \
    --launch-template-data \
        '{"ImageId": "ami-0123456789example",
          "CapacityReservationSpecification": 
            {"CapacityReservationTarget": 
                { "CapacityReservationResourceGroupArn": "arn:aws:resource-groups:us-east-1:123456789012:group/my-cr-group" }
            }
        }'
```

## (オプション) ステップ 6: 起動テンプレートを説明する
<a name="ec2-fleet-odcr-step6"></a>

[describe-launch-template-versions](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-launch-template-versions.html) コマンドを使用して、オプションで、その設定を表示するための起動テンプレートを説明します。

```
aws ec2 describe-launch-template-versions --launch-template-name my-launch-template
```

 出力の例

```
{
    "LaunchTemplateVersions": [
        {
            "LaunchTemplateId": "lt-01234567890example",
            "LaunchTemplateName": "my-launch-template",
            "VersionNumber": 1,
            "CreateTime": "2021-01-19T20:50:19.000Z",
            "CreatedBy": "arn:aws:iam::123456789012:user/Admin",
            "DefaultVersion": true,
            "LaunchTemplateData": {
                "ImageId": "ami-0947d2ba12ee1ff75",
                "CapacityReservationSpecification": {
                    "CapacityReservationTarget": {
                        "CapacityReservationResourceGroupArn": "arn:aws:resource-groups:us-east-1:123456789012:group/my-cr-group"
                    }
                }
            }
        }
    ]
}
```

## ステップ 7: EC2 フリートを作成する
<a name="ec2-fleet-odcr-step7"></a>

起動するインスタンスの設定情報を指定する EC2 フリートを作成します。以下の EC2 フリート設定は、この例に関連する設定のみを示しています。起動テンプレート`my-launch-template`は、ステップ 5 で作成した起動テンプレートです。2 つのインスタンスプールがあり、それぞれ同じインスタンスタイプ (`c5.xlarge`)ですが、異なるアベイラビリティーゾーン (`us-east-1a`および`us-east-1b`)にあります。料金は、アベイラビリティーゾーンごとではなく、リージョンに対して定義されるため、インスタンスプールの料金は同じです。合計ターゲット容量は 10 で、デフォルトのターゲット容量タイプは`on-demand`です。オンデマンド配分戦略は`lowest-price`です。キャパシティ予約の使用戦略は`use-capacity-reservations-first`です。

**注記**  
フリートタイプは`instant`である必要があります。他のフリートタイプは`use-capacity-reservations-first`をサポートしていません。

```
{
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateName": "my-launch-template",
                "Version": "1"
            },
            "Overrides": [
               {
                   "InstanceType": "c5.xlarge",
                   "AvailabilityZone": "us-east-1a"
               },
               {
                    "InstanceType": "c5.xlarge",
                    "AvailabilityZone": "us-east-1b"
               }
            ]
        }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 10,
        "DefaultTargetCapacityType": "on-demand"
    },
    "OnDemandOptions": {
        "AllocationStrategy": "lowest-price",
        "CapacityReservationOptions": {
             "UsageStrategy": "use-capacity-reservations-first"
         }
    },
    "Type": "instant"
}
```

上記の設定を使用して`instant`フリートを作成すると、目標容量を満たすために以下の 10 個のインスタンスが起動されます。
+ 次のように、6 つのオンデマンドインスタンスを起動するために、キャパシティ予約が最初に使用されます。
  + 3 つのオンデマンドインスタンスが、`us-east-1a`での 3 つの`c5.xlarge``targeted`キャパシティー予約で起動します。
  + 3 つのオンデマンドインスタンスが、`us-east-1b`での 3 つの`c5.xlarge``targeted`キャパシティー予約で起動します。
+ ターゲット容量を満たすために、4 つの追加のオンデマンドインスタンスは、オンデマンド配分戦略 (この例では`lowest-price`) に従って通常のオンデマンド容量で起動します。ただし、プールの価格は同じであるため (価格はアベイラビリティーゾーンごとではなく、リージョンごとであるため)、フリートは残りの 4 つのオンデマンドインスタンスをいずれかのプールで起動します。

## (オプション) ステップ 8: 未使用のキャパシティ予約の残りの数を表示する
<a name="ec2-fleet-odcr-step8"></a>

フリートの起動後、[describe-capacity-reservations](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-capacity-reservations.html) を実行して、未使用のキャパシティー予約の残りの数を確認できます。この例では、以下のレスポンスが表示されます。これは、すべてのプール内のすべてのキャパシティ予約が使用されたことを示しています。

```
{ "CapacityReservationId":  "cr-111",
     "InstanceType":  "c5.xlarge",  
     "AvailableInstanceCount":  0
}

 { "CapacityReservationId":  "cr-222",
     "InstanceType":  "c5.xlarge", 
     "AvailableInstanceCount":  0
}
```

# チュートリアル: キャパシティブロックにインスタンスを起動するように EC2 フリートを設定する
<a name="ec2-fleet-launch-instances-capacity-blocks-walkthrough"></a>

このチュートリアルでは実行すべきステップを段階的に解説しています。これらのステップを実行すると、EC2 フリートがキャパシティブロックでインスタンスを起動します。

ほとんどの場合、EC2 フリートリクエストのターゲットキャパシティは、ターゲットとするキャパシティブロック予約の使用可能なキャパシティ以下でなければなりません。キャパシティブロック予約の制限を超えるターゲットキャパシティリクエストは受理されません。ターゲットキャパシティリクエストがキャパシティブロック予約の制限を超えると、キャパシティブロック予約の制限を超えるキャパシティに対して、`Insufficient Capacity Exception` が発生します。

**注記**  
キャパシティブロックの場合、EC2 フリートは希望するターゲットキャパシティの残りをオンデマンドインスタンスの起動にフォールバックしません。

EC2 フリートが利用可能なキャパシティブロック予約で要求されたターゲットキャパシティを満たすことができない場合、EC2 フリートは可能な限り多くの容量を満たし、起動できたインスタンスを返します。すべてのインスタンスがプロビジョニングされるまで EC2 フリート の呼び出しを繰り返すことができます。

EC2 フリートリクエストを設定したら、キャパシティブロック予約の開始日まで待つ必要があります。まだ開始されていないキャパシティブロックで EC2 フリートに起動するようリクエストすると、`Insufficient Capacity Error` が発生します。

キャパシティブロック予約が有効になったら、EC2 フリートの API コールを行い、選択したパラメータに基づいてキャパシティブロックにインスタンスをプロビジョニングできます。キャパシティブロックで実行されているインスタンスは、手動で停止あるいは終了するまで、またはキャパシティブロック予約が完了して Amazon EC2 がインスタンスを終了するまで実行され続けます。

キャパシティーブロックの詳細については、[機械学習用のキャパシティブロック](ec2-capacity-blocks.md) を参照してください。

**考慮事項**
+ キャパシティブロックへのインスタンスの起動では、`instant` タイプの EC2 フリートリクエストのみがサポートされます。詳細については、「[タイプが instant の EC2 フリートを設定する](instant-fleet.md)」を参照してください。
+ 同じ EC2 フリートリクエストでは、複数のキャパシティブロックはサポートされません。
+ `OnDemandTargetCapacity` または `SpotTargetCapacity` を使用しながら `DefaultTargetCapacity` として `capacity-block` を設定することはサポートされていません。
+ `DefaultTargetCapacityType` が `capacity-block` に設定されている場合、`OnDemandOptions::CapacityReservationOptions` は提供できません。例外が発生します。

**キャパシティブロックにインスタンスを起動するように EC2 フリートを設定するには**

1. **起動テンプレートを作成します。**

   起動テンプレートで、次の操作を行います。
   + `InstanceMarketOptionsRequest` の場合、`MarketType` を `capacity-block` に設定します。
   + キャパシティブロックの予約をターゲットにするには、`CapacityReservationID` にキャパシティブロックの予約 ID を指定します。

   起動テンプレートの名前とバージョンを書き留めます。この情報は、次のステップで使用します。

   起動テンプレートの作成の詳細については、「[Amazon EC2 起動テンプレートを作成する](create-launch-template.md)」を参照してください。

1. **EC2 フリートを設定します。**

   EC2 フリート用に次の設定を使用して `config.json` ファイルを作成します。次の例では、リソース識別子を独自のリソース識別子に置き換えます。

   EC2 フリートの設定の詳細については、「[EC2 フリートの作成](create-ec2-fleet.md)」を参照してください。

   ```
   { 
       "LaunchTemplateConfigs": [
           {
               "LaunchTemplateSpecification": {
                   "LaunchTemplateName": "CBR-launch-template", 
                   "Version": "1"
               }, 
               "Overrides": [
                   {
                       "InstanceType": "p5.48xlarge", 
                       "AvailabilityZone": "us-east-1a"   
                   },
               ]
           }
       ], 
       "TargetCapacitySpecification": {
           "TotalTargetCapacity": 10, 
           "DefaultTargetCapacityType": "capacity-block"
       },
       "Type": "instant"
   }
   ```

1. **フリートを起動します。**

   次の [create-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-fleet.html) コマンドを使用します。

   ```
   aws ec2 create-fleet --cli-input-json file://config.json
   ```

   詳細については、「[EC2 フリートの作成](create-ec2-fleet.md#create-ec2-fleet-procedure)」を参照してください。

# チュートリアル: キャパシティ予約に対してインスタンスを起動するように EC2 フリートを設定する
<a name="ec2-fleet-launch-instances-interruptible-cr-walkthrough"></a>

このチュートリアルでは実行すべきステップを段階的に解説しています。これらのステップを実行すると、EC2 フリートが中断可能なキャパシティ予約に対してインスタンスを起動します。

中断可能なキャパシティ予約は、AWS 組織内のオンデマンドキャパシティ予約の所有者によって貸与された予備のキャパシティを表します。これらの予約では、キャパシティ所有者が 2 分間の中断通知でいつでもキャパシティを再利用できるため、中断可能なワークロードに適しています。その後、EC2 はインスタンスを終了します。中断可能なキャパシティ予約の詳細については、「[中断可能なキャパシティ予約](interruptible-capacity-reservations.md)」を参照してください。

EC2 フリートリクエストのターゲットキャパシティは、ターゲットとする中断可能なキャパシティ予約の使用可能なキャパシティ以下でなければなりません。ターゲットキャパシティリクエストが中断可能なキャパシティ予約の使用可能なキャパシティを超えると、EC2 フリートはできるだけ多くのインスタンスを起動し、起動されたインスタンスを API レスポンスで報告します。

中断可能なキャパシティ予約で実行されているインスタンスは、手動で停止または終了するか、キャパシティ所有者がキャパシティを再利用するまで実行され続けます。キャパシティ所有者がキャパシティを再利用すると、Amazon EC2 はインスタンス終了の 2 分前に Amazon EventBridge 通知を送信します。

## 考慮事項
<a name="ec2-fleet-interruptible-cr-considerations"></a>
+ キャパシティ予約へのインスタンスの起動については、`instant` タイプの EC2 フリートリクエストのみがサポートされます。
+ `OnDemandTargetCapacity` または `SpotTargetCapacity` を使用する際にさらに `reserved-capacity` を `DefaultTargetCapacityType` として 設定することはサポートされていません。
+ それぞれが異なる中断可能なキャパシティ予約をターゲットとする複数の起動テンプレートを指定すると、EC2 フリートは一致するすべての予約にインスタンスをプロビジョニングします。
+ 中断可能なキャパシティ予約の場合、EC2 フリートは希望するターゲットキャパシティの残りをオンデマンドインスタンスまたはスポットインスタンスの起動にフォールバックしません。

## アクセス許可の確認
<a name="ec2-fleet-interruptible-cr-verify-permissions"></a>

EC2 フリート を作成する前に、必要なアクセス許可が含まれている IAM ロールがあることを確認します。詳細については、「[EC2 フリートの前提条件](ec2-fleet-prerequisites.md)」を参照してください。

中断可能なキャパシティ予約に対してインスタンスを起動するには、次の手順を実行する必要があります。

## ステップ 1: 起動テンプレートを作成する
<a name="ec2-fleet-interruptible-cr-step1"></a>

[create-launch-template](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-launch-template.html) コマンドを使用して、ターゲットにする中断可能なキャパシティ予約が指定される起動テンプレートを作成します。起動テンプレートで、`MarketType` を `interruptible-capacity-reservation` に設定し、中断可能なキャパシティ予約の `CapacityReservationId` を指定します。

起動テンプレート設定の例: 

```
{
    "LaunchTemplateName": "interruptible-cr-launch-template",
    "LaunchTemplateData": {
        "InstanceType": "m5.large",
        "ImageId": "ami-0abcdef1234567890",
        "CapacityReservationSpecification": {
            "CapacityReservationTarget": {
                "CapacityReservationId": "cr-0123456789abcdef0"
            }
        },
        "InstanceMarketOptions": {
            "MarketType": "interruptible-capacity-reservation"
        }
    }
}
```

 出力の例

```
{
    "LaunchTemplate": {
        "LaunchTemplateId": "lt-0123456789example",
        "LaunchTemplateName": "interruptible-cr-launch-template",
        "CreateTime": "2026-03-12T10:00:00.000Z",
        "CreatedBy": "arn:aws:iam::123456789012:user/Admin",
        "DefaultVersionNumber": 1,
        "LatestVersionNumber": 1
    }
}
```

詳細については、「[Amazon EC2 起動テンプレートを作成する](create-launch-template.md)」を参照してください。

## ステップ 2: EC2 フリートを設定する
<a name="ec2-fleet-interruptible-cr-step2"></a>

起動テンプレートとターゲットキャパシティが指定されるように EC2 フリートの設定ファイルを作成します。次の設定では、ステップ 1 で作成した起動テンプレート `interruptible-cr-launch-template` を使用します。

`reserved-capacity` を `DefaultTargetCapacityType` として使用する場合は、`ReservationType` が `interruptible-capacity-reservation` に設定されている `ReservedCapacityOptions` を指定する必要があります。

以下の内容で `config.json` という名前のファイルを作成します。

```
{
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateName": "interruptible-cr-launch-template",
                "Version": "1"
            },
            "Overrides": [
                {
                    "InstanceType": "m5.large",
                    "AvailabilityZone": "us-east-1a"
                }
            ]
        }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 10,
        "DefaultTargetCapacityType": "reserved-capacity"
    },
    "ReservedCapacityOptions": {
        "ReservationType": ["interruptible-capacity-reservation"]
    },
    "Type": "instant"
}
```

主な設定パラメータ:


| パラメータ | 説明 | 
| --- | --- | 
| DefaultTargetCapacityType | リザーブドキャパシティに対してインスタンスを起動する必要があることを示すには、reserved-capacity に設定します。 | 
| ReservedCapacityOptions | リザーブドキャパシティのタイプを指定します。中断可能なキャパシティ予約の場合は、ReservationType を ["interruptible-capacity-reservation"] に設定します。 | 
| Type | instant に設定する必要があります。中断可能なキャパシティ予約では、インスタントフリートのみがサポートされています。 | 

## ステップ 3: フリートを起動して結果を表示する
<a name="ec2-fleet-interruptible-cr-step3"></a>

[create-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-fleet.html) コマンドを使用してフリートを作成します。

```
aws ec2 create-fleet \
    --cli-input-json file://config.json
```

上記の設定を使用して `instant` フリートを作成すると、EC2 フリートはターゲットキャパシティを満たすために、中断可能なキャパシティ予約に対して 10 個のインスタンスを起動します。

**注記**  
フリートがターゲットキャパシティを完全には満たせない場合、レスポンスには、起動されたインスタンスと、満たされていないキャパシティに関するエラーが含まれます。

 出力の例

```
{
    "FleetId": "fleet-12345678-1234-1234-1234-123456789012",
    "Instances": [
        {
            "LaunchTemplateAndOverrides": {
                "LaunchTemplateSpecification": {
                    "LaunchTemplateId": "lt-0123456789example",
                    "Version": "1"
                },
                "Overrides": {
                    "InstanceType": "m5.large",
                    "AvailabilityZone": "us-east-1a"
                }
            },
            "Lifecycle": "interruptible-capacity-reservation",
            "InstanceIds": [
                "i-0123456789example1",
                "i-0123456789example2",
                "i-0123456789example3",
                "i-0123456789example4",
                "i-0123456789example5",
                "i-0123456789example6",
                "i-0123456789example7",
                "i-0123456789example8",
                "i-0123456789example9",
                "i-0123456789example0"
            ],
            "InstanceType": "m5.large",
            "Platform": "Linux/UNIX"
        }
    ],
    "Errors": []
}
```

詳細については、「[EC2 フリートの作成](create-ec2-fleet.md)」を参照してください。

## クリーンアップ
<a name="ec2-fleet-interruptible-cr-cleanup"></a>

料金の発生を防ぐため、不要になったインスタンスは終了させてください。また、キャパシティ所有者がキャパシティを再利用すると、EC2 は中断可能なキャパシティ予約に対して起動されたインスタンスを自動的に終了させるので注意してください。

## 関連リソース
<a name="ec2-fleet-interruptible-cr-related-resources"></a>
+ [中断可能なキャパシティ予約](interruptible-capacity-reservations.md)
+ [EC2 オンデマンドキャパシティ予約を使用してコンピューティングキャパシティを予約](ec2-capacity-reservations.md)
+ [EC2 フリートの操作](manage-ec2-fleet.md)
+ [EC2 フリートの作成](create-ec2-fleet.md)
+ [Amazon EC2 起動テンプレートにインスタンス起動パラメータを保存する](ec2-launch-templates.md)

# EC2 フリートの CLI 設定の例
<a name="ec2-fleet-examples"></a>

以下のように、JSON ファイルに EC2 フリート設定を定義し、[create-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-fleet.html) コマンドでそのファイルを参照して、フリートを作成できます。

```
aws ec2 create-fleet --cli-input-json file://file_name.json
```

以下の例は、EC2 フリートのさまざまなユースケースの起動設定を示しています。設定パラメータの詳細については、「 コマンドリファレンス」の [create-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-fleet.html) を参照してください。

**Topics**
+ [

## 例 1: スポットインスタンスをデフォルト購入オプションとして起動する
](#ec2-fleet-config1)
+ [

## 例 2: オンデマンドインスタンスをデフォルト購入オプションとして起動する
](#ec2-fleet-config2)
+ [

## 例 3: オンデマンドインスタンスをプライマリ容量として起動する
](#ec2-fleet-config3)
+ [

## 例 4: 複数のキャパシティー予約を使用して オンデマンドインスタンス を起動する
](#ec2-fleet-config5)
+ [

## 例 5: 合計ターゲット容量が未使用キャパシティーの予約の数を超えたときに、キャパシティーの予約を使用してオンデマンドインスタンスを起動する
](#ec2-fleet-config6)
+ [

## 例 6: ターゲットのキャパシティー予約を使用してオンデマンドインスタンスを起動する
](#ec2-fleet-config7)
+ [

## 例 7: 容量の再調整を設定して代替スポットインスタンスを起動する
](#ec2-fleet-config8)
+ [

## 例 8: 容量最適化フリートでスポットインスタンスを起動する
](#ec2-fleet-config9)
+ [

## 例 9: 優先順位のある容量最適化フリートでスポットインスタンスを起動する
](#ec2-fleet-config10)
+ [

## 例 10: price-capaity-optimized フリートでスポットインスタンスを起動する
](#ec2-fleet-config11)
+ [

## 例 11: 属性ベースのインスタンスタイプの選択を設定する
](#ec2-fleet-config12)

タイプ `instant` のフリートに対する他の CLI の例については、「[タイプが instant の EC2 フリートを設定する](instant-fleet.md)」を参照してください。

## 例 1: スポットインスタンスをデフォルト購入オプションとして起動する
<a name="ec2-fleet-config1"></a>

次の例では、EC2 フリートで必要な最小限のパラメータ (起動テンプレート、ターゲットキャパシティ、デフォルト購入オプション) を指定します。起動テンプレートは、起動テンプレート ID とバージョン番号によって識別されます。フリートのターゲット容量は 2 インスタンスであり、デフォルト購入オプションは `spot` です。この結果、フリートは 2 スポットインスタンス を起動します。

```
{
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateId": "lt-0e8c754449b27161c",
                "Version": "1"
            }

        }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 2,
        "DefaultTargetCapacityType": "spot"
    }
}
```

## 例 2: オンデマンドインスタンスをデフォルト購入オプションとして起動する
<a name="ec2-fleet-config2"></a>

次の例では、EC2 フリート で必要な最小限のパラメータ (起動テンプレート、ターゲット容量、デフォルト購入オプション) を指定します。起動テンプレートは、起動テンプレート ID とバージョン番号によって識別されます。フリートのターゲット容量は 2 インスタンスであり、デフォルト購入オプションは `on-demand` です。この結果、フリートは 2 オンデマンドインスタンス を起動します。

```
{
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateId": "lt-0e8c754449b27161c",
                "Version": "1"
            }

        }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 2,
        "DefaultTargetCapacityType": "on-demand"
    }
}
```

## 例 3: オンデマンドインスタンスをプライマリ容量として起動する
<a name="ec2-fleet-config3"></a>

次の例では、フリートの合計ターゲット容量 2 インスタンス、ターゲット容量を 1 オンデマンドインスタンスとして指定します。デフォルト購入オプションは `spot` です。フリートは指定されたとおり 1 オンデマンドインスタンス を起動しますが、合計ターゲット容量を満たすために、さらに 1 つ以上のインスタンスを起動する必要があります。差額の購入オプションは、`TotalTargetCapacity` - `OnDemandTargetCapacity` = `DefaultTargetCapacityType` で計算されます。この結果、フリートはスポットインスタンスを起動します。

```
{
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateId": "lt-0e8c754449b27161c",
                "Version": "1"
            }

        }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 2,
        "OnDemandTargetCapacity": 1,
        "DefaultTargetCapacityType": "spot"
    }
}
```

## 例 4: 複数のキャパシティー予約を使用して オンデマンドインスタンス を起動する
<a name="ec2-fleet-config5"></a>

キャパシティ予約の使用戦略を `use-capacity-reservations-first` に設定することで、オンデマンドインスタンスの起動時に最初にオンデマンドキャパシティ予約を使用するようにフリートを設定できます。この例では、目標容量を満たすために必要以上のキャパシティ予約がある場合に、フリートが使用するキャパシティ予約を選択する方法を示します。

この例では、フリート設定は次のようになります。
+ ターゲット容量:12 オンデマンドインスタンス
+ 未使用のキャパシティー予約の合計:15 (フリートの目標容量である 12 オンデマンドインスタンスを超えています)
+ キャパシティ予約プールの数:3 (`m5.large`、`m4.xlarge`、および`m4.2xlarge`)
+ プールあたりのキャパシティ予約数:5
+ オンデマンド割り当て戦略：`lowest-price`(複数のインスタンスプールに未使用のキャパシティ予約が複数ある場合、フリートはオンデマンド割り当て戦略に基づいてオンデマンドインスタンスを起動するプールを決定します)。

  また、`lowest-price`割り当て戦略の代わりに`prioritized`割り当て戦略を使用することもできます。

**キャパシティ予約**

アカウントには、3 つの異なるプールに以下の 15 個の未使用のキャパシティ予約があります。各プールのキャパシティ予約の数は `AvailableInstanceCount` で示されます。

```
{
    "CapacityReservationId": "cr-111", 
    "InstanceType": "m5.large", 
    "InstancePlatform": "Linux/UNIX", 
    "AvailabilityZone": "us-east-1a", 
    "AvailableInstanceCount": 5, 
    "InstanceMatchCriteria": "open", 
    "State": "active"
}

{
    "CapacityReservationId": "cr-222", 
    "InstanceType": "m4.xlarge", 
    "InstancePlatform": "Linux/UNIX", 
    "AvailabilityZone": "us-east-1a", 
    "AvailableInstanceCount": 5, 
    "InstanceMatchCriteria": "open", 
    "State": "active"
}

{
    "CapacityReservationId": "cr-333", 
    "InstanceType": "m4.2xlarge", 
    "InstancePlatform": "Linux/UNIX", 
    "AvailabilityZone": "us-east-1a", 
    "AvailableInstanceCount":5, 
    "InstanceMatchCriteria": "open", 
    "State": "active"
}
```

**フリート設定**

以下のフリート設定は、この例に関連する設定のみを示しています。合計ターゲット容量は 12 で、デフォルトのターゲット容量タイプは `on-demand` です。オンデマンド配分戦略は`lowest-price`です。キャパシティ予約の使用戦略は`use-capacity-reservations-first`です。

この例では、オンデマンドインスタンスの料金は以下のようになります。
+ `m5.large` – 1 時間あたり 0.096 USD
+ `m4.xlarge` – 1 時間あたり 0.20 USD
+ `m4.2xlarge` – 1 時間あたり 0.40 USD

**注記**  
フリートタイプはタイプ`instant`である必要があります。他のフリートタイプは`use-capacity-reservations-first`をサポートしていません。

```
{
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateId": "lt-abc1234567example",
                "Version": "1"
            },
            "Overrides": [
                {
                  "InstanceType": "m5.large",
                  "AvailabilityZone": "us-east-1a",
                  "WeightedCapacity": 1
                },
                {
                  "InstanceType": "m4.xlarge",
                  "AvailabilityZone": "us-east-1a",
                  "WeightedCapacity": 1
                },
                {
                  "InstanceType": "m4.2xlarge",
                  "AvailabilityZone": "us-east-1a",
                  "WeightedCapacity": 1
                }
              ]

        }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 12,
        "DefaultTargetCapacityType": "on-demand"
    },
    "OnDemandOptions": {
        "AllocationStrategy": "lowest-price",
        "CapacityReservationOptions": {
            "UsageStrategy": "use-capacity-reservations-first"
        }
    },
    "Type": "instant"
}
```

上記の設定を使用して `instant` フリートを作成すると、目標容量を満たすために以下の 12 個のインスタンスが起動されます。
+ `us-east-1a`の中の`us-east-1a` – `m5.large`にある 5 つの`m5.large`オンデマンドインスタンスが最低価格です。そしてそこに 5 つの利用可能な未使用の`m5.large`キャパシティー予約があります。
+ 5 つの`m4.xlarge`オンデマンドインスタンス (us-east-1a) – `m4.xlarge` `us-east-1a`は次に低い料金であり、利用可能な未使用`m4.xlarge`キャパシティーの予約が 5 つあります。
+ 2 つの`m4.2xlarge`オンデマンドインスタンス (us-east-1a) – `m4.2xlarge` `us-east-1a`は 3 番目に低い料金であり、利用可能な未使用`m4.2xlarge`キャパシティーの予約は 5 つあります。そのうちの 2 つのみが目標容量を満たすために必要です。

フリートの起動後、[describe-capacity-reservations](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-capacity-reservations.html) を実行して、未使用のキャパシティ予約の数を確認できます。この例では、以下のレスポンスが表示されます。これは、`m5.large`および`m4.xlarge`のすべてのキャパシティーの予約が使用され、`m4.2xlarge`の 3 つのキャパシティーの予約が未使用のままであることを示しています。

```
{
    "CapacityReservationId": "cr-111",
    "InstanceType": "m5.large",  
    "AvailableInstanceCount": 0
}

{
    "CapacityReservationId": "cr-222",
    "InstanceType": "m4.xlarge", 
    "AvailableInstanceCount": 0
}

{
    "CapacityReservationId": "cr-333",
    "InstanceType": "m4.2xlarge", 
    "AvailableInstanceCount": 3
}
```

## 例 5: 合計ターゲット容量が未使用キャパシティーの予約の数を超えたときに、キャパシティーの予約を使用してオンデマンドインスタンスを起動する
<a name="ec2-fleet-config6"></a>

キャパシティ予約の使用戦略を `use-capacity-reservations-first` に設定することで、オンデマンドインスタンスの起動時に最初にオンデマンドキャパシティ予約を使用するようにフリートを設定できます。この例では、総ターゲット容量が使用可能な未使用のキャパシティ予約数を超えた場合に、オンデマンドインスタンスを起動するインスタンスプールをフリートがどのように選択するかを示します。

この例では、フリート設定は次のようになります。
+ ターゲット容量:16 オンデマンドインスタンス
+ 未使用キャパシティー予約の合計:15 (フリートのターゲット容量である 16 オンデマンドインスタンスを下回っています)
+ キャパシティ予約プールの数:3 (`m5.large`、`m4.xlarge`、および`m4.2xlarge`)
+ プールあたりのキャパシティ予約数:5
+ オンデマンド割り当て戦略：`lowest-price`(未使用キャパシティーの予約の数が目標オンデマンド容量より少ない場合、フリートは、オンデマンド配分戦略に基づいて、残りのオンデマンド容量を起動するプールを決定します)。

  また、`lowest-price`割り当て戦略の代わりに`prioritized`割り当て戦略を使用することもできます。

**キャパシティ予約**

アカウントには、3 つの異なるプールに以下の 15 個の未使用のキャパシティ予約があります。各プールのキャパシティ予約の数は `AvailableInstanceCount` で示されます。

```
{
    "CapacityReservationId": "cr-111", 
    "InstanceType": "m5.large", 
    "InstancePlatform": "Linux/UNIX", 
    "AvailabilityZone": "us-east-1a", 
    "AvailableInstanceCount": 5, 
    "InstanceMatchCriteria": "open", 
    "State": "active"
}

{
    "CapacityReservationId": "cr-222", 
    "InstanceType": "m4.xlarge", 
    "InstancePlatform": "Linux/UNIX", 
    "AvailabilityZone": "us-east-1a", 
    "AvailableInstanceCount": 5, 
    "InstanceMatchCriteria": "open", 
    "State": "active"
}

{
    "CapacityReservationId": "cr-333", 
    "InstanceType": "m4.2xlarge", 
    "InstancePlatform": "Linux/UNIX", 
    "AvailabilityZone": "us-east-1a", 
    "AvailableInstanceCount":5, 
    "InstanceMatchCriteria": "open", 
    "State": "active"
}
```

**フリート設定**



以下のフリート設定は、この例に関連する設定のみを示しています。合計ターゲット容量は 16 で、デフォルトのターゲット容量タイプは `on-demand` です。オンデマンド配分戦略は`lowest-price`です。キャパシティ予約の使用戦略は`use-capacity-reservations-first`です。

この例では、オンデマンドインスタンスの料金は以下のようになります。
+ m5.large – 0.096 USD/時間
+ m4.xlarge – 0.20 USD/時間
+ m4.2xlarge – 0.40 USD/時間

**注記**  
フリートタイプは`instant`である必要があります。他のフリートタイプは`use-capacity-reservations-first`をサポートしていません。

```
{
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateId": "lt-0e8c754449b27161c",
                "Version": "1"
            },
            "Overrides": [
                {
                  "InstanceType": "m5.large",
                  "AvailabilityZone": "us-east-1a",
                  "WeightedCapacity": 1
                },
                {
                  "InstanceType": "m4.xlarge",
                  "AvailabilityZone": "us-east-1a",
                  "WeightedCapacity": 1
                },
                {
                  "InstanceType": "m4.2xlarge",
                  "AvailabilityZone": "us-east-1a",
                  "WeightedCapacity": 1
                }
              ]

        }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 16,
        "DefaultTargetCapacityType": "on-demand"
    },
    "OnDemandOptions": {
        "AllocationStrategy": "lowest-price"
        "CapacityReservationOptions": {
            "UsageStrategy": "use-capacity-reservations-first"
        }
    },
    "Type": "instant",
}
```

上記の設定を使用して `instant` フリートを作成すると、目標容量を満たすために以下の 16 個のインスタンスが起動されます。
+ 6 つの`m5.large`オンデマンドインスタンス (`us-east-1a`の`us-east-1a` – `m5.large`) が最低価格です。そして 5 つの利用可能な未使用`m5.large`キャパシティーの予約があります。5 つのオンデマンドインスタンスを起動するために、キャパシティ予約が最初に使用されます。残りの`m4.xlarge`および`m4.2xlarge`キャパシティーの予約を使用してターゲット容量を満たすために、追加のオンデマンドインスタンスは、オンデマンド配分戦略 (この例では`lowest-price`) に従って起動します。
+ 5 つの`m4.xlarge`オンデマンドインスタンス (`us-east-1a` の `us-east-1a` – `m4.xlarge`) が次に低い料金であり、5 つの利用可能な未使用`m4.xlarge`キャパシティーの予約があります。
+ 5 つの`m4.2xlarge`オンデマンドインスタンス (`us-east-1a` の `us-east-1a` – `m4.2xlarge`) が 3 番目に低い料金であり、5 つの利用可能な未使用`m4.2xlarge`キャパシティーの予約があります。

フリートの起動後、[describe-capacity-reservations](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-capacity-reservations.html) を実行して、未使用のキャパシティ予約の数を確認できます。この例では、以下のレスポンスが表示されます。これは、すべてのプール内のすべての キャパシティーの予約 が使用されたことを示しています。

```
{
    "CapacityReservationId": "cr-111",
    "InstanceType": "m5.large",  
    "AvailableInstanceCount": 0
}

{
    "CapacityReservationId": "cr-222",
    "InstanceType": "m4.xlarge", 
    "AvailableInstanceCount": 0
}

{
    "CapacityReservationId": "cr-333",
    "InstanceType": "m4.2xlarge", 
    "AvailableInstanceCount": 0
}
```

## 例 6: ターゲットのキャパシティー予約を使用してオンデマンドインスタンスを起動する
<a name="ec2-fleet-config7"></a>

キャパシティーの予約の使用戦略を`use-capacity-reservations-first`に設定することで、オンデマンドインスタンスの起動時に最初に`targeted`オンデマンドキャパシティー予約を使用するようにフリートを設定できます。この例では、オンデマンドインスタンスを`targeted`キャパシティ予約で起動する方法を示します。キャパシティ予約の属性は、アベイラビリティーゾーン (`us-east-1a`および`us-east-1b`) を除いて同じになります。また、総ターゲット容量が使用可能な未使用のキャパシティ予約数を超えた場合に、オンデマンドインスタンスを起動するインスタンスプールをフリートがどのように選択するかについても説明します。

この例では、フリート設定は次のようになります。
+ ターゲット容量:10 オンデマンドインスタンス
+ 未使用の合計`targeted`キャパシティー予約:6 (フリートの目標オンデマンド容量である 10 オンデマンドインスタンスを下回っています)
+ キャパシティ予約のプールの数:2 (`us-east-1a`および`us-east-1b`)
+ プールあたりのキャパシティ予約数:3
+ オンデマンド割り当て戦略：`lowest-price`(未使用キャパシティーの予約の数が目標オンデマンド容量より少ない場合、フリートは、オンデマンド配分戦略に基づいて、残りのオンデマンド容量を起動するプールを決定します)。

  また、`lowest-price`割り当て戦略の代わりに`prioritized`割り当て戦略を使用することもできます。

この例を実行するために必要な手順のチュートリアルについては、[チュートリアル: ターゲットのキャパシティ予約を使用してオンデマンドインスタンスを起動するように EC2 フリートを設定する](ec2-fleet-launch-on-demand-instances-using-targeted-capacity-reservations-walkthrough.md)を参照してください。

**キャパシティ予約**

アカウントには、2 つの異なるプールに以下の 6 個の未使用キャパシティーの予約があります。この例では、プールはアベイラビリティーゾーンによって異なります。各プールのキャパシティ予約の数は `AvailableInstanceCount` で示されます。

```
{
    "CapacityReservationId": "cr-111", 
    "InstanceType": "c5.xlarge", 
    "InstancePlatform": "Linux/UNIX", 
    "AvailabilityZone": "us-east-1a", 
    "AvailableInstanceCount": 3, 
    "InstanceMatchCriteria": "open", 
    "State": "active"
}

{
    "CapacityReservationId": "cr-222", 
    "InstanceType": "c5.xlarge", 
    "InstancePlatform": "Linux/UNIX", 
    "AvailabilityZone": "us-east-1b", 
    "AvailableInstanceCount": 3, 
    "InstanceMatchCriteria": "open", 
    "State": "active"
}
```

**フリート設定**

以下のフリート設定は、この例に関連する設定のみを示しています。合計ターゲット容量は 10 で、デフォルトのターゲット容量タイプは`on-demand`です。オンデマンド配分戦略は`lowest-price`です。キャパシティ予約の使用戦略は`use-capacity-reservations-first`です。

この例では、`us-east-1`での`c5.xlarge`のオンデマンドインスタンスの料金は時間当たり 0.17 USD になります。

**注記**  
フリートタイプは`instant`である必要があります。他のフリートタイプは`use-capacity-reservations-first`をサポートしていません。

```
{
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateName": "my-launch-template",
                "Version": "1"
            },
            "Overrides": [
               {
                   "InstanceType": "c5.xlarge",
                   "AvailabilityZone": "us-east-1a"
               },
               {
                    "InstanceType": "c5.xlarge",
                    "AvailabilityZone": "us-east-1b"
               }
            ]
        }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 10,
        "DefaultTargetCapacityType": "on-demand"
    },
    "OnDemandOptions": {
        "AllocationStrategy": "lowest-price",
        "CapacityReservationOptions": {
             "UsageStrategy": "use-capacity-reservations-first"
         }
    },
    "Type": "instant"
}
```

上記の設定を使用して`instant`フリートを作成すると、目標容量を満たすために以下の 10 個のインスタンスが起動されます。
+ 次のように、6 つのオンデマンドインスタンスを起動するために、キャパシティ予約が最初に使用されます。
  + 3 つのオンデマンドインスタンスが、`us-east-1a`での 3 つの`c5.xlarge``targeted`キャパシティー予約で起動します。
  + 3 つのオンデマンドインスタンスが、`us-east-1b`での 3 つの`c5.xlarge``targeted`キャパシティー予約で起動します。
+ ターゲット容量を満たすために、4 つの追加のオンデマンドインスタンスは、オンデマンド配分戦略 (この例では`lowest-price`) に従って通常のオンデマンド容量で起動します。ただし、プールの価格は同じであるため (価格はアベイラビリティーゾーンごとではなく、リージョンごとであるため)、フリートは残りの 4 つのオンデマンドインスタンスをいずれかのプールで起動します。

フリートの起動後、[describe-capacity-reservations](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-capacity-reservations.html) を実行して、未使用のキャパシティ予約の数を確認できます。この例では、以下のレスポンスが表示されます。これは、すべてのプール内のすべての キャパシティーの予約 が使用されたことを示しています。

```
{
    "CapacityReservationId": "cr-111",
    "InstanceType": "c5.xlarge",  
    "AvailableInstanceCount": 0
}

{
    "CapacityReservationId": "cr-222",
    "InstanceType": "c5.xlarge", 
    "AvailableInstanceCount": 0
}
```

## 例 7: 容量の再調整を設定して代替スポットインスタンスを起動する
<a name="ec2-fleet-config8"></a>

次の例では、Amazon EC2 がフリートのスポットインスタンスに再調整に関する推奨を送信したときに、代替スポットインスタンスを起動するように EC2 フリートを設定します。スポットインスタンスの自動代替を設定するには、`ReplacementStrategy` で、`launch-before-terminate` を指定します。置換用の新しいスポットインスタンスが起動してから、古いスポットインスタンスが自動的に削除されるまでの時間を設定するには、`termination-delay` に値を秒単位で指定します。詳細については、「[設定オプション](ec2-fleet-capacity-rebalance.md#ec2-fleet-capacity-rebalance-config-options)」を参照してください。

**注記**  
`launch-before-terminate` を使用するのは、インスタンスのシャットダウン処理にかかる時間を予測できる場合に限り、これらの処理が完了した後に古いインスタンスが終了するようにすることをお勧めします。実行中は、すべてのインスタンスに対して課金されます。

容量の再調整戦略の有効性は、EC2 フリートリクエストで指定されたスポットキャパシティプールの数に左右されます。インスタンスタイプとアベイラビリティーゾーンの多様なセットを使ってフリートを設定し、`AllocationStrategy` では `capacity-optimized` を指定することをお勧めします。EC2 フリート の容量の再調整を行う際に考慮すべき事項の詳細については、「」を参照してください。[EC2 フリートとスポットフリートでキャパシティの再調整を使用して、リスクのあるスポットインスタンスを置き換える](ec2-fleet-capacity-rebalance.md)

```
{
    "ExcessCapacityTerminationPolicy": "termination",
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateName": "LaunchTemplate",
                "Version": "1"
            },
                 "Overrides": [
                       {
                           "InstanceType": "c3.large",
                           "WeightedCapacity": 1,
                            "Placement": {
                               "AvailabilityZone": "us-east-1a"
                           }
                       },
                       {
                           "InstanceType": "c4.large",
                           "WeightedCapacity": 1,
                            "Placement": {
                               "AvailabilityZone": "us-east-1a"
                           }
                       },
                       {
                           "InstanceType": "c5.large",
                           "WeightedCapacity": 1,
                            "Placement": {
                               "AvailabilityZone": "us-east-1a"
                           }
                       }
                ] 
          }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 5,
        "DefaultTargetCapacityType": "spot"
    },
    "SpotOptions": {
        "AllocationStrategy": "capacity-optimized",
        "MaintenanceStrategies": {
            "CapacityRebalance": {
                "ReplacementStrategy": "launch-before-terminate",
                "TerminationDelay": "720"
            }
        }
    }
}
```

## 例 8: 容量最適化フリートでスポットインスタンスを起動する
<a name="ec2-fleet-config9"></a>

次の例は、容量を最適化するスポット配分戦略で、EC2 フリートを設定する方法を示しています。容量を最適化するには、`AllocationStrategy` を `capacity-optimized` に設定する必要があります。

次の例では、3 つの起動仕様で 3 つのスポットキャパシティプールが指定されています。ターゲット容量はスポットインスタンス 50 個です。EC2 フリートは、起動中のインスタンス数の最適な容量のスポットキャパシティープールに 50 個のスポットインスタンスを起動しようとします。

```
{
    "SpotOptions": {
        "AllocationStrategy": "capacity-optimized",
        },
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateName": "my-launch-template",
                "Version": "1"
            },
                 "Overrides": [
                       {
                           "InstanceType": "r4.2xlarge",
                           "Placement": {
                               "AvailabilityZone": "us-west-2a"
                           },
                      },
                       {
                           "InstanceType": "m4.2xlarge",
                           "Placement": {
                               "AvailabilityZone": "us-west-2b"
                           },
                       }, 
                       {
                           "InstanceType": "c5.2xlarge",
                           "Placement": {
                               "AvailabilityZone": "us-west-2b"
                           }
                       }
                 ] 
           }
    ],
    "TargetCapacitySpecification": {
            "TotalTargetCapacity": 50,
            "DefaultTargetCapacityType": "spot"

    }
}
```

## 例 9: 優先順位のある容量最適化フリートでスポットインスタンスを起動する
<a name="ec2-fleet-config10"></a>

次の例は、ベストエフォートベースで優先順位を使用しながら、容量を最適化するスポット配分戦略を使用して、EC2 フリートを設定する方法を示しています。

`capacity-optimized-prioritized` 配分戦略を使用する場合は、`Priority` パラメータを使用して、スポットキャパシティプールの優先順位を指定します。数値が小さいほど優先順位が高くなります。また、優先度が同じならば、複数のスポットキャパシティープールに同じ優先順位を設定することもできます。プールに優先順位を設定しない場合、そのプールは優先順位が最も低いとみなされます。

スポットキャパシティプールに優先順位を付けるには、`AllocationStrategy` を `capacity-optimized-prioritized` に設定する必要があります。EC2 フリートは最初に容量を最適化しますが、インスタンスタイプの優先順位をベストエフォートベースで決定します (例えば、優先順位を尊重しても、EC2 フリートの最適な容量をプロビジョニングする能力に大きな影響を与えない場合など) 。これは、中断の可能性を最小限に抑える必要があり、特定のインスタンスタイプを優先することが重要なワークロードに適したオプションです。

次の例では、3 つの起動仕様で 3 つのスポットキャパシティープールが指定されています。各プールには優先順位が設定されています。数値が小さいほど優先順位が高くなります。ターゲット容量は 50 個のスポットインスタンスです。EC2 フリートは、ベストエフォートベースで優先順位が最も高いスポットキャパシティープールに 50 個のスポットインスタンスを起動しようとしますが、最初に容量を最適化します。

```
{
    "SpotOptions": {
        "AllocationStrategy": "capacity-optimized-prioritized"
        },
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateName": "my-launch-template",
                "Version": "1"
            },
                 "Overrides": [
                        {
                           "InstanceType": "r4.2xlarge",    
                           "Priority": 1,
                           "Placement": {
                               "AvailabilityZone": "us-west-2a"
                           },
                      },
                       {
                           "InstanceType": "m4.2xlarge",
                           "Priority": 2,
                           "Placement": {
                               "AvailabilityZone": "us-west-2b"
                           },
                       }, 
                       {
                           "InstanceType": "c5.2xlarge",
                           "Priority": 3,
                           "Placement": {
                               "AvailabilityZone": "us-west-2b"
                           }
                       }
                  ] 
             }
    ],
    "TargetCapacitySpecification": {
            "TotalTargetCapacity": 50,
            "DefaultTargetCapacityType": "spot"
}
```

## 例 10: price-capaity-optimized フリートでスポットインスタンスを起動する
<a name="ec2-fleet-config11"></a>

次の例は、容量と価格の両方を最適化するスポット配分戦略で、EC2 フリートを設定する方法を示しています。価格を考慮しながら容量を最適化するには、スポット `AllocationStrategy` を `price-capacity-optimized` に設定する必要があります。

次の例では、3 つの起動仕様で 3 つのスポットキャパシティプールが指定されています。ターゲット容量は 50 個のスポットインスタンスです。EC2 フリートは、起動するインスタンス数に最適な容量を持つスポットキャパシティプールに 50 個のスポットインスタンスを起動し、同時に価格が最も低いプールを選択することを試みます。

```
{
    "SpotOptions": {
        "AllocationStrategy": "price-capacity-optimized",
        "MinTargetCapacity": 2,
        "SingleInstanceType": true
    },
    "OnDemandOptions": {
        "AllocationStrategy": "lowest-price"
    },
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateName": "my-launch-template",
                "Version": "1"
            },
                 "Overrides": [
                       {
                           "InstanceType": "r4.2xlarge",
                           "Placement": {
                               "AvailabilityZone": "us-west-2a"
                           },
                      },
                       {
                           "InstanceType": "m4.2xlarge",
                           "Placement": {
                               "AvailabilityZone": "us-west-2b"
                           },
                       }, 
                       {
                           "InstanceType": "c5.2xlarge",
                           "Placement": {
                               "AvailabilityZone": "us-west-2b"
                           }
                       }
                 ] 
           }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 50,
        "OnDemandTargetCapacity":0,
        "SpotTargetCapacity":50,
        "DefaultTargetCapacityType": "spot"
    },
    "Type": "instant"
}
```

## 例 11: 属性ベースのインスタンスタイプの選択を設定する
<a name="ec2-fleet-config12"></a>

次の例は、インスタンスタイプの識別に属性ベースのインスタンスタイプ選択を使用するように EC2 フリート を設定する方法を示しています。必要なインスタンス属性を指定するには、`InstanceRequirements` 構造に属性を指定します。

次の例では、2 つのインスタンス属性が指定されています。
+ `VCpuCount` — 最低 2 つの vCPUs が指定されています。最大値は指定されていないため、上限はありません。
+ `MemoryMiB` — 4 MiB 以上のメモリが指定されています。最大値は指定されていないため、上限はありません。

2 つ以上の vCPUs と 4 MiB 以上のメモリを持つすべてのインスタンスタイプが識別されます。ただし、[EC2 フリートがフリートをプロビジョニングする](ec2-fleet-attribute-based-instance-type-selection.md#how-ef-uses-abs)場合、価格保護と配分戦略によって一部のインスタンスタイプが除外される場合があります。

指定できるすべての属性のリストと説明については、「*Amazon EC2 API リファレンス*」の「[InstanceRequirements](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_InstanceRequirements.html)」を参照してください。

```
{
	"SpotOptions": {
		"AllocationStrategy": "price-capacity-optimized"
	},
	"LaunchTemplateConfigs": [{
		"LaunchTemplateSpecification": {
			"LaunchTemplateName": "my-launch-template",
			"Version": "1"
		},
		"Overrides": [{
			"InstanceRequirements": {
				"VCpuCount": {
					"Min": 2
				},
				"MemoryMiB": {
					"Min": 4
				}
			}
		}]
	}],
	"TargetCapacitySpecification": {
		"TotalTargetCapacity": 20,
		"DefaultTargetCapacityType": "spot"
	},
	"Type": "instant"
}
```

# スポットフリートの CLI 設定の例
<a name="spot-fleet-examples"></a>

以下のように、JSON ファイルにスポットフリート設定を定義し、[request-spot-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/request-spot-fleet.html) AWS CLI コマンドでそのファイルを参照して、フリートを作成できます。

```
aws ec2 request-spot-fleet --spot-fleet-request-config file://file_name.json
```

以下の例は、スポットフリートのさまざまなユースケースの起動設定を示しています。設定パラメータの詳細については、「 コマンドリファレンス」の [request-spot-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/request-spot-fleet.html) を参照してください。スポットフリートの作成の詳細については、「[スポットフリートを作成する](create-spot-fleet.md)」を参照してください。

**注記**  
スポットフリートでは、ネットワークインターフェイス ID を起動テンプレートか起動仕様に指定できません。起動テンプレートまたは起動仕様から `NetworkInterfaceID` パラメータを必ず省略してください。

**Topics**
+ [

## 例 1: リージョンの最低価格のアベイラビリティーゾーンを使用してスポットインスタンスを起動する
](#fleet-config1)
+ [

## 例 2: リストからの最低価格のアベイラビリティーゾーンを使用してスポットインスタンスを起動する
](#fleet-config2)
+ [

## 例 3: リストからの最低価格のインスタンスタイプを使用してスポットインスタンスを起動する
](#fleet-config3)
+ [

## 例 4。リクエストの料金を上書きする
](#fleet-config4)
+ [

## 例 5: 分散配分戦略を使用して、スポットフリートを起動する
](#fleet-config5)
+ [

## 例 6: インスタンスの分量指定を使用して、スポットフリートを起動する
](#fleet-config6)
+ [

## 例 7: オンデマンドキャパシティを使用してスポットフリートを起動する
](#fleet-config7)
+ [

## 例 8: 容量の再調整を設定して代替スポットインスタンスを起動する
](#fleet-config8)
+ [

## 例 9: 容量最適化フリートでスポットインスタンスを起動する
](#fleet-config9)
+ [

## 例 10: 優先順位のある容量最適化フリートでスポットインスタンスを起動する
](#fleet-config10)
+ [

## 例 11: priceCapacityOptimized フリートでスポットインスタンスを起動する
](#fleet-config11)
+ [

## 例 12: 属性ベースのインスタンスタイプの選択を設定する
](#fleet-config12)

## 例 1: リージョンの最低価格のアベイラビリティーゾーンを使用してスポットインスタンスを起動する
<a name="fleet-config1"></a>

以下の例では、アベイラビリティーゾーンまたはサブネットを使用しない 1 つの起動仕様を指定しています。スポットフリートはデフォルトのサブネットを持つ最低価格のアベイラビリティーゾーンでインスタンスを起動します。お支払いいただく料金はオンデマンド価格を上回りません。

```
{
  "TargetCapacity": 20,
  "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
  "LaunchSpecifications": [
      {
          "ImageId": "ami-1a2b3c4d",
          "KeyName": "my-key-pair",
          "SecurityGroups": [
              {
                  "GroupId": "sg-1a2b3c4d"
              }
          ],
          "InstanceType": "m3.medium",
          "IamInstanceProfile": {
              "Arn": "arn:aws:iam::123456789012:instance-profile/my-iam-role"
          }
      }
  ]
}
```

## 例 2: リストからの最低価格のアベイラビリティーゾーンを使用してスポットインスタンスを起動する
<a name="fleet-config2"></a>

以下の例では、アベイラビリティーゾーン/サブネットは異なるがインスタンスタイプおよび AMI が同じである、2 つの起動仕様を指定しています。

アベイラビリティーゾーン****

スポットフリートは、指定した最低価格のアベイラビリティーゾーンのデフォルトサブネットでインスタンスを起動します。

```
{
  "TargetCapacity": 20,
  "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
  "LaunchSpecifications": [
      {
          "ImageId": "ami-1a2b3c4d",
          "KeyName": "my-key-pair",
          "SecurityGroups": [
              {
                  "GroupId": "sg-1a2b3c4d"
              }
          ],
          "InstanceType": "m3.medium",
          "Placement": {
              "AvailabilityZone": "us-west-2a, us-west-2b"
          },
          "IamInstanceProfile": {
              "Arn": "arn:aws:iam::123456789012:instance-profile/my-iam-role"
          }
      }
  ]
}
```

Subnets****

デフォルトのサブネットまたはデフォルト以外のサブネットを指定できますが、デフォルト以外のサブネットは、デフォルトの VPC またはデフォルト以外の VPC 内から選択できます。スポットサービスは、最低価格のアベイラビリティーゾーンにあるいずれかのサブネットでインスタンスを起動します。

スポットフリートリクエストで、同じアベイラビリティーゾーンから異なるサブネットを指定することはできません。

```
{
  "TargetCapacity": 20,
  "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
  "LaunchSpecifications": [
      {
          "ImageId": "ami-1a2b3c4d",
          "KeyName": "my-key-pair",
          "SecurityGroups": [
              {
                  "GroupId": "sg-1a2b3c4d"
              }
          ],
          "InstanceType": "m3.medium",
          "SubnetId": "subnet-a61dafcf, subnet-65ea5f08",
          "IamInstanceProfile": {
              "Arn": "arn:aws:iam::123456789012:instance-profile/my-iam-role"
          }
      }
  ]
}
```

インスタンスがデフォルトの VPC で起動される場合は、デフォルトでパブリック IPv4 アドレスが割り当てられます。インスタンスがデフォルト以外の VPC で起動される場合は、デフォルトでパブリック IPv4 アドレスは割り当てられません。起動仕様でネットワークインターフェイスを使用して、デフォルト以外の VPC で起動されるインスタンスにパブリック IPv4 アドレスを割り当てます。ネットワークインターフェイスの指定時、ネットワークインターフェイスを使用してサブネット ID とセキュリティグループ ID を含める必要があります。

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

## 例 3: リストからの最低価格のインスタンスタイプを使用してスポットインスタンスを起動する
<a name="fleet-config3"></a>

次の例では、同じ AMI と アベイラビリティーゾーンまたはサブネットで、複数の異なるインスタンスタイプを使用する 2 つの起動設定を指定します。スポットフリートは、指定された最低価格のインスタンスタイプを使用してインスタンスを起動します。

**アベイラビリティーゾーン**

```
{
  "TargetCapacity": 20,
  "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
  "LaunchSpecifications": [
      {
          "ImageId": "ami-1a2b3c4d",
          "SecurityGroups": [
              {
                  "GroupId": "sg-1a2b3c4d"
              }
          ],
          "InstanceType": "c5.4xlarge",
          "Placement": {
            "AvailabilityZone": "us-west-2b"
          }
      },
      {
          "ImageId": "ami-1a2b3c4d",
          "SecurityGroups": [
              {
                  "GroupId": "sg-1a2b3c4d"
              }
          ],
          "InstanceType": "r3.8xlarge",
          "Placement": {
              "AvailabilityZone": "us-west-2b"
          }
      }
  ]
}
```

**サブネット**

```
{
  "TargetCapacity": 20,
  "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
  "LaunchSpecifications": [
      {
          "ImageId": "ami-1a2b3c4d",
          "SecurityGroups": [
              {
                  "GroupId": "sg-1a2b3c4d"
              }
          ],
          "InstanceType": "c5.4xlarge",
          "SubnetId": "subnet-1a2b3c4d"
      },
      {
          "ImageId": "ami-1a2b3c4d",
          "SecurityGroups": [
              {
                  "GroupId": "sg-1a2b3c4d"
              }
          ],
          "InstanceType": "r3.8xlarge",
          "SubnetId": "subnet-1a2b3c4d"
      }
  ]
}
```

## 例 4。リクエストの料金を上書きする
<a name="fleet-config4"></a>

オンデマンド価格であるデフォルトの上限料金を使用することをお勧めします。必要に応じて、フリートリクエストの上限料金と個々の起動条件の上限料金を指定することができます。

以下の例は、フリートリクエストの上限料金と､3 つの起動条件のうちの 2 つの上限料金を指定しています。フリートリクエストの上限料金は、上限料金を指定しないすべての起動条件に適用されます。スポットフリートは、最低価格のインスタンスタイプを使用してインスタンスを起動します。

**アベイラビリティーゾーン**

```
{
  "SpotPrice": "1.00",
  "TargetCapacity": 30,
  "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
  "LaunchSpecifications": [
      {
          "ImageId": "ami-1a2b3c4d",
          "InstanceType": "c3.2xlarge",
          "Placement": {
              "AvailabilityZone": "us-west-2b"
          },
          "SpotPrice": "0.10"
      },
      {
          "ImageId": "ami-1a2b3c4d",
          "InstanceType": "c3.4xlarge",
          "Placement": {
              "AvailabilityZone": "us-west-2b"
          },
          "SpotPrice": "0.20"
      },
      {
          "ImageId": "ami-1a2b3c4d",
          "InstanceType": "c3.8xlarge",
          "Placement": {
              "AvailabilityZone": "us-west-2b"
          }
      }
    ]
}
```

**サブネット**

```
{
  "SpotPrice": "1.00",
  "TargetCapacity": 30,
  "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
  "LaunchSpecifications": [
      {
          "ImageId": "ami-1a2b3c4d",
          "InstanceType": "c3.2xlarge",
          "SubnetId": "subnet-1a2b3c4d",
          "SpotPrice": "0.10"
      },
      {
          "ImageId": "ami-1a2b3c4d",
          "InstanceType": "c3.4xlarge",
          "SubnetId": "subnet-1a2b3c4d",
          "SpotPrice": "0.20"
      },
      {
          "ImageId": "ami-1a2b3c4d",
          "InstanceType": "c3.8xlarge",
          "SubnetId": "subnet-1a2b3c4d"
      }
  ]
}
```

## 例 5: 分散配分戦略を使用して、スポットフリートを起動する
<a name="fleet-config5"></a>

次の例では、`diversified` の配分戦略を使用します。これらの起動仕様では、インスタンスタイプは異なりますが、AMI およびアベイラビリティーゾーン/サブネットは同じです。スポットフリートは、各タイプのインスタンスが 10 個になるように、3 個の起動仕様全体に 30 個のインスタンスを分散します。詳細については、「[配分戦略を使用して、EC2 フリートまたはスポットフリートがどのようにスポットキャパシティとオンデマンドキャパシティを満たすかを決定します。](ec2-fleet-allocation-strategy.md)」を参照してください。

**アベイラビリティーゾーン**

```
{
  "SpotPrice": "0.70", 
  "TargetCapacity": 30,
  "AllocationStrategy": "diversified",
  "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
  "LaunchSpecifications": [
      {
          "ImageId": "ami-1a2b3c4d",
          "InstanceType": "c4.2xlarge",
          "Placement": {
              "AvailabilityZone": "us-west-2b"
          }
      },
      {
          "ImageId": "ami-1a2b3c4d",
          "InstanceType": "m3.2xlarge",
          "Placement": {
              "AvailabilityZone": "us-west-2b"
          }
      },
      {
          "ImageId": "ami-1a2b3c4d",
          "InstanceType": "r3.2xlarge",
          "Placement": {
              "AvailabilityZone": "us-west-2b"
          }
      }
  ]
}
```

**サブネット**

```
{
    "SpotPrice": "0.70", 
    "TargetCapacity": 30,
    "AllocationStrategy": "diversified",
    "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
    "LaunchSpecifications": [
        {
            "ImageId": "ami-1a2b3c4d",
            "InstanceType": "c4.2xlarge",
            "SubnetId": "subnet-1a2b3c4d"
        },
        {
            "ImageId": "ami-1a2b3c4d",
            "InstanceType": "m3.2xlarge",
            "SubnetId": "subnet-1a2b3c4d"
        },
        {
            "ImageId": "ami-1a2b3c4d",
            "InstanceType": "r3.2xlarge",
            "SubnetId": "subnet-1a2b3c4d"
        }
    ]
}
```

アベイラビリティーゾーンの 1 つで機能停止が発生した場合にスポットリクエストが EC2 のキャパシティーによって満たされる可能性を高めるためのベストプラクティスは、ゾーン間で多様化することです。このシナリオでは、使用可能な各アベイラビリティーゾーンを起動仕様に含めます。また、毎回同じサブネットを使用するのではなく、3 つの固有のサブネット (それぞれ異なるゾーンへのマッピング) を使用してください。

**アベイラビリティーゾーン**

```
{
  "SpotPrice": "0.70", 
  "TargetCapacity": 30,
  "AllocationStrategy": "diversified",
  "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
  "LaunchSpecifications": [
      {
          "ImageId": "ami-1a2b3c4d",
          "InstanceType": "c4.2xlarge",
          "Placement": {
              "AvailabilityZone": "us-west-2a"
          }
      },
      {
          "ImageId": "ami-1a2b3c4d",
          "InstanceType": "m3.2xlarge",
          "Placement": {
              "AvailabilityZone": "us-west-2b"
          }
      },
      {
          "ImageId": "ami-1a2b3c4d",
          "InstanceType": "r3.2xlarge",
          "Placement": {
              "AvailabilityZone": "us-west-2c"
          }
      }
  ]
}
```

**サブネット**

```
{
    "SpotPrice": "0.70", 
    "TargetCapacity": 30,
    "AllocationStrategy": "diversified",
    "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
    "LaunchSpecifications": [
        {
            "ImageId": "ami-1a2b3c4d",
            "InstanceType": "c4.2xlarge",
            "SubnetId": "subnet-1a2b3c4d"
        },
        {
            "ImageId": "ami-1a2b3c4d",
            "InstanceType": "m3.2xlarge",
            "SubnetId": "subnet-2a2b3c4d"
        },
        {
            "ImageId": "ami-1a2b3c4d",
            "InstanceType": "r3.2xlarge",
            "SubnetId": "subnet-3a2b3c4d"
        }
    ]
}
```

## 例 6: インスタンスの分量指定を使用して、スポットフリートを起動する
<a name="fleet-config6"></a>

次の例では、インスタンス分量指定を使っています。これは、料金が 1 インスタンス時間当たりではなく、1 ユニット時間当たりであることを意味します。それぞれの起動設定には、異なるインスタンスタイプおよび異なる分量がリストされます。スポットフリートはユニット時間の最低価格のインスタンスタイプを選択してください。スポットフリートは、ターゲット容量をインスタンス分量で割ることで起動するスポットインスタンス数を計算します。結果が整数でない場合、スポットフリートはその数を次の整数に切り上げ、そのためフリートのサイズがターゲット容量以上になります。

`r3.2xlarge` のリクエストが成功すると、スポットはこれらのインスタンスのうち、4 つをプロビジョニングします｡ 3.33 インスタンスまで 20 を 6 で割り、そして残りの 4 つのインスタンスを切り上げます。

`c3.xlarge` のリクエストが成功すると、スポットはこれらのインスタンスのうち、7 つをプロビジョニングします｡ 6.66 インスタンスまで 20 を 3 で割り、そして残りの 7 つのインスタンスを切り上げます。

詳細については、「[インスタンスの重み付けを使用して、EC2 フリートまたはスポットフリートのコストとパフォーマンスを管理する](ec2-fleet-instance-weighting.md)」を参照してください。

**アベイラビリティーゾーン**

```
{
  "SpotPrice": "0.70",
  "TargetCapacity": 20,
  "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
  "LaunchSpecifications": [
      {
          "ImageId": "ami-1a2b3c4d",
          "InstanceType": "r3.2xlarge",
          "Placement": {
              "AvailabilityZone": "us-west-2b"
          },
          "WeightedCapacity": 6
      },
      {
          "ImageId": "ami-1a2b3c4d",
          "InstanceType": "c3.xlarge",
          "Placement": {
              "AvailabilityZone": "us-west-2b"
          },
          "WeightedCapacity": 3
      }
    ]
}
```

**サブネット**

```
{
  "SpotPrice": "0.70",
  "TargetCapacity": 20,
  "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
  "LaunchSpecifications": [
      {
          "ImageId": "ami-1a2b3c4d",
          "InstanceType": "r3.2xlarge",
          "SubnetId": "subnet-1a2b3c4d",
          "WeightedCapacity": 6
      },
      {
          "ImageId": "ami-1a2b3c4d",
          "InstanceType": "c3.xlarge",
          "SubnetId": "subnet-1a2b3c4d",
          "WeightedCapacity": 3
      }
  ]
}
```

## 例 7: オンデマンドキャパシティを使用してスポットフリートを起動する
<a name="fleet-config7"></a>

インスタンス容量を常に確保するには、オンデマンド容量のリクエストをスポットフリートリクエストに含めることができます。オンデマンドリクエストは、容量がある限り、常に実行されます。ターゲット容量は、キャパシティーと可用性がある場合にスポットとして実行されます。

次の例では、希望するターゲット容量を 10 とし、そのうち 5 をオンデマンドキャパシティーとして指定する必要があります。スポットキャパシティーは指定しません。これは、ターゲット容量からオンデマンド容量を引いたバランスを意味します。Amazon EC2 は、利用可能な Amazon EC2 容量および可用性がある場合、オンデマンドとして 5 容量単位を、スポットとして 5 容量単位 (10-5=5) をスポットとして起動します。

```
{
  "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
  "AllocationStrategy": "lowestPrice",
  "TargetCapacity": 10,
  "SpotPrice": null,
  "ValidFrom": "2018-04-04T15:58:13Z",
  "ValidUntil": "2019-04-04T15:58:13Z",
  "TerminateInstancesWithExpiration": true,
  "LaunchSpecifications": [],
  "Type": "maintain",
  "OnDemandTargetCapacity": 5,
  "LaunchTemplateConfigs": [
    {
      "LaunchTemplateSpecification": {
        "LaunchTemplateId": "lt-0dbb04d4a6cca5ad1",
        "Version": "2"
      },
      "Overrides": [
        {
          "InstanceType": "t2.medium",
          "WeightedCapacity": 1,
          "SubnetId": "subnet-d0dc51fb"
        }
      ]
    }
  ]
}
```

## 例 8: 容量の再調整を設定して代替スポットインスタンスを起動する
<a name="fleet-config8"></a>

次の例では、Amazon EC2 がフリートのスポットインスタンスに再調整の推奨を発したときに、スポットフリートが代替スポットインスタンスを起動するように設定します。スポットインスタンスの自動代替を設定するには、`ReplacementStrategy` で、`launch-before-terminate` を指定します。新しい交換用スポットインスタンスが起動してから古いスポットインスタンスが自動削除されるまでの時間を設定するには、`termination-delay` に秒単位で値を指定します。詳細については、「[設定オプション](ec2-fleet-capacity-rebalance.md#ec2-fleet-capacity-rebalance-config-options)」を参照してください。

**注記**  
`launch-before-terminate` は、インスタンスのシャットダウン手順が完了するまでの時間が予測できる場合にのみ使用することをお勧めします。これにより、古いインスタンスは、シャットダウン手順が完了した後にのみ終了されます。実行中は、すべてのインスタンスに対して課金されます。

容量の再調整戦略の有効性は、スポットフリートリクエストで指定されたスポットキャパシティプールの数に左右されます。インスタンスタイプとアベイラビリティーゾーンの多様なセットを使ってフリートを設定し、`AllocationStrategy` では `capacityOptimized` を指定することをお勧めします。スポットフリートの容量の再調整を行うときに考慮すべき事項の詳細については、「[EC2 フリートとスポットフリートでキャパシティの再調整を使用して、リスクのあるスポットインスタンスを置き換える](ec2-fleet-capacity-rebalance.md)」を参照してください。

```
{
    "SpotFleetRequestConfig": {
        "AllocationStrategy": "capacityOptimized",
        "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
        "LaunchTemplateConfigs": [
            {
                "LaunchTemplateSpecification": {
                    "LaunchTemplateName": "LaunchTemplate",
                    "Version": "1"
                },
                 "Overrides": [
                       {
                           "InstanceType": "c3.large",
                           "WeightedCapacity": 1,
                           "Placement": {
                               "AvailabilityZone": "us-east-1a"
                           }
                       },
                       {
                           "InstanceType": "c4.large",
                           "WeightedCapacity": 1,
                           "Placement": {
                               "AvailabilityZone": "us-east-1a"
                           }
                       },
                       {
                           "InstanceType": "c5.large",
                           "WeightedCapacity": 1,
                           "Placement": {
                               "AvailabilityZone": "us-east-1a"
                           }
                       }
                ] 
          }
    ],
        "TargetCapacity": 5,
        "SpotMaintenanceStrategies": {
            "CapacityRebalance": {
                "ReplacementStrategy": "launch-before-terminate",
                "TerminationDelay": "720"
            }
        }
    }
}
```

## 例 9: 容量最適化フリートでスポットインスタンスを起動する
<a name="fleet-config9"></a>

以下の例は、容量を最適化するスポット配分戦略で、スポットフリートを設定する方法を示しています。容量を最適化するには、`AllocationStrategy` を `capacityOptimized` に設定する必要があります。

次の例では、3 つの起動仕様で 3 つのスポットキャパシティプールが指定されています。ターゲット容量は 50 個のスポットインスタンスです。スポットインスタンスは、起動中のインスタンス数に最適な容量のスポットキャパシティプールに、50 個のスポットインスタンスを起動しようとします。

```
{
    "TargetCapacity": "50",
    "SpotFleetRequestConfig": {
        "AllocationStrategy": "capacityOptimized",
    },
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateName": "my-launch-template",
                "Version": "1"
            },
            "Overrides": [
                {
                    "InstanceType": "r4.2xlarge",  
                    "AvailabilityZone": "us-west-2a"
                },
                {
                    "InstanceType": "m4.2xlarge",
                    "AvailabilityZone": "us-west-2b"
                }, 
                {
                    "InstanceType": "c5.2xlarge",
                    "AvailabilityZone": "us-west-2b"
                }
            ] 
        }
    ]
}
```

## 例 10: 優先順位のある容量最適化フリートでスポットインスタンスを起動する
<a name="fleet-config10"></a>

次の例は、ベストエフォートベースで優先順位を使用しながら、容量を最適化するスポット配分戦略を使用して、スポットフリートを設定する方法を示しています。

`capacityOptimizedPrioritized` 配分戦略を使用する場合は、`Priority` パラメータを使用して、スポットキャパシティプールの優先順位を指定します。数値が小さいほど優先順位が高くなります。また、優先度が同じならば、複数のスポットキャパシティープールに同じ優先順位を設定することもできます。プールに優先順位を設定しない場合、そのプールは優先順位が最も低いとみなされます。

スポットキャパシティプールに優先順位を付けるには、`AllocationStrategy` を `capacityOptimizedPrioritized` に設定する必要があります。スポットフリートは最初に容量を最適化しますが、優先順位をベストエフォートベースで決定します (例えば、優先順位を尊重しても、スポットフリートの最適な容量をプロビジョニングする能力に大きな影響を与えない場合など)。これは、中断の可能性を最小限に抑える必要があり、特定のインスタンスタイプを優先することが重要なワークロードに適したオプションです。

次の例では、3 つの起動仕様で 3 つのスポットキャパシティープールが指定されています。各プールには優先順位が設定されています。数値が小さいほど優先順位が高くなります。ターゲット容量は 50 個のスポットインスタンスです。スポットフリートは、ベストエフォートベースで優先順位が最も高いスポットキャパシティープールに 50 個のスポットインスタンスを起動しようとしますが、最初に容量を最適化します。

```
{
    "TargetCapacity": "50",
    "SpotFleetRequestConfig": {
        "AllocationStrategy": "capacityOptimizedPrioritized"
    },
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateName": "my-launch-template",
                "Version": "1"
            },
            "Overrides": [
                {
                    "InstanceType": "r4.2xlarge",    
                   "Priority": 1,
                    "AvailabilityZone": "us-west-2a"
                },
                {
                           "InstanceType": "m4.2xlarge",
                           "Priority": 2,
                           "AvailabilityZone": "us-west-2b"
                }, 
                {
                           "InstanceType": "c5.2xlarge",
                           "Priority": 3,
                           "AvailabilityZone": "us-west-2b"
                }
            ] 
        }
    ]
}
```

## 例 11: priceCapacityOptimized フリートでスポットインスタンスを起動する
<a name="fleet-config11"></a>

次の例は、容量と最低価格の両方を最適化するスポット配分戦略を使用するスポットフリートを設定する方法を示しています。価格を考慮しながら容量を最適化するには、スポット `AllocationStrategy` を `priceCapacityOptimized` に設定する必要があります。

次の例では、3 つの起動仕様で 3 つのスポットキャパシティプールが指定されています。ターゲット容量は 50 個のスポットインスタンスです。スポットフリートは、起動するインスタンス数に最適な容量を持つスポットキャパシティプールに 50 個のスポットインスタンスを起動し、同時に価格が最も低いプールを選択することを試みます。

```
{
    "SpotFleetRequestConfig": {
        "AllocationStrategy": "priceCapacityOptimized",
        "OnDemandAllocationStrategy": "lowestPrice",
        "ExcessCapacityTerminationPolicy": "default",
        "IamFleetRole": "arn:aws:iam::111111111111:role/aws-ec2-spot-fleet-tagging-role",
        "LaunchTemplateConfigs": [
            {
                "LaunchTemplateSpecification": {
                    "LaunchTemplateId": "lt-0123456789example",
                    "Version": "1"
                },
                "Overrides": [
                     {
                           "InstanceType": "r4.2xlarge",  
                           "AvailabilityZone": "us-west-2a"
                      },
                      {
                           "InstanceType": "m4.2xlarge",
                           "AvailabilityZone": "us-west-2b"
                      }, 
                      {
                           "InstanceType": "c5.2xlarge",
                           "AvailabilityZone": "us-west-2b"
                      }
                ]
            }
        ],
        "TargetCapacity": 50,
        "Type": "request"
    }
}
```

## 例 12: 属性ベースのインスタンスタイプの選択を設定する
<a name="fleet-config12"></a>

次の例は、インスタンスタイプの識別に属性ベースのインスタンスタイプ選択を使用するようにスポットフリートを設定する方法を示しています。必要なインスタンス属性を指定するには、`InstanceRequirements` 構造に属性を指定します。

次の例では、2 つのインスタンス属性が指定されています。
+ `VCpuCount` — 最低 2 つの vCPUs が指定されています。最大値は指定されていないため、上限はありません。
+ `MemoryMiB` — 4 MiB 以上のメモリが指定されています。最大値は指定されていないため、上限はありません。

2 つ以上の vCPUs と 4 MiB 以上のメモリを持つすべてのインスタンスタイプが識別されます。ただし、[スポットフリートがフリートをプロビジョニングする](ec2-fleet-attribute-based-instance-type-selection.md#how-ef-uses-abs)場合、価格保護と配分戦略によって一部のインスタンスタイプが除外される場合があります。

指定できるすべての属性のリストと説明については、「*Amazon EC2 API リファレンス*」の「[InstanceRequirements](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_InstanceRequirements.html)」を参照してください。

```
{
	"AllocationStrategy": "priceCapacityOptimized",
	"TargetCapacity": 20,
	"Type": "request",
	"LaunchTemplateConfigs": [{
		"LaunchTemplateSpecification": {
			"LaunchTemplateName": "my-launch-template",
			"Version": "1"
		},
		"Overrides": [{
			"InstanceRequirements": {
				"VCpuCount": {
					"Min": 2
				},
				"MemoryMiB": {
					"Min": 4
				}
			}
		}]
	}]
}
```

# EC2 フリートとスポットフリートのクォータ
<a name="fleet-quotas"></a>

AWS アカウント には、AWS のサービスごとにデフォルトのクォータ (以前は制限と呼ばれていました) があります。特に明記していない限り、クォータはリージョン固有です。

通常の Amazon EC2 のクォータは、EC2 フリートまたはスポットフリートが起動したインスタンスの、スポットインスタンスの上限やボリュームの制限などに適用されます。[Spot Instance クォータ](using-spot-limits.md)[Amazon EC2 インスタンスの Amazon EBS ボリューム制限](volume_limits.md)

また、AWS アカウントには EC2 フリートとスポットフリートに関連するクォータとして以下のものがあります。


****  

| クォータの説明 | クォータ | 
| --- | --- | 
| active、deleted\$1running、および cancelled\$1running 状態の、タイプ maintain および request であるリージョンあたりの EC2 フリートおよびスポットフリートの数 | 1,000 ¹ ² ³ | 
| タイプ instant である EC2 フリートの数。 | 無制限 | 
| EC2 フリートと、タイプ maintain および request のスポットフリートのスポットキャパシティプール (インスタンスタイプとサブネットの一意の組み合わせ) の数 | 300 ¹ | 
| タイプ instant の EC2 フリートのスポットキャパシティプール (インスタンスタイプとサブネットの一意の組み合わせ) の数 | 無制限 | 
| 起動仕様内のユーザーデータのサイズ | 16 KB ² | 
| EC2 フリートまたはスポットフリートあたりのターゲットキャパシティ | 10,000 | 
| リージョン内のすべての EC2 フリートおよびスポットフリートにおけるターゲットキャパシティ | 100,000 ¹ | 
|  EC2 フリートリクエストまたはスポットフリートリクエストは、リージョンにまたがることはできません。  |  | 
| EC2 フリートリクエストまたはスポットフリートリクエストは、同じアベイラビリティーゾーンからの複数の異なるサブネットにまたがることはできません。 |  | 

¹ これらのクォータは、EC2 フリートとスポットフリートの両方に適用されます。

² これらはハードクォータです。これらのクォータについては、引き上げをリクエストできません。

³ EC2 フリートを削除した後、またはスポットフリートリクエストをキャンセルした後、リクエストを削除またはキャンセルしたときにフリートがスポットインスタンスを終了*しない*ように指定していた場合、フリートリクエストは `deleted_running` (EC2 フリート) または `cancelled_running` (スポットフリート) 状態になり、インスタンスは中断されるか手動で終了されるまで引き続き実行されます。インスタンスを終了する場合、フリートリクエストは `deleted_terminating` (EC2 フリート) または `cancelled_terminating` (スポットフリート) 状態になるため、このクォータにはカウントされません。詳細については、「[EC2 フリートリクエストおよびフリート内のインスタンスを削除する](delete-fleet.md)」および「[スポットフリートリクエストをキャンセル (削除) します。](cancel-spot-fleet.md)」を参照してください。

## ターゲットキャパシティのクォータ引き上げをリクエストします
<a name="fleet-quota-increase-request"></a>

ターゲット容量のデフォルトクォータを超える容量が必要な場合は、クォータの引き上げをリクエストできます。

**ターゲットキャパシティのクォータ引き上げをリクエストするには**

1. サポート中央の [[Create case]](https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase&limitType=service-code-ec2-fleet) (ケースの作成) フォームを開いてください。

1. **[Service Limit increase]** (サービス制限の緩和) を選択してください。

1. **[Limit type]** (制限タイプ) には、**[EC2 Fleet]** (EC2 フリート) を選択してください。

1. **[Region]** (リージョン) には、クォータの増加をリクエストする AWS リージョンを選択してください。

1. **[Limit]** (制限) には、どちらのクォータを増やしたいかに応じて、**[Target Fleet Capacity per Fleet (in units)]** (フリートごとのターゲットフリート容量 (ユニット))、または **[Target Fleet Capacity per Region (in units)]** (リージョンごとのターゲットフリート容量 (ユニット)) のいずれかを選択してください。

1. **[新しい制限値]** (New limit value) の場合、任意の値を入力してください。

1. 別のクォータの引き上げを要求するには、**[Add another request]** (別のリクエストを追加) を選択し、ステップ 4 ～ 6 を繰り返します。

1. **[Use case description]** (ユースケースの説明) には、クォータの引き上げをリクエストする理由を入力してください。

1. **[Contact options]** (連絡先オプション)で、希望する連絡言語と連絡方法を指定します。

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