

# EC2 フリートの CLI 設定の例
<a name="ec2-fleet-examples"></a>

以下のように、JSON ファイルに EC2 フリート設定を定義し、[create-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-fleet.html) コマンドでそのファイルを参照して、フリートを作成できます。

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

以下の例は、EC2 フリートのさまざまなユースケースの起動設定を示しています。設定パラメータの詳細については、「 コマンドリファレンス」の [create-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-fleet.html) を参照してください。

**Topics**
+ [例 1: スポットインスタンスをデフォルト購入オプションとして起動する](#ec2-fleet-config1)
+ [例 2: オンデマンドインスタンスをデフォルト購入オプションとして起動する](#ec2-fleet-config2)
+ [例 3: オンデマンドインスタンスをプライマリ容量として起動する](#ec2-fleet-config3)
+ [例 4: 複数のキャパシティー予約を使用して オンデマンドインスタンス を起動する](#ec2-fleet-config5)
+ [例 5: 合計ターゲット容量が未使用キャパシティーの予約の数を超えたときに、キャパシティーの予約を使用してオンデマンドインスタンスを起動する](#ec2-fleet-config6)
+ [例 6: ターゲットのキャパシティー予約を使用してオンデマンドインスタンスを起動する](#ec2-fleet-config7)
+ [例 7: 容量の再調整を設定して代替スポットインスタンスを起動する](#ec2-fleet-config8)
+ [例 8: 容量最適化フリートでスポットインスタンスを起動する](#ec2-fleet-config9)
+ [例 9: 優先順位のある容量最適化フリートでスポットインスタンスを起動する](#ec2-fleet-config10)
+ [例 10: price-capaity-optimized フリートでスポットインスタンスを起動する](#ec2-fleet-config11)
+ [例 11: 属性ベースのインスタンスタイプの選択を設定する](#ec2-fleet-config12)

タイプ `instant` のフリートに対する他の CLI の例については、「[タイプが instant の EC2 フリートを設定する](instant-fleet.md)」を参照してください。

## 例 1: スポットインスタンスをデフォルト購入オプションとして起動する
<a name="ec2-fleet-config1"></a>

次の例では、EC2 フリートで必要な最小限のパラメータ (起動テンプレート、ターゲットキャパシティ、デフォルト購入オプション) を指定します。起動テンプレートは、起動テンプレート ID とバージョン番号によって識別されます。フリートのターゲット容量は 2 インスタンスであり、デフォルト購入オプションは `spot` です。この結果、フリートは 2 スポットインスタンス を起動します。

```
{
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateId": "lt-0e8c754449b27161c",
                "Version": "1"
            }

        }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 2,
        "DefaultTargetCapacityType": "spot"
    }
}
```

## 例 2: オンデマンドインスタンスをデフォルト購入オプションとして起動する
<a name="ec2-fleet-config2"></a>

次の例では、EC2 フリート で必要な最小限のパラメータ (起動テンプレート、ターゲット容量、デフォルト購入オプション) を指定します。起動テンプレートは、起動テンプレート ID とバージョン番号によって識別されます。フリートのターゲット容量は 2 インスタンスであり、デフォルト購入オプションは `on-demand` です。この結果、フリートは 2 オンデマンドインスタンス を起動します。

```
{
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateId": "lt-0e8c754449b27161c",
                "Version": "1"
            }

        }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 2,
        "DefaultTargetCapacityType": "on-demand"
    }
}
```

## 例 3: オンデマンドインスタンスをプライマリ容量として起動する
<a name="ec2-fleet-config3"></a>

次の例では、フリートの合計ターゲット容量 2 インスタンス、ターゲット容量を 1 オンデマンドインスタンスとして指定します。デフォルト購入オプションは `spot` です。フリートは指定されたとおり 1 オンデマンドインスタンス を起動しますが、合計ターゲット容量を満たすために、さらに 1 つ以上のインスタンスを起動する必要があります。差額の購入オプションは、`TotalTargetCapacity` - `OnDemandTargetCapacity` = `DefaultTargetCapacityType` で計算されます。この結果、フリートはスポットインスタンスを起動します。

```
{
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateId": "lt-0e8c754449b27161c",
                "Version": "1"
            }

        }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 2,
        "OnDemandTargetCapacity": 1,
        "DefaultTargetCapacityType": "spot"
    }
}
```

## 例 4: 複数のキャパシティー予約を使用して オンデマンドインスタンス を起動する
<a name="ec2-fleet-config5"></a>

キャパシティ予約の使用戦略を `use-capacity-reservations-first` に設定することで、オンデマンドインスタンスの起動時に最初にオンデマンドキャパシティ予約を使用するようにフリートを設定できます。この例では、目標容量を満たすために必要以上のキャパシティ予約がある場合に、フリートが使用するキャパシティ予約を選択する方法を示します。

この例では、フリート設定は次のようになります。
+ ターゲット容量:12 オンデマンドインスタンス
+ 未使用のキャパシティー予約の合計:15 (フリートの目標容量である 12 オンデマンドインスタンスを超えています)
+ キャパシティ予約プールの数:3 (`m5.large`、`m4.xlarge`、および`m4.2xlarge`)
+ プールあたりのキャパシティ予約数:5
+ オンデマンド割り当て戦略：`lowest-price`(複数のインスタンスプールに未使用のキャパシティ予約が複数ある場合、フリートはオンデマンド割り当て戦略に基づいてオンデマンドインスタンスを起動するプールを決定します)。

  また、`lowest-price`割り当て戦略の代わりに`prioritized`割り当て戦略を使用することもできます。

**キャパシティ予約**

アカウントには、3 つの異なるプールに以下の 15 個の未使用のキャパシティ予約があります。各プールのキャパシティ予約の数は `AvailableInstanceCount` で示されます。

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

{
    "CapacityReservationId": "cr-222", 
    "InstanceType": "m4.xlarge", 
    "InstancePlatform": "Linux/UNIX", 
    "AvailabilityZone": "us-east-1a", 
    "AvailableInstanceCount": 5, 
    "InstanceMatchCriteria": "open", 
    "State": "active"
}

{
    "CapacityReservationId": "cr-333", 
    "InstanceType": "m4.2xlarge", 
    "InstancePlatform": "Linux/UNIX", 
    "AvailabilityZone": "us-east-1a", 
    "AvailableInstanceCount":5, 
    "InstanceMatchCriteria": "open", 
    "State": "active"
}
```

**フリート設定**

以下のフリート設定は、この例に関連する設定のみを示しています。合計ターゲット容量は 12 で、デフォルトのターゲット容量タイプは `on-demand` です。オンデマンド配分戦略は`lowest-price`です。キャパシティ予約の使用戦略は`use-capacity-reservations-first`です。

この例では、オンデマンドインスタンスの料金は以下のようになります。
+ `m5.large` – 1 時間あたり 0.096 USD
+ `m4.xlarge` – 1 時間あたり 0.20 USD
+ `m4.2xlarge` – 1 時間あたり 0.40 USD

**注記**  
フリートタイプはタイプ`instant`である必要があります。他のフリートタイプは`use-capacity-reservations-first`をサポートしていません。

```
{
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateId": "lt-abc1234567example",
                "Version": "1"
            },
            "Overrides": [
                {
                  "InstanceType": "m5.large",
                  "AvailabilityZone": "us-east-1a",
                  "WeightedCapacity": 1
                },
                {
                  "InstanceType": "m4.xlarge",
                  "AvailabilityZone": "us-east-1a",
                  "WeightedCapacity": 1
                },
                {
                  "InstanceType": "m4.2xlarge",
                  "AvailabilityZone": "us-east-1a",
                  "WeightedCapacity": 1
                }
              ]

        }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 12,
        "DefaultTargetCapacityType": "on-demand"
    },
    "OnDemandOptions": {
        "AllocationStrategy": "lowest-price",
        "CapacityReservationOptions": {
            "UsageStrategy": "use-capacity-reservations-first"
        }
    },
    "Type": "instant"
}
```

上記の設定を使用して `instant` フリートを作成すると、目標容量を満たすために以下の 12 個のインスタンスが起動されます。
+ `us-east-1a`の中の`us-east-1a` – `m5.large`にある 5 つの`m5.large`オンデマンドインスタンスが最低価格です。そしてそこに 5 つの利用可能な未使用の`m5.large`キャパシティー予約があります。
+ 5 つの`m4.xlarge`オンデマンドインスタンス (us-east-1a) – `m4.xlarge` `us-east-1a`は次に低い料金であり、利用可能な未使用`m4.xlarge`キャパシティーの予約が 5 つあります。
+ 2 つの`m4.2xlarge`オンデマンドインスタンス (us-east-1a) – `m4.2xlarge` `us-east-1a`は 3 番目に低い料金であり、利用可能な未使用`m4.2xlarge`キャパシティーの予約は 5 つあります。そのうちの 2 つのみが目標容量を満たすために必要です。

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

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

{
    "CapacityReservationId": "cr-222",
    "InstanceType": "m4.xlarge", 
    "AvailableInstanceCount": 0
}

{
    "CapacityReservationId": "cr-333",
    "InstanceType": "m4.2xlarge", 
    "AvailableInstanceCount": 3
}
```

## 例 5: 合計ターゲット容量が未使用キャパシティーの予約の数を超えたときに、キャパシティーの予約を使用してオンデマンドインスタンスを起動する
<a name="ec2-fleet-config6"></a>

キャパシティ予約の使用戦略を `use-capacity-reservations-first` に設定することで、オンデマンドインスタンスの起動時に最初にオンデマンドキャパシティ予約を使用するようにフリートを設定できます。この例では、総ターゲット容量が使用可能な未使用のキャパシティ予約数を超えた場合に、オンデマンドインスタンスを起動するインスタンスプールをフリートがどのように選択するかを示します。

この例では、フリート設定は次のようになります。
+ ターゲット容量:16 オンデマンドインスタンス
+ 未使用キャパシティー予約の合計:15 (フリートのターゲット容量である 16 オンデマンドインスタンスを下回っています)
+ キャパシティ予約プールの数:3 (`m5.large`、`m4.xlarge`、および`m4.2xlarge`)
+ プールあたりのキャパシティ予約数:5
+ オンデマンド割り当て戦略：`lowest-price`(未使用キャパシティーの予約の数が目標オンデマンド容量より少ない場合、フリートは、オンデマンド配分戦略に基づいて、残りのオンデマンド容量を起動するプールを決定します)。

  また、`lowest-price`割り当て戦略の代わりに`prioritized`割り当て戦略を使用することもできます。

**キャパシティ予約**

アカウントには、3 つの異なるプールに以下の 15 個の未使用のキャパシティ予約があります。各プールのキャパシティ予約の数は `AvailableInstanceCount` で示されます。

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

{
    "CapacityReservationId": "cr-222", 
    "InstanceType": "m4.xlarge", 
    "InstancePlatform": "Linux/UNIX", 
    "AvailabilityZone": "us-east-1a", 
    "AvailableInstanceCount": 5, 
    "InstanceMatchCriteria": "open", 
    "State": "active"
}

{
    "CapacityReservationId": "cr-333", 
    "InstanceType": "m4.2xlarge", 
    "InstancePlatform": "Linux/UNIX", 
    "AvailabilityZone": "us-east-1a", 
    "AvailableInstanceCount":5, 
    "InstanceMatchCriteria": "open", 
    "State": "active"
}
```

**フリート設定**



以下のフリート設定は、この例に関連する設定のみを示しています。合計ターゲット容量は 16 で、デフォルトのターゲット容量タイプは `on-demand` です。オンデマンド配分戦略は`lowest-price`です。キャパシティ予約の使用戦略は`use-capacity-reservations-first`です。

この例では、オンデマンドインスタンスの料金は以下のようになります。
+ m5.large – 0.096 USD/時間
+ m4.xlarge – 0.20 USD/時間
+ m4.2xlarge – 0.40 USD/時間

**注記**  
フリートタイプは`instant`である必要があります。他のフリートタイプは`use-capacity-reservations-first`をサポートしていません。

```
{
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateId": "lt-0e8c754449b27161c",
                "Version": "1"
            },
            "Overrides": [
                {
                  "InstanceType": "m5.large",
                  "AvailabilityZone": "us-east-1a",
                  "WeightedCapacity": 1
                },
                {
                  "InstanceType": "m4.xlarge",
                  "AvailabilityZone": "us-east-1a",
                  "WeightedCapacity": 1
                },
                {
                  "InstanceType": "m4.2xlarge",
                  "AvailabilityZone": "us-east-1a",
                  "WeightedCapacity": 1
                }
              ]

        }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 16,
        "DefaultTargetCapacityType": "on-demand"
    },
    "OnDemandOptions": {
        "AllocationStrategy": "lowest-price"
        "CapacityReservationOptions": {
            "UsageStrategy": "use-capacity-reservations-first"
        }
    },
    "Type": "instant",
}
```

上記の設定を使用して `instant` フリートを作成すると、目標容量を満たすために以下の 16 個のインスタンスが起動されます。
+ 6 つの`m5.large`オンデマンドインスタンス (`us-east-1a`の`us-east-1a` – `m5.large`) が最低価格です。そして 5 つの利用可能な未使用`m5.large`キャパシティーの予約があります。5 つのオンデマンドインスタンスを起動するために、キャパシティ予約が最初に使用されます。残りの`m4.xlarge`および`m4.2xlarge`キャパシティーの予約を使用してターゲット容量を満たすために、追加のオンデマンドインスタンスは、オンデマンド配分戦略 (この例では`lowest-price`) に従って起動します。
+ 5 つの`m4.xlarge`オンデマンドインスタンス (`us-east-1a` の `us-east-1a` – `m4.xlarge`) が次に低い料金であり、5 つの利用可能な未使用`m4.xlarge`キャパシティーの予約があります。
+ 5 つの`m4.2xlarge`オンデマンドインスタンス (`us-east-1a` の `us-east-1a` – `m4.2xlarge`) が 3 番目に低い料金であり、5 つの利用可能な未使用`m4.2xlarge`キャパシティーの予約があります。

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

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

{
    "CapacityReservationId": "cr-222",
    "InstanceType": "m4.xlarge", 
    "AvailableInstanceCount": 0
}

{
    "CapacityReservationId": "cr-333",
    "InstanceType": "m4.2xlarge", 
    "AvailableInstanceCount": 0
}
```

## 例 6: ターゲットのキャパシティー予約を使用してオンデマンドインスタンスを起動する
<a name="ec2-fleet-config7"></a>

キャパシティーの予約の使用戦略を`use-capacity-reservations-first`に設定することで、オンデマンドインスタンスの起動時に最初に`targeted`オンデマンドキャパシティー予約を使用するようにフリートを設定できます。この例では、オンデマンドインスタンスを`targeted`キャパシティ予約で起動する方法を示します。キャパシティ予約の属性は、アベイラビリティーゾーン (`us-east-1a`および`us-east-1b`) を除いて同じになります。また、総ターゲット容量が使用可能な未使用のキャパシティ予約数を超えた場合に、オンデマンドインスタンスを起動するインスタンスプールをフリートがどのように選択するかについても説明します。

この例では、フリート設定は次のようになります。
+ ターゲット容量:10 オンデマンドインスタンス
+ 未使用の合計`targeted`キャパシティー予約:6 (フリートの目標オンデマンド容量である 10 オンデマンドインスタンスを下回っています)
+ キャパシティ予約のプールの数:2 (`us-east-1a`および`us-east-1b`)
+ プールあたりのキャパシティ予約数:3
+ オンデマンド割り当て戦略：`lowest-price`(未使用キャパシティーの予約の数が目標オンデマンド容量より少ない場合、フリートは、オンデマンド配分戦略に基づいて、残りのオンデマンド容量を起動するプールを決定します)。

  また、`lowest-price`割り当て戦略の代わりに`prioritized`割り当て戦略を使用することもできます。

この例を実行するために必要な手順のチュートリアルについては、[チュートリアル: ターゲットのキャパシティ予約を使用してオンデマンドインスタンスを起動するように EC2 フリートを設定する](ec2-fleet-launch-on-demand-instances-using-targeted-capacity-reservations-walkthrough.md)を参照してください。

**キャパシティ予約**

アカウントには、2 つの異なるプールに以下の 6 個の未使用キャパシティーの予約があります。この例では、プールはアベイラビリティーゾーンによって異なります。各プールのキャパシティ予約の数は `AvailableInstanceCount` で示されます。

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

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

**フリート設定**

以下のフリート設定は、この例に関連する設定のみを示しています。合計ターゲット容量は 10 で、デフォルトのターゲット容量タイプは`on-demand`です。オンデマンド配分戦略は`lowest-price`です。キャパシティ予約の使用戦略は`use-capacity-reservations-first`です。

この例では、`us-east-1`での`c5.xlarge`のオンデマンドインスタンスの料金は時間当たり 0.17 USD になります。

**注記**  
フリートタイプは`instant`である必要があります。他のフリートタイプは`use-capacity-reservations-first`をサポートしていません。

```
{
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateName": "my-launch-template",
                "Version": "1"
            },
            "Overrides": [
               {
                   "InstanceType": "c5.xlarge",
                   "AvailabilityZone": "us-east-1a"
               },
               {
                    "InstanceType": "c5.xlarge",
                    "AvailabilityZone": "us-east-1b"
               }
            ]
        }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 10,
        "DefaultTargetCapacityType": "on-demand"
    },
    "OnDemandOptions": {
        "AllocationStrategy": "lowest-price",
        "CapacityReservationOptions": {
             "UsageStrategy": "use-capacity-reservations-first"
         }
    },
    "Type": "instant"
}
```

上記の設定を使用して`instant`フリートを作成すると、目標容量を満たすために以下の 10 個のインスタンスが起動されます。
+ 次のように、6 つのオンデマンドインスタンスを起動するために、キャパシティ予約が最初に使用されます。
  + 3 つのオンデマンドインスタンスが、`us-east-1a`での 3 つの`c5.xlarge``targeted`キャパシティー予約で起動します。
  + 3 つのオンデマンドインスタンスが、`us-east-1b`での 3 つの`c5.xlarge``targeted`キャパシティー予約で起動します。
+ ターゲット容量を満たすために、4 つの追加のオンデマンドインスタンスは、オンデマンド配分戦略 (この例では`lowest-price`) に従って通常のオンデマンド容量で起動します。ただし、プールの価格は同じであるため (価格はアベイラビリティーゾーンごとではなく、リージョンごとであるため)、フリートは残りの 4 つのオンデマンドインスタンスをいずれかのプールで起動します。

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

```
{
    "CapacityReservationId": "cr-111",
    "InstanceType": "c5.xlarge",  
    "AvailableInstanceCount": 0
}

{
    "CapacityReservationId": "cr-222",
    "InstanceType": "c5.xlarge", 
    "AvailableInstanceCount": 0
}
```

## 例 7: 容量の再調整を設定して代替スポットインスタンスを起動する
<a name="ec2-fleet-config8"></a>

次の例では、Amazon EC2 がフリートのスポットインスタンスに再調整に関する推奨を送信したときに、代替スポットインスタンスを起動するように EC2 フリートを設定します。スポットインスタンスの自動代替を設定するには、`ReplacementStrategy` で、`launch-before-terminate` を指定します。置換用の新しいスポットインスタンスが起動してから、古いスポットインスタンスが自動的に削除されるまでの時間を設定するには、`termination-delay` に値を秒単位で指定します。詳細については、「[設定オプション](ec2-fleet-capacity-rebalance.md#ec2-fleet-capacity-rebalance-config-options)」を参照してください。

**注記**  
`launch-before-terminate` を使用するのは、インスタンスのシャットダウン処理にかかる時間を予測できる場合に限り、これらの処理が完了した後に古いインスタンスが終了するようにすることをお勧めします。実行中は、すべてのインスタンスに対して課金されます。

容量の再調整戦略の有効性は、EC2 フリートリクエストで指定されたスポットキャパシティプールの数に左右されます。インスタンスタイプとアベイラビリティーゾーンの多様なセットを使ってフリートを設定し、`AllocationStrategy` では `capacity-optimized` を指定することをお勧めします。EC2 フリート の容量の再調整を行う際に考慮すべき事項の詳細については、「」を参照してください。[EC2 フリートとスポットフリートでキャパシティの再調整を使用して、リスクのあるスポットインスタンスを置き換える](ec2-fleet-capacity-rebalance.md)

```
{
    "ExcessCapacityTerminationPolicy": "termination",
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateName": "LaunchTemplate",
                "Version": "1"
            },
                 "Overrides": [
                       {
                           "InstanceType": "c3.large",
                           "WeightedCapacity": 1,
                            "Placement": {
                               "AvailabilityZone": "us-east-1a"
                           }
                       },
                       {
                           "InstanceType": "c4.large",
                           "WeightedCapacity": 1,
                            "Placement": {
                               "AvailabilityZone": "us-east-1a"
                           }
                       },
                       {
                           "InstanceType": "c5.large",
                           "WeightedCapacity": 1,
                            "Placement": {
                               "AvailabilityZone": "us-east-1a"
                           }
                       }
                ] 
          }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 5,
        "DefaultTargetCapacityType": "spot"
    },
    "SpotOptions": {
        "AllocationStrategy": "capacity-optimized",
        "MaintenanceStrategies": {
            "CapacityRebalance": {
                "ReplacementStrategy": "launch-before-terminate",
                "TerminationDelay": "720"
            }
        }
    }
}
```

## 例 8: 容量最適化フリートでスポットインスタンスを起動する
<a name="ec2-fleet-config9"></a>

次の例は、容量を最適化するスポット配分戦略で、EC2 フリートを設定する方法を示しています。容量を最適化するには、`AllocationStrategy` を `capacity-optimized` に設定する必要があります。

次の例では、3 つの起動仕様で 3 つのスポットキャパシティプールが指定されています。ターゲット容量はスポットインスタンス 50 個です。EC2 フリートは、起動中のインスタンス数の最適な容量のスポットキャパシティープールに 50 個のスポットインスタンスを起動しようとします。

```
{
    "SpotOptions": {
        "AllocationStrategy": "capacity-optimized",
        },
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateName": "my-launch-template",
                "Version": "1"
            },
                 "Overrides": [
                       {
                           "InstanceType": "r4.2xlarge",
                           "Placement": {
                               "AvailabilityZone": "us-west-2a"
                           },
                      },
                       {
                           "InstanceType": "m4.2xlarge",
                           "Placement": {
                               "AvailabilityZone": "us-west-2b"
                           },
                       }, 
                       {
                           "InstanceType": "c5.2xlarge",
                           "Placement": {
                               "AvailabilityZone": "us-west-2b"
                           }
                       }
                 ] 
           }
    ],
    "TargetCapacitySpecification": {
            "TotalTargetCapacity": 50,
            "DefaultTargetCapacityType": "spot"

    }
}
```

## 例 9: 優先順位のある容量最適化フリートでスポットインスタンスを起動する
<a name="ec2-fleet-config10"></a>

次の例は、ベストエフォートベースで優先順位を使用しながら、容量を最適化するスポット配分戦略を使用して、EC2 フリートを設定する方法を示しています。

`capacity-optimized-prioritized` 配分戦略を使用する場合は、`Priority` パラメータを使用して、スポットキャパシティプールの優先順位を指定します。数値が小さいほど優先順位が高くなります。また、優先度が同じならば、複数のスポットキャパシティープールに同じ優先順位を設定することもできます。プールに優先順位を設定しない場合、そのプールは優先順位が最も低いとみなされます。

スポットキャパシティプールに優先順位を付けるには、`AllocationStrategy` を `capacity-optimized-prioritized` に設定する必要があります。EC2 フリートは最初に容量を最適化しますが、インスタンスタイプの優先順位をベストエフォートベースで決定します (例えば、優先順位を尊重しても、EC2 フリートの最適な容量をプロビジョニングする能力に大きな影響を与えない場合など) 。これは、中断の可能性を最小限に抑える必要があり、特定のインスタンスタイプを優先することが重要なワークロードに適したオプションです。

次の例では、3 つの起動仕様で 3 つのスポットキャパシティープールが指定されています。各プールには優先順位が設定されています。数値が小さいほど優先順位が高くなります。ターゲット容量は 50 個のスポットインスタンスです。EC2 フリートは、ベストエフォートベースで優先順位が最も高いスポットキャパシティープールに 50 個のスポットインスタンスを起動しようとしますが、最初に容量を最適化します。

```
{
    "SpotOptions": {
        "AllocationStrategy": "capacity-optimized-prioritized"
        },
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateName": "my-launch-template",
                "Version": "1"
            },
                 "Overrides": [
                        {
                           "InstanceType": "r4.2xlarge",    
                           "Priority": 1,
                           "Placement": {
                               "AvailabilityZone": "us-west-2a"
                           },
                      },
                       {
                           "InstanceType": "m4.2xlarge",
                           "Priority": 2,
                           "Placement": {
                               "AvailabilityZone": "us-west-2b"
                           },
                       }, 
                       {
                           "InstanceType": "c5.2xlarge",
                           "Priority": 3,
                           "Placement": {
                               "AvailabilityZone": "us-west-2b"
                           }
                       }
                  ] 
             }
    ],
    "TargetCapacitySpecification": {
            "TotalTargetCapacity": 50,
            "DefaultTargetCapacityType": "spot"
}
```

## 例 10: price-capaity-optimized フリートでスポットインスタンスを起動する
<a name="ec2-fleet-config11"></a>

次の例は、容量と価格の両方を最適化するスポット配分戦略で、EC2 フリートを設定する方法を示しています。価格を考慮しながら容量を最適化するには、スポット `AllocationStrategy` を `price-capacity-optimized` に設定する必要があります。

次の例では、3 つの起動仕様で 3 つのスポットキャパシティプールが指定されています。ターゲット容量は 50 個のスポットインスタンスです。EC2 フリートは、起動するインスタンス数に最適な容量を持つスポットキャパシティプールに 50 個のスポットインスタンスを起動し、同時に価格が最も低いプールを選択することを試みます。

```
{
    "SpotOptions": {
        "AllocationStrategy": "price-capacity-optimized",
        "MinTargetCapacity": 2,
        "SingleInstanceType": true
    },
    "OnDemandOptions": {
        "AllocationStrategy": "lowest-price"
    },
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateName": "my-launch-template",
                "Version": "1"
            },
                 "Overrides": [
                       {
                           "InstanceType": "r4.2xlarge",
                           "Placement": {
                               "AvailabilityZone": "us-west-2a"
                           },
                      },
                       {
                           "InstanceType": "m4.2xlarge",
                           "Placement": {
                               "AvailabilityZone": "us-west-2b"
                           },
                       }, 
                       {
                           "InstanceType": "c5.2xlarge",
                           "Placement": {
                               "AvailabilityZone": "us-west-2b"
                           }
                       }
                 ] 
           }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 50,
        "OnDemandTargetCapacity":0,
        "SpotTargetCapacity":50,
        "DefaultTargetCapacityType": "spot"
    },
    "Type": "instant"
}
```

## 例 11: 属性ベースのインスタンスタイプの選択を設定する
<a name="ec2-fleet-config12"></a>

次の例は、インスタンスタイプの識別に属性ベースのインスタンスタイプ選択を使用するように EC2 フリート を設定する方法を示しています。必要なインスタンス属性を指定するには、`InstanceRequirements` 構造に属性を指定します。

次の例では、2 つのインスタンス属性が指定されています。
+ `VCpuCount` — 最低 2 つの vCPUs が指定されています。最大値は指定されていないため、上限はありません。
+ `MemoryMiB` — 4 MiB 以上のメモリが指定されています。最大値は指定されていないため、上限はありません。

2 つ以上の vCPUs と 4 MiB 以上のメモリを持つすべてのインスタンスタイプが識別されます。ただし、[EC2 フリートがフリートをプロビジョニングする](ec2-fleet-attribute-based-instance-type-selection.md#how-ef-uses-abs)場合、価格保護と配分戦略によって一部のインスタンスタイプが除外される場合があります。

指定できるすべての属性のリストと説明については、「*Amazon EC2 API リファレンス*」の「[InstanceRequirements](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_InstanceRequirements.html)」を参照してください。

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