

# 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) を参照してください。