

# EC2 フリートのチュートリアル
<a name="fleet-tutorials"></a>

EC2 フリートを設定するには、さまざまな方法があります。選択する設定は、特定のユースケースによって異なります。

以下のチュートリアルでは、考えられるユースケースの一部について説明し、その実装に必要なタスクについて説明します。


| ユースケース | チュートリアルへのリンク | 
| --- | --- | 
|  **インスタンスの重み付けを使用して、EC2 フリートの可用性とパフォーマンスを管理します。** インスタンスの重み付けでは、EC2 フリート内の各インスタンスタイプに重みを割り当てて、それぞれのコンピューティングキャパシティとパフォーマンスを相対的に表します。この重みに基づいて、目的のターゲットキャパシティを満たしている限り、指定されたインスタンスタイプを任意に組み合わせて使用できます。  | [チュートリアル: インスタンスの重み付けを使用するように EC2 フリートを設定する](ec2-fleet-instance-weighting-walkthrough.md) | 
|  **オンデマンドキャパシティを使用して、ピーク時の可用性を確保します。また、追加のスポットキャパシティを低コストで活用します。** ピーク時に使用可能なキャパシティを確保するために、プライマリキャパシティとしてオンデマンドインスタンスを使用するように EC2 フリートを設定します。また、Amazon EC2 がキャパシティを必要とする場合、スポットインスタンスが中断される可能性があることに留意しながら、スポットインスタンスにある程度のキャパシティを割り当てて、割引料金の恩恵を受けることができます。  | [チュートリアル: オンデマンドインスタンスをプライマリキャパシティとして使用するように EC2 フリートを設定する](ec2-fleet-on-demand-walkthrough.md) | 
|  **キャパシティ予約を使用して、オンデマンドインスタンスのコンピューティングキャパシティを予約します。** オンデマンドインスタンスを起動するときに、`targeted` キャパシティ予約を最初に使用するように EC2 フリートを設定します。キャパシティ要件が厳しく、一定レベルの長期または短期のキャパシティ保証を必要とするビジネスクリティカルなワークロードを実行している場合は、キャパシティ予約を作成して、必要なときに、必要な限り常に Amazon EC2 キャパシティにアクセスできるようにすることをお勧めします。  | [チュートリアル: ターゲットのキャパシティ予約を使用してオンデマンドインスタンスを起動するように EC2 フリートを設定する](ec2-fleet-launch-on-demand-instances-using-targeted-capacity-reservations-walkthrough.md) | 
|  **キャパシティブロックを使用して、ML ワークロードの非常に需要の高い GPU インスタンスを予約します。** キャパシティブロックにインスタンスを起動するように EC2 フリートを設定します。  | [チュートリアル: キャパシティブロックにインスタンスを起動するように EC2 フリートを設定する](ec2-fleet-launch-instances-capacity-blocks-walkthrough.md) | 
|  **中断可能なキャパシティ予約を使用して、アイドル状態のキャパシティを AWS 組織全体で一時的に再利用してコストを削減します。** AWS 組織内の予備容量を表す中断可能なキャパシティ予約に対してインスタンスを起動するように EC2 フリートを設定します。キャパシティ所有者はいつでもキャパシティを再利用できます。EC2 は再利用されると、2 分間の通知後にインスタンスを終了します。  | [チュートリアル: キャパシティ予約に対してインスタンスを起動するように EC2 フリートを設定する](ec2-fleet-launch-instances-interruptible-cr-walkthrough.md) | 

# チュートリアル: インスタンスの重み付けを使用するように EC2 フリートを設定する
<a name="ec2-fleet-instance-weighting-walkthrough"></a>

このチュートリアルでは、サンプル株式会社という名前の架空の会社を使用して、インスタンスの分量指定を使った EC2 フリートリクエストのプロセスを説明します。

## 目的
<a name="ec2-fleet-instance-weighting-walkthrough-objective"></a>

製薬会社であるサンプル株式会社は、癌と闘うために使用できる可能性のある化合物をスクリーニングするために Amazon EC2 の計算処理能力を活用したいと考えています。

## 計画
<a name="ec2-fleet-instance-weighting-walkthrough-planning"></a>

