

# 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) | 
|  **使用容量预留为按需型实例预留计算容量。** 将 EC2 实例集配置为在启动按需型实例时首先使用 `targeted` 容量预留。如果您有严格的容量要求，并且正在运行需要一定级别的长期或短期容量保证的业务关键型工作负载，我们建议您创建容量预留，以确保在需要时始终可以获得所需时长的 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 组织的闲置容量并节省成本。** 配置 EC2 队列，使其在可中断容量预留中启动实例，这些预留代表您 AWS 组织内的空闲容量。容量所有者可随时收回容量。回收后，EC2 会在 2 分钟通知后终止实例。  | [教程：将 EC2 实例集配置为将实例启动到可中断容量预留中](ec2-fleet-launch-instances-interruptible-cr-walkthrough.md) | 

# 教程：将 EC2 实例集配置为使用实例权重
<a name="ec2-fleet-instance-weighting-walkthrough"></a>

该教程使用名为 Example Corp 的虚构公司说明使用实例权重请求 EC2 队列的过程。

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

Example Corp 是一家医药公司，该公司想要使用 Amazon EC2 的计算功能来筛查可能用于对抗癌症的化学成分。

## 规划
<a name="ec2-fleet-instance-weighting-walkthrough-planning"></a>

Example Corp 首先查看[Spot 最佳实践](https://aws.amazon.com/ec2/spot/getting-started/#bestpractices)。然后，Example Corp 确定了他们的 EC2 队列的要求。

**实例类型**  
Example Corp 有一个计算和内存密集型应用程序，该应用程序在至少 60 GB 内存和八个虚拟 CPU (vCPU) 的情况下性能最佳。他们希望以尽可能低的价格为该应用程序提供尽可能多的这些资源。Example Corp 认定以下任意 EC2 实例类型都能满足其需求：


| 实例类型 | 内存 (GiB) | vCPU | 
| --- | --- | --- | 
|  r3.2xlarge  |  61  |  8  | 
|  r3.4xlarge  |  122  |  16  | 
|  r3.8xlarge  |  244  |  32  | 

**以单位数表示的目标容量**  
采用实例权重，目标容量可以等于几个实例 (默认) 或一些因素 (如内核 (vCPU)、内存 (GiB) 和存储 (GB)) 的组合。将其应用程序的基本要求 (60 GB RAM 和八个 vCPU) 作为一个单位，Example Corp 确定，此数量的 20 倍应可满足其需求。因此该公司将其 EC2 实例集请求的目标容量设置为 20 个单位。

**实例权重**  
确定目标容量后，Example Corp 计算了实例权重。为了计算每个实例类型的实例权重，他们按如下所示确定每个实例类型需要多少单位才能达到目标容量：
+ r3.2xlarge (61.0 GB, 8 vCPUs) = 1 个 20 单位
+ r3.4xlarge (122.0 GB, 16 vCPUs) = 2 个 20 单位
+ r3.8xlarge (244.0 GB, 32 vCPUs) = 4 个 20 单位

因此，Example Corp 在其EC2 队列请求中将实例权重 1、2 和 4 分配给相应的启动配置。

**每单位小时价格**  
Example Corp 将每实例小时[按需价格](https://aws.amazon.com/ec2/pricing/)作为其价格的起点。他们也可以使用最近的 Spot 价格或两者的组合。为了计算每单位小时价格，他们将每实例小时起始价格除以权重。例如：


| 实例类型 | 按需价格 | 实例权重 | 每单位小时价格 | 
| --- | --- | --- | --- | 
|  r3.2xLarge  |  0.7 美元  |  1  |  0.7 美元  | 
|  r3.4xLarge  |  1.4 美元  |  2  |  0.7 美元  | 
|  r3.8xLarge  |  2.8 美元  |  4  |  0.7 美元  | 

Example Corp 可能会使用每单位小时全局价格 0.7 美元，这对于所有三种实例类型来说是非常有竞争力的。他们可能还会使用每单位小时全局价格 0.7 USD，并在 `r3.8xlarge` 启动规范中使用特定的每单位小时价格 0.9 USD。

## 验证权限
<a name="ec2-fleet-instance-weighting-walkthrough-permissions"></a>

在创建 EC2 队列请求之前，Example Corp 验证它是否拥有具备所需权限的 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>

Example Corp 为其 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"
    }
}
```

Example Corp 使用以下 [create-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-fleet.html) 命令创建 EC2 队列。

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

有关更多信息，请参阅 [创建 EC2 实例集](create-ec2-fleet.md)。

## 执行
<a name="ec2-fleet-instance-weighting-walkthrough-fulfillment"></a>

分配策略确定竞价型实例所来自的 Spot 容量池。

使用 `lowest-price` 策略（这是默认策略）时，Spot 实例来自在执行时具有最低每单位价格的池。为了提供 20 个单位的容量，EC2 队列有三种做法：启动 20 个 `r3.2xlarge` 实例（20 除以 1）、10 个 `r3.4xlarge` 实例（20 除以 2）或 5 个 `r3.8xlarge` 实例（20 除以 4）。

如果 Example Corp 使用 `diversified` 策略，则 Spot 实例来自所有三个池。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 队列并将按需作为主容量和 Spot 容量（如果可用）的过程。

## 目标
<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 需要固定容量以应对高峰时段，但也想要以较低价格从额外容量获益。该公司确定其 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](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-fleet.html) 命令创建 EC2 队列。

```
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`（如果未使用的容量预留数少于按需目标容量，队列将根据按需分配策略确定启动剩余的按需容量的池。）

  请注意，您也可以使用 `prioritized` 分配策略而不是 `lowest-price` 分配策略。

**要将按需实例启动到 `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)命令创建容量预留，三个 `us-east-1a`，另外三个 `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` 服务和 [create-group](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` 服务和 [group-resources](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` 服务和 [list-group-resources](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>

使用 [create-launch-template](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 中创建的启动模板。有两个实例池，每个实例池具有相同的实例类型 (`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 Fleet 将尽可能多地满足容量，并返回其能够启动的实例。您可以再次调用 EC2 实例集，直到所有实例都已预调配。

配置 EC2 实例集请求后，您必须等到容量块预留的开始日期。如果您请求 EC2 实例集启动到尚未启动的容量块中，您将收到 `Insufficient Capacity Error`。

在容量块预留变为活动状态后，您可以调用 EC2 实例集 API，并根据您选择的参数将实例预调配到您的容量块中。在容量块中运行的实例将继续运行，直到您手动停止或终止这些实例，或者直到 Amazon EC2 在容量块预留结束时终止这些实例。

有关容量块的更多信息，请参阅 [ML 容量块](ec2-capacity-blocks.md)。

**注意事项**
+ 只有类型为 `instant` EC2 实例集请求才支持将实例启动到容量块中。有关更多信息，请参阅 [配置 instant 类型的 EC2 实例集](instant-fleet.md)。
+ 不支持在同一 EC2 实例集请求中有多个容量块。
+ 不支持在使用 `OnDemandTargetCapacity` 或 `SpotTargetCapacity` 的同时将 `capacity-block` 设置为 `DefaultTargetCapacity`。
+ 如果将 `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` 时，必须指定 `ReservedCapacityOptions`，并将 `ReservationType` 设置为 `interruptible-capacity-reservation`。

使用以下内容创建名为 `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)