

# 为 Amazon ECS 托管实例创建容量提供程序
<a name="create-capacity-provider-managed-instances"></a>

Amazon ECS 托管实例使用容量提供程序来管理工作负载的计算容量。当您在不指定 `instanceRequirements` 的情况下创建容量提供程序时，Amazon ECS 会自动选择成本最优化的通用实例类型。您可以使用 `instanceRequirements` 创建容量提供程序来指定实例属性（例如，实例类型、CPU 制造商、加速器类型和其他要求）。

自定义容量提供程序使用基于属性的实例类型选择，允许您将实例要求表示为一组属性。这些要求会自动转换为所有匹配的 Amazon EC2 实例类型，从而简化实例类型配置的创建和维护。要了解有关实例要求和基于属性的选择的更多信息，请参阅《Amazon EC2 用户指南》**中的 [Amazon EC2 Fleet 基于属性的实例类型选择](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/ec2-fleet-attribute-based-instance-type-selection.html)文档。

## 先决条件
<a name="create-capacity-provider-managed-instances-prerequisites"></a>

开始之前，请确保您已完成以下操作：
+ 确定使用哪种类型的监控。有关更多信息，请参阅 [Amazon ECS 托管实例的详细监控](monitoring-managed-instances.md#detailed-monitoring-managed-instances)。
+ 拥有一个现有集群或计划创建一个集群。有关更多信息，请参阅 [为 Amazon ECS 托管实例创建集群](create-cluster-managed-instances.md)。
+ 您拥有 Amazon ECS 托管实例所需的 IAM 角色。这包括：
  + **基础设施角色**：允许 Amazon ECS 代表您调用 Amazon 服务来管理 Amazon ECS 托管实例基础设施。

    有关更多信息，请参阅 [Amazon ECS 基础设施 IAM 角色](infrastructure_IAM_role.md)。
  + **实例配置文件**：为在托管实例上运行的 Amazon ECS 容器代理和 Docker 进程守护程序提供权限。

    有关更多信息，请参阅 [Amazon ECS 托管实例实例配置文件](managed-instances-instance-profile.md)。

了解如何选择实例。有关更多信息，请参阅 [Amazon ECS 托管实例的实例选择最佳实践](managed-instances-instance-selection-best-practices.md)。

## 控制台过程
<a name="create-capacity-provider-managed-instances-console"></a>

**为 Amazon ECS 托管实例创建容量提供程序（Amazon ECS 控制台）**

1. 在 [https://console.aws.amazon.com/ecs/v2](https://console.amazonaws.cn/ecs/v2) 打开控制台。

1. 从导航栏中，选择要使用的区域。

1. 在导航窗格中，选择**集群**。

1. 在**集群**页面上，选择您的集群名称。

1. 在集群页面上，选择**基础设施**选项卡。

1. 在**容量提供程序**部分中，选择**创建容量提供程序**。

1. 在**容量提供程序配置**下，配置以下各项：
   + 对于**容量提供程序名称**，输入您的容量提供程序的唯一名称。
   + 对于**容量提供程序类型**，选择 **Amazon ECS 托管实例**。

1. 在**实例配置**下，配置以下各项：
   + 对于**实例配置文件**，选择为 Amazon ECS 托管实例创建的实例配置文件角色。
   + 对于**基础设施角色**，选择为 Amazon ECS 托管实例创建的基础设施角色。

1. 在**实例要求**下，为您的实例指定属性。您可以配置以下各项的任意组合：
   + **vCPU 计数**：指定 vCPU 的数量（例如，`4` 或 `8-16` 表示范围）。
   + **内存（MiB）**：以 MiB 为单位指定内存量（例如，`8192` 或 `16384-32768` 表示范围）。
   + **实例类型**：指定特定实例类型（例如 `m5.large,m5.xlarge,c5.large`）。
   + **CPU 制造商**：从 `intel`、`amd` 或 `amazon-web-services` 中选择。
   + **加速器类型**：指定加速器类型，例如 `gpu`、`fpga` 或 `inference`。
   + **加速器计数**：指定加速器的数量（例如，`1` 或 `2-4` 表示范围）。

1. 在**高级配置**下，选择以下监视选项之一：
   + 要让 CloudWatch 发送状态检查指标，请选择**基本**。
   + 要让 CloudWatch 发送所有指标，请选择**详细**。

1. （可选）为了帮助识别您的容量提供程序，请展开**标签**，然后配置您的标签。

   要将标签从容量提供程序传播到托管资源（例如从容量提供程序启动的实例），对于**传播以下来源的标签**，请选择**容量提供程序**。

   [添加标签] 选择 **Add tag**（添加标签），然后执行以下操作：
   + 对于 **Key**（键），输入键名称。
   + 对于**值**，输入键值。

1. 选择**创建**。

## Amazon CLI 过程
<a name="create-capacity-provider-managed-instances-cli"></a>

您可以使用 Amazon CLI 为 Amazon ECS 托管实例创建容量提供程序。使用最新版本的 Amazon CLI。有关如何升级到最新版本的更多信息，请参阅[安装或更新到最新版本的 Amazon CLI](https://docs.amazonaws.cn/cli/latest/userguide/getting-started-install.html)。

**为 Amazon ECS 托管实例创建容量提供程序（Amazon CLI）**

1. 运行如下命令：

   ```
   aws ecs create-capacity-provider --cli-input-json file://capacity-provider-definition.json
   ```

   以下 `capacity-provider-definition.json` 可用于指定基本实例要求、实例存储大小并启用标签传播：

   ```
   {
       "name": "my-managed-instances-provider",
       "cluster": "my-cluster",
       "tags": [ 
           { 
               "key": "version",
               "value": "test"
           }
       ],    
       "managedInstancesProvider": {
           "infrastructureRoleArn": "arn:aws:iam::123456789012:role/ecsInfrastructureRole",
           "instanceLaunchTemplate": {
               "ec2InstanceProfileArn": "arn:aws:iam::123456789012:instance-profile/ecsInstanceRole",
               "instanceRequirements": {
                   "vCpuCount": {
                       "min": 4,
                       "max": 8
                   },
                   "memoryMiB": {
                       "min": 8192,
                       "max": 16384
                   }
               },
               "networkConfiguration": {
                   "subnets": [
                       "subnet-abcdef01234567",
                       "subnet-bcdefa98765432"
                   ],
                   "securityGroups": [
                       "sg-0123456789abcdef"
                   ]
               },
               "storageConfiguration": {
                   "storageSizeGiB": 100
               },
               "monitoring": "basic"
           },
           "propagateTags": "CAPACITY_PROVIDER"
       }
   }
   ```

1. 验证是否已成功创建容量提供程序：

   ```
   aws ecs describe-capacity-providers \
       --capacity-providers my-managed-instances-provider
   ```

## 后续步骤
<a name="capacity-provider-managed-instances-next-steps"></a>

创建容量提供程序后，您可以在创建服务或运行任务时使用该容量提供程序：
+ 要将容量提供程序与服务一起使用，请参阅[创建 Amazon ECS 滚动更新部署](create-service-console-v2.md)。
+ 要将容量提供程序与独立任务一起使用，请参阅[将应用程序作为 Amazon ECS 任务运行](standalone-task-create.md)。