サンプル株式会社はまず、「[Spot Best Practices](https://aws.amazon.com/ec2/spot/getting-started/#bestpractices)」を確認します。次に、サンプル株式会社は EC2 フリート に関する要件を確認します。

**インスタンスタイプ**  
サンプル株式会社には、60 GB 以上のメモリと 8 つの仮想 CPU (vCPU) で最適に実行される、計算能力とメモリに負担がかかるアプリケーションがあります。同社は、できるだけ低価格でアプリケーション用のこれらのリソースを最大化したいと考えています。サンプル株式会社は、以下のいずれかの EC2 インスタンスタイプがそのニーズを満たすと判断します。


| インスタンスタイプ | メモリ (GiB) | vCPU | 
| --- | --- | --- | 
|  r3.2xlarge  |  61  |  8  | 
|  r3.4xlarge  |  122  |  16  | 
|  r3.8xlarge  |  244  |  32  | 

**ユニット単位のターゲット容量**  
インスタンスの分量指定を使用すると、ターゲット容量はインスタンスの数 (デフォルト)、またはコア (vCPU)、メモリ (GiB) とストレージ (GB) との要素の組み合わせで表すことができます。アプリケーションのベース (60 GB の RAM と 8 個の vCPU) を 1 ユニットとして考えることで、サンプル株式会社はこの量の 20 倍で十分ニーズに合うと決定します。これにより、会社は EC2 フリートリクエストのターゲットキャパシティを 20 ユニットに設定します。

**インスタンスの分量**  
ターゲット容量の決定後、サンプル株式会社はインスタンスの分量を計算します。各インスタンスタイプのインスタンスの分量を計算することは、以下のように、ターゲット容量に達するために必要な各インスタンスタイプのユニットの数を決定することです。
+ r3.2xlarge (61.0 GB、8 個の vCPU) = 1/20 ユニット
+ r3.4xlarge (122.0 GB、16 個の vCPU) = 2/20 ユニット
+ r3.8xlarge (244.0 GB、32 個の vCPU) = 4/20 ユニット

これよりサンプル株式会社は、1、2 と 4 のインスタンス分量を EC2 フリート リクエストのそれぞれの起動設定に割り当てます。

**ユニット時間あたりの価格**  
サンプル株式会社は、料金の出発点としてインスタンス時間あたりの「[オンデマンド料金](https://aws.amazon.com/ec2/pricing/)」を使用します。最近のスポット料金または 2 つの組み合わせを使用することもできます。ユニット時間あたりの料金を計算するために、インスタンス時間あたりの出発点の料金を分量で割ります。次に例を示します。


| インスタンスタイプ | オンデマンド価格 | インスタンスの分量 | ユニット時間あたりの価格 | 
| --- | --- | --- | --- | 
|  r3.2xLarge  |  \$10.7  |  1  |  \$10.7  | 
|  r3.4xLarge  |  \$11.4  |  2  |  \$10.7  | 
|  r3.8xLarge  |  \$12.8  |  4  |  \$10.7  | 

サンプル株式会社は、ユニット時間あたりのグローバルな料金として 0.7 USD を使用し、3 つのインスタンスタイプすべてで競争力を高めることもできます。また、`r3.8xlarge` の起動条件のなかで、1 ユニット時間あたりの全体料金を 0.7 USD、そして 1 ユニット時間あたりの指定入力料金を 0.9 USD とすることもできます。

## アクセス許可の確認
<a name="ec2-fleet-instance-weighting-walkthrough-permissions"></a>

EC2 フリート を作成する前に、サンプル株式会社は必要なアクセス許可の IAM ロールがあることを確認します。詳細については、「[EC2 フリートの前提条件](ec2-fleet-prerequisites.md)」を参照してください。

## 起動テンプレートの作成
<a name="ec2-fleet-instance-weighting-create-launch-template"></a>

次に、Example Corp は起動テンプレートを作成します。起動テンプレート ID は、次のステップで使用されます。詳細については、「[Amazon EC2 起動テンプレートを作成する](create-launch-template.md)」を参照してください。

## EC2 フリート の作成
<a name="ec2-fleet-instance-weighting-walkthrough-request"></a>

サンプル株式会社は、その EC2 フリート用に次の設定を使用して `config.json` ファイルを作成します。次の例では、リソース識別子を独自のリソース識別子に置き換えます。

```
{ 
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateId": "lt-07b3bc7625cdab851", 
                "Version": "1"
            }, 
            "Overrides": [
                {
                    "InstanceType": "r3.2xlarge", 
                    "SubnetId": "subnet-482e4972", 
                    "WeightedCapacity": 1
                },
                {
                    "InstanceType": "r3.4xlarge", 
                    "SubnetId": "subnet-482e4972", 
                    "WeightedCapacity": 2
                },
                {
                    "InstanceType": "r3.8xlarge", 
                    "MaxPrice": "0.90", 
                    "SubnetId": "subnet-482e4972", 
                    "WeightedCapacity": 4
                }
            ]
        }
    ], 
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 20, 
        "DefaultTargetCapacityType": "spot"
    }
}
```

サンプル株式会社は、次の create-fleet コマンドを使用して EC2 フリート を作成します。[https://docs.aws.amazon.com/cli/latest/reference/ec2/create-fleet.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-fleet.html)

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

詳細については、「[EC2 フリートの作成](create-ec2-fleet.md)」を参照してください。

## フルフィルメント
<a name="ec2-fleet-instance-weighting-walkthrough-fulfillment"></a>

配分戦略では、スポットインスタンスの提供元となるスポットキャパシティプールが決定されます。

`lowest-price` 戦略 (デフォルトの戦略) では、受理時にユニットあたりの料金が最低値であるプールから スポットインスタンス が取得されます。20 ユニットの容量を提供するためには、20 個の `r3.2xlarge` インスタンス (20 ÷ 1)、10 個の `r3.4xlarge` インスタンス (20 ÷ 2)、あるいは 5 個の `r3.8xlarge` インスタンス (20 ÷ 4) が EC2 フリート から起動されることになります。

サンプル株式会社が `diversified` 戦略を採用する場合、スポットインスタンス は 3 つのすべてのプールから取得されます。EC2 フリート は、6 個の `r3.2xlarge` インスタンス (6 ユニットを提供)、3 個の `r3.4xlarge` インスタンス (6 ユニットを提供)、そして 2 個の `r3.8xlarge` インスタンス (8 ユニットを提供) の全部で 20 ユニットを起動します。

# チュートリアル: オンデマンドインスタンスをプライマリキャパシティとして使用するように EC2 フリートを設定する
<a name="ec2-fleet-on-demand-walkthrough"></a>

このチュートリアルでは、ABC Online という架空の会社を使用して、プライマリ容量および使用可能な場合はスポット容量としてオンデマンドの EC2 フリートをリクエストするプロセスを説明します。

## 目的
<a name="ec2-fleet-on-demand-walkthrough-objective"></a>

レストラン向け配達会社である ABC Online は、EC2 インスタンスタイプおよび購入オプション間で Amazon EC2 キャパシティをプロビジョンし、必要なスケール、パフォーマンス、コストの実現を目指しています。

## プラン
<a name="ec2-fleet-on-demand-walkthrough-planning"></a>

ABC Online はピーク時に対応するために固定キャパシティを必要としていますが、より低コストで追加キャパシティの恩恵を受けたいと考えています。ABC Online は、EC2 フリートについて以下の要件を設定しました。
+ オンデマンドインスタンス容量 - ABC Online には、ピーク期間のトラフィックに対応できるように、15 個のオンデマンドインスタンスが必要です。
+ スポットインスタンスキャパシティ – 低価格でパフォーマンスを向上させるために、ABC Online は 5 つのスポットインスタンスをプロビジョニングする予定です。

## アクセス許可の確認
<a name="ec2-fleet-on-demand-walkthrough-permissions"></a>

EC2 フリート を作成する前に、ABC Online は必要なアクセス許可の IAM ロールがあることを確認します。詳細については、「[EC2 フリートの前提条件](ec2-fleet-prerequisites.md)」を参照してください。

## 起動テンプレートの作成
<a name="ec2-fleet-on-demand-walkthrough-create-launch-template"></a>

次に、ABC Online によって起動テンプレートが作成されます。起動テンプレート ID は、次のステップで使用されます。詳細については、「[Amazon EC2 起動テンプレートを作成する](create-launch-template.md)」を参照してください。

## EC2 フリート の作成
<a name="ec2-fleet-on-demand-walkthrough-request"></a>

ABC Online は、その EC2 フリート用に次の設定を使用して `config.json` ファイルを作成します。次の例では、リソース識別子を独自のリソース識別子に置き換えます。

```
{
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateId": "lt-07b3bc7625cdab851",
                "Version": "2"
            }

        }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 20,
        "OnDemandTargetCapacity":15,
        "DefaultTargetCapacityType": "spot"
    }
}
```

ABC Online は、次の create-fleet コマンドを使用して EC2 フリート を作成します。[https://docs.aws.amazon.com/cli/latest/reference/ec2/create-fleet.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-fleet.html)

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

詳細については、「[EC2 フリートの作成](create-ec2-fleet.md)」を参照してください。

## フルフィルメント
<a name="ec2-fleet-on-demand-walkthrough-fulfillment"></a>

配分戦略により、オンデマンドキャパシティが常に受理され、使用可能なキャパシティがある場合はターゲットキャパシティがスポットとして受理されることが決定されます。

# チュートリアル: ターゲットのキャパシティ予約を使用してオンデマンドインスタンスを起動するように EC2 フリートを設定する
<a name="ec2-fleet-launch-on-demand-instances-using-targeted-capacity-reservations-walkthrough"></a>

このチュートリアルでは実行するべきステップを段階的に解説しています。それにより、EC2 フリートがオンデマンドインスタンスを`targeted`キャパシティー予約で起動できるようにします。

オンデマンドインスタンスの起動時に、最初に`targeted`オンデマンドキャパシティー予約を使用するようにフリートを設定する方法を学習します。また、オンデマンドターゲット容量の合計が使用可能な未使用のキャパシティ予約数を超えた場合、フリートは指定された割り当て戦略を使用して、残りのターゲット容量を起動するインスタンスプールを選択するようにフリートを設定する方法についても学習します。

**EC2 フリートの設定**

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

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

**`targeted`キャパシティ予約にオンデマンドインスタンスを起動するには、次のように、いくつかの手順を実行する必要があります：**
+ [

## ステップ 1: キャパシティー予約を作成する
](#ec2-fleet-odcr-step1)
+ [

## ステップ 2: キャパシティー予約のリソースグループを作成する
](#ec2-fleet-odcr-step2)
+ [

## ステップ 3: キャパシティ予約リソースグループにキャパシティ予約を追加する
](#ec2-fleet-odcr-step3)
+ [

## (オプション) ステップ 4: リソースグループのキャパシティーの予約を表示する
](#ec2-fleet-odcr-step4)
+ [

## ステップ 5: キャパシティ予約が特定のリソースグループをターゲットに指定する起動テンプレートを作成する
](#ec2-fleet-odcr-step5)
+ [

## (オプション) ステップ 6: 起動テンプレートを説明する
](#ec2-fleet-odcr-step6)
+ [

## ステップ 7: EC2 フリートを作成する
](#ec2-fleet-odcr-step7)
+ [

## (オプション) ステップ 8: 未使用のキャパシティ予約の残りの数を表示する
](#ec2-fleet-odcr-step8)

## ステップ 1: キャパシティー予約を作成する
<a name="ec2-fleet-odcr-step1"></a>

[キャパシティー予約の作成](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-capacity-reservation.html)コマンドを使用してキャパシティ予約を作成します。3 つは`us-east-1a`の目的に、別の3つは`us-east-1b`の目的にします。アベイラビリティーゾーンを除き、キャパシティー予約の他の属性は同じです。

**`us-east-1a`での 3 つのキャパシティー予約**

```
aws ec2 create-capacity-reservation \
    --availability-zone us-east-1a \
    --instance-type c5.xlarge \
    --instance-platform Linux/UNIX \
    --instance-count 3 \
    --instance-match-criteria targeted
```

キャパシティー予約 ID の結果の例

```
cr-1234567890abcdef1
```

**`us-east-1b`での 3 つのキャパシティー予約**

```
aws ec2 create-capacity-reservation \
    --availability-zone us-east-1b \
    --instance-type c5.xlarge \
    --instance-platform Linux/UNIX \
    --instance-count 3 \
    --instance-match-criteria targeted
```

キャパシティー予約 ID の結果の例

```
cr-54321abcdef567890
```

## ステップ 2: キャパシティー予約のリソースグループを作成する
<a name="ec2-fleet-odcr-step2"></a>

`resource-groups`サービスを使用する、および[グループを作成する](https://docs.aws.amazon.com/cli/latest/reference/resource-groups/create-group.html)コマンドを使用して、キャパシティー予約のリソースグループを作成します。この例では、プレイスメントグループ名は`my-cr-group`です。リソースグループを作成する必要がある理由の詳細については、[キャパシティ予約を使用して、EC2 フリートのオンデマンドキャパシティを予約する](ec2-fleet-on-demand-capacity-reservations.md)を参照してください。

```
aws resource-groups create-group \
    --name my-cr-group \
    --configuration '{"Type":"AWS::EC2::CapacityReservationPool"}' '{"Type":"AWS::ResourceGroups::Generic", "Parameters": [{"Name": "allowed-resource-types", "Values": ["AWS::EC2::CapacityReservation"]}]}'
```

## ステップ 3: キャパシティ予約リソースグループにキャパシティ予約を追加する
<a name="ec2-fleet-odcr-step3"></a>

`resource-groups`サービス、および[グループリソース](https://docs.aws.amazon.com/cli/latest/reference/resource-groups/group-resources.html)コマンドを使用して、手順 1 で作成したキャパシティ予約をキャパシティ予約リソースグループに追加します。オンデマンドキャパシティ予約は、ARN ごとに参照する必要があります。

```
aws resource-groups group-resources \
    --group my-cr-group \
    --resource-arns \
      arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-1234567890abcdef1 \
      arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-54321abcdef567890
```

 出力の例

```
{
   "Failed": [], 
   "Succeeded": [ 
   "arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-1234567890abcdef1", 
   "arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-54321abcdef567890" 
   ] 
}
```

## (オプション) ステップ 4: リソースグループのキャパシティーの予約を表示する
<a name="ec2-fleet-odcr-step4"></a>

`resource-groups`サービス、および[グループリソースを表示する](https://docs.aws.amazon.com/cli/latest/reference/resource-groups/list-group-resources.html)コマンドを使用して、キャパシティ予約を表示するリソースグループをオプションで記述します。

```
aws resource-groups list-group-resources --group my-cr-group
```

 出力の例

```
{
    "ResourceIdentifiers": [
        {
            "ResourceType": "AWS::EC2::CapacityReservation",
            "ResourceArn": "arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-1234567890abcdef1"
        },
        {
            "ResourceType": "AWS::EC2::CapacityReservation",
            "ResourceArn": "arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-54321abcdef567890"
        }
    ]
}
```

## ステップ 5: キャパシティ予約が特定のリソースグループをターゲットに指定する起動テンプレートを作成する
<a name="ec2-fleet-odcr-step5"></a>

[起動テンプレートを作成する](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-launch-template.html)コマンドを使用して、使用するキャパシティー予約を指定する起動テンプレートを作成します。この例では、フリートは`targeted`キャパシティー予約を使用して、ソースグループに追加されます。したがって、起動テンプレートデータでは、キャパシティ予約が特定のリソースグループをターゲットに指定します。次の例で、プレイスメントグループ名は`my-launch-template`です。

```
aws ec2 create-launch-template \
    --launch-template-name my-launch-template \
    --launch-template-data \
        '{"ImageId": "ami-0123456789example",
          "CapacityReservationSpecification": 
            {"CapacityReservationTarget": 
                { "CapacityReservationResourceGroupArn": "arn:aws:resource-groups:us-east-1:123456789012:group/my-cr-group" }
            }
        }'
```

## (オプション) ステップ 6: 起動テンプレートを説明する
<a name="ec2-fleet-odcr-step6"></a>

[describe-launch-template-versions](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-launch-template-versions.html) コマンドを使用して、オプションで、その設定を表示するための起動テンプレートを説明します。

```
aws ec2 describe-launch-template-versions --launch-template-name my-launch-template
```

 出力の例

```
{
    "LaunchTemplateVersions": [
        {
            "LaunchTemplateId": "lt-01234567890example",
            "LaunchTemplateName": "my-launch-template",
            "VersionNumber": 1,
            "CreateTime": "2021-01-19T20:50:19.000Z",
            "CreatedBy": "arn:aws:iam::123456789012:user/Admin",
            "DefaultVersion": true,
            "LaunchTemplateData": {
                "ImageId": "ami-0947d2ba12ee1ff75",
                "CapacityReservationSpecification": {
                    "CapacityReservationTarget": {
                        "CapacityReservationResourceGroupArn": "arn:aws:resource-groups:us-east-1:123456789012:group/my-cr-group"
                    }
                }
            }
        }
    ]
}
```

## ステップ 7: EC2 フリートを作成する
<a name="ec2-fleet-odcr-step7"></a>

起動するインスタンスの設定情報を指定する EC2 フリートを作成します。以下の EC2 フリート設定は、この例に関連する設定のみを示しています。起動テンプレート`my-launch-template`は、ステップ 5 で作成した起動テンプレートです。2 つのインスタンスプールがあり、それぞれ同じインスタンスタイプ (`c5.xlarge`)ですが、異なるアベイラビリティーゾーン (`us-east-1a`および`us-east-1b`)にあります。料金は、アベイラビリティーゾーンごとではなく、リージョンに対して定義されるため、インスタンスプールの料金は同じです。合計ターゲット容量は 10 で、デフォルトのターゲット容量タイプは`on-demand`です。オンデマンド配分戦略は`lowest-price`です。キャパシティ予約の使用戦略は`use-capacity-reservations-first`です。

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

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

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

## (オプション) ステップ 8: 未使用のキャパシティ予約の残りの数を表示する
<a name="ec2-fleet-odcr-step8"></a>

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

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

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

# チュートリアル: キャパシティブロックにインスタンスを起動するように EC2 フリートを設定する
<a name="ec2-fleet-launch-instances-capacity-blocks-walkthrough"></a>

このチュートリアルでは実行すべきステップを段階的に解説しています。これらのステップを実行すると、EC2 フリートがキャパシティブロックでインスタンスを起動します。

ほとんどの場合、EC2 フリートリクエストのターゲットキャパシティは、ターゲットとするキャパシティブロック予約の使用可能なキャパシティ以下でなければなりません。キャパシティブロック予約の制限を超えるターゲットキャパシティリクエストは受理されません。ターゲットキャパシティリクエストがキャパシティブロック予約の制限を超えると、キャパシティブロック予約の制限を超えるキャパシティに対して、`Insufficient Capacity Exception` が発生します。

**注記**  
キャパシティブロックの場合、EC2 フリートは希望するターゲットキャパシティの残りをオンデマンドインスタンスの起動にフォールバックしません。

EC2 フリートが利用可能なキャパシティブロック予約で要求されたターゲットキャパシティを満たすことができない場合、EC2 フリートは可能な限り多くの容量を満たし、起動できたインスタンスを返します。すべてのインスタンスがプロビジョニングされるまで EC2 フリート の呼び出しを繰り返すことができます。

EC2 フリートリクエストを設定したら、キャパシティブロック予約の開始日まで待つ必要があります。まだ開始されていないキャパシティブロックで EC2 フリートに起動するようリクエストすると、`Insufficient Capacity Error` が発生します。

キャパシティブロック予約が有効になったら、EC2 フリートの API コールを行い、選択したパラメータに基づいてキャパシティブロックにインスタンスをプロビジョニングできます。キャパシティブロックで実行されているインスタンスは、手動で停止あるいは終了するまで、またはキャパシティブロック予約が完了して Amazon EC2 がインスタンスを終了するまで実行され続けます。

キャパシティーブロックの詳細については、[機械学習用のキャパシティブロック](ec2-capacity-blocks.md) を参照してください。

**考慮事項**
+ キャパシティブロックへのインスタンスの起動では、`instant` タイプの EC2 フリートリクエストのみがサポートされます。詳細については、「[タイプが instant の EC2 フリートを設定する](instant-fleet.md)」を参照してください。
+ 同じ EC2 フリートリクエストでは、複数のキャパシティブロックはサポートされません。
+ `OnDemandTargetCapacity` または `SpotTargetCapacity` を使用しながら `DefaultTargetCapacity` として `capacity-block` を設定することはサポートされていません。
+ `DefaultTargetCapacityType` が `capacity-block` に設定されている場合、`OnDemandOptions::CapacityReservationOptions` は提供できません。例外が発生します。

**キャパシティブロックにインスタンスを起動するように EC2 フリートを設定するには**

1. **起動テンプレートを作成します。**

   起動テンプレートで、次の操作を行います。
   + `InstanceMarketOptionsRequest` の場合、`MarketType` を `capacity-block` に設定します。
   + キャパシティブロックの予約をターゲットにするには、`CapacityReservationID` にキャパシティブロックの予約 ID を指定します。

   起動テンプレートの名前とバージョンを書き留めます。この情報は、次のステップで使用します。

   起動テンプレートの作成の詳細については、「[Amazon EC2 起動テンプレートを作成する](create-launch-template.md)」を参照してください。

1. **EC2 フリートを設定します。**

   EC2 フリート用に次の設定を使用して `config.json` ファイルを作成します。次の例では、リソース識別子を独自のリソース識別子に置き換えます。

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

   ```
   { 
       "LaunchTemplateConfigs": [
           {
               "LaunchTemplateSpecification": {
                   "LaunchTemplateName": "CBR-launch-template", 
                   "Version": "1"
               }, 
               "Overrides": [
                   {
                       "InstanceType": "p5.48xlarge", 
                       "AvailabilityZone": "us-east-1a"   
                   },
               ]
           }
       ], 
       "TargetCapacitySpecification": {
           "TotalTargetCapacity": 10, 
           "DefaultTargetCapacityType": "capacity-block"
       },
       "Type": "instant"
   }
   ```

1. **フリートを起動します。**

   次の [create-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-fleet.html) コマンドを使用します。

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

   詳細については、「[EC2 フリートの作成](create-ec2-fleet.md#create-ec2-fleet-procedure)」を参照してください。

# チュートリアル: キャパシティ予約に対してインスタンスを起動するように EC2 フリートを設定する
<a name="ec2-fleet-launch-instances-interruptible-cr-walkthrough"></a>

このチュートリアルでは実行すべきステップを段階的に解説しています。これらのステップを実行すると、EC2 フリートが中断可能なキャパシティ予約に対してインスタンスを起動します。

中断可能なキャパシティ予約は、AWS 組織内のオンデマンドキャパシティ予約の所有者によって貸与された予備のキャパシティを表します。これらの予約では、キャパシティ所有者が 2 分間の中断通知でいつでもキャパシティを再利用できるため、中断可能なワークロードに適しています。その後、EC2 はインスタンスを終了します。中断可能なキャパシティ予約の詳細については、「[中断可能なキャパシティ予約](interruptible-capacity-reservations.md)」を参照してください。

EC2 フリートリクエストのターゲットキャパシティは、ターゲットとする中断可能なキャパシティ予約の使用可能なキャパシティ以下でなければなりません。ターゲットキャパシティリクエストが中断可能なキャパシティ予約の使用可能なキャパシティを超えると、EC2 フリートはできるだけ多くのインスタンスを起動し、起動されたインスタンスを API レスポンスで報告します。

中断可能なキャパシティ予約で実行されているインスタンスは、手動で停止または終了するか、キャパシティ所有者がキャパシティを再利用するまで実行され続けます。キャパシティ所有者がキャパシティを再利用すると、Amazon EC2 はインスタンス終了の 2 分前に Amazon EventBridge 通知を送信します。

## 考慮事項
<a name="ec2-fleet-interruptible-cr-considerations"></a>
+ キャパシティ予約へのインスタンスの起動については、`instant` タイプの EC2 フリートリクエストのみがサポートされます。
+ `OnDemandTargetCapacity` または `SpotTargetCapacity` を使用する際にさらに `reserved-capacity` を `DefaultTargetCapacityType` として 設定することはサポートされていません。
+ それぞれが異なる中断可能なキャパシティ予約をターゲットとする複数の起動テンプレートを指定すると、EC2 フリートは一致するすべての予約にインスタンスをプロビジョニングします。
+ 中断可能なキャパシティ予約の場合、EC2 フリートは希望するターゲットキャパシティの残りをオンデマンドインスタンスまたはスポットインスタンスの起動にフォールバックしません。

## アクセス許可の確認
<a name="ec2-fleet-interruptible-cr-verify-permissions"></a>

EC2 フリート を作成する前に、必要なアクセス許可が含まれている IAM ロールがあることを確認します。詳細については、「[EC2 フリートの前提条件](ec2-fleet-prerequisites.md)」を参照してください。

中断可能なキャパシティ予約に対してインスタンスを起動するには、次の手順を実行する必要があります。

## ステップ 1: 起動テンプレートを作成する
<a name="ec2-fleet-interruptible-cr-step1"></a>

[create-launch-template](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-launch-template.html) コマンドを使用して、ターゲットにする中断可能なキャパシティ予約が指定される起動テンプレートを作成します。起動テンプレートで、`MarketType` を `interruptible-capacity-reservation` に設定し、中断可能なキャパシティ予約の `CapacityReservationId` を指定します。

起動テンプレート設定の例: 

```
{
    "LaunchTemplateName": "interruptible-cr-launch-template",
    "LaunchTemplateData": {
        "InstanceType": "m5.large",
        "ImageId": "ami-0abcdef1234567890",
        "CapacityReservationSpecification": {
            "CapacityReservationTarget": {
                "CapacityReservationId": "cr-0123456789abcdef0"
            }
        },
        "InstanceMarketOptions": {
            "MarketType": "interruptible-capacity-reservation"
        }
    }
}
```

 出力の例

```
{
    "LaunchTemplate": {
        "LaunchTemplateId": "lt-0123456789example",
        "LaunchTemplateName": "interruptible-cr-launch-template",
        "CreateTime": "2026-03-12T10:00:00.000Z",
        "CreatedBy": "arn:aws:iam::123456789012:user/Admin",
        "DefaultVersionNumber": 1,
        "LatestVersionNumber": 1
    }
}
```

詳細については、「[Amazon EC2 起動テンプレートを作成する](create-launch-template.md)」を参照してください。

## ステップ 2: EC2 フリートを設定する
<a name="ec2-fleet-interruptible-cr-step2"></a>

起動テンプレートとターゲットキャパシティが指定されるように EC2 フリートの設定ファイルを作成します。次の設定では、ステップ 1 で作成した起動テンプレート `interruptible-cr-launch-template` を使用します。

`reserved-capacity` を `DefaultTargetCapacityType` として使用する場合は、`ReservationType` が `interruptible-capacity-reservation` に設定されている `ReservedCapacityOptions` を指定する必要があります。

以下の内容で `config.json` という名前のファイルを作成します。

```
{
    "LaunchTemplateConfigs": [
        {
            "LaunchTemplateSpecification": {
                "LaunchTemplateName": "interruptible-cr-launch-template",
                "Version": "1"
            },
            "Overrides": [
                {
                    "InstanceType": "m5.large",
                    "AvailabilityZone": "us-east-1a"
                }
            ]
        }
    ],
    "TargetCapacitySpecification": {
        "TotalTargetCapacity": 10,
        "DefaultTargetCapacityType": "reserved-capacity"
    },
    "ReservedCapacityOptions": {
        "ReservationType": ["interruptible-capacity-reservation"]
    },
    "Type": "instant"
}
```

主な設定パラメータ:


| パラメータ | 説明 | 
| --- | --- | 
| DefaultTargetCapacityType | リザーブドキャパシティに対してインスタンスを起動する必要があることを示すには、reserved-capacity に設定します。 | 
| ReservedCapacityOptions | リザーブドキャパシティのタイプを指定します。中断可能なキャパシティ予約の場合は、ReservationType を ["interruptible-capacity-reservation"] に設定します。 | 
| Type | instant に設定する必要があります。中断可能なキャパシティ予約では、インスタントフリートのみがサポートされています。 | 

## ステップ 3: フリートを起動して結果を表示する
<a name="ec2-fleet-interruptible-cr-step3"></a>

[create-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-fleet.html) コマンドを使用してフリートを作成します。

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

上記の設定を使用して `instant` フリートを作成すると、EC2 フリートはターゲットキャパシティを満たすために、中断可能なキャパシティ予約に対して 10 個のインスタンスを起動します。

**注記**  
フリートがターゲットキャパシティを完全には満たせない場合、レスポンスには、起動されたインスタンスと、満たされていないキャパシティに関するエラーが含まれます。

 出力の例

```
{
    "FleetId": "fleet-12345678-1234-1234-1234-123456789012",
    "Instances": [
        {
            "LaunchTemplateAndOverrides": {
                "LaunchTemplateSpecification": {
                    "LaunchTemplateId": "lt-0123456789example",
                    "Version": "1"
                },
                "Overrides": {
                    "InstanceType": "m5.large",
                    "AvailabilityZone": "us-east-1a"
                }
            },
            "Lifecycle": "interruptible-capacity-reservation",
            "InstanceIds": [
                "i-0123456789example1",
                "i-0123456789example2",
                "i-0123456789example3",
                "i-0123456789example4",
                "i-0123456789example5",
                "i-0123456789example6",
                "i-0123456789example7",
                "i-0123456789example8",
                "i-0123456789example9",
                "i-0123456789example0"
            ],
            "InstanceType": "m5.large",
            "Platform": "Linux/UNIX"
        }
    ],
    "Errors": []
}
```

詳細については、「[EC2 フリートの作成](create-ec2-fleet.md)」を参照してください。

## クリーンアップ
<a name="ec2-fleet-interruptible-cr-cleanup"></a>

料金の発生を防ぐため、不要になったインスタンスは終了させてください。また、キャパシティ所有者がキャパシティを再利用すると、EC2 は中断可能なキャパシティ予約に対して起動されたインスタンスを自動的に終了させるので注意してください。

## 関連リソース
<a name="ec2-fleet-interruptible-cr-related-resources"></a>
+ [中断可能なキャパシティ予約](interruptible-capacity-reservations.md)
+ [EC2 オンデマンドキャパシティ予約を使用してコンピューティングキャパシティを予約](ec2-capacity-reservations.md)
+ [EC2 フリートの操作](manage-ec2-fleet.md)
+ [EC2 フリートの作成](create-ec2-fleet.md)
+ [Amazon EC2 起動テンプレートにインスタンス起動パラメータを保存する](ec2-launch-templates.md)