

# 适用于 EC2 工作负载的 Amazon ECS 容量提供程序
<a name="asg-capacity-providers"></a>

当您将 Amazon EC2 实例用于容量时，您可以使用自动扩缩组来管理注册到其集群的 Amazon EC2 实例。Auto Scaling 可帮助确保具有正确数量的 Amazon EC2 实例以处理应用程序负载。

您可以使用托管式扩缩功能来让 Amazon ECS 管理自动扩缩组的横向缩减和横向扩展操作，您也可以自行管理扩缩操作。有关更多信息，请参阅 [通过集群自动扩缩功能自动管理 Amazon ECS 容量](cluster-auto-scaling.md)。

建议您创建新的空自动扩缩组。如果您使用现有 自动扩缩组，则在自动扩缩组用于创建容量提供程序之前，与已在运行并注册到 Amazon ECS 集群的组关联的任何 Amazon EC2 实例都可能无法正确注册到该容量提供程序。使用容量提供程序策略中的容量提供程序时，这可能会引发问题。使用 `DescribeContainerInstances` 可以确认容器实例是否与容量提供程序关联。

**注意**  
要创建空的 自动扩缩组，请将所需计数设置为零。创建容量提供程序并将其与集群关联后，可以扩展它。  
当您使用 Amazon ECS 控制台时，Amazon ECS 将代表您创建一个 Amazon EC2 启动模板和自动扩缩组，作为 Amazon CloudFormation 堆栈的一部分。它们的前缀为 `EC2ContainerService-<ClusterName>`。您可以将自动扩缩组用作该集群的容量提供程序。

建议您使用托管式实例耗尽功能，以便在不中断工作负载的情况下平稳终止 Amazon EC2 实例。此功能默认启用。有关更多信息，请参阅 [安全停止在 EC2 实例上运行的 Amazon ECS 工作负载](managed-instance-draining.md)。

在控制台中使用自动扩缩组容量提供程序时应考虑以下因素：
+ 自动扩缩组必须具有大于零的 `MaxSize` 才能横向扩展。
+ 自动扩缩组不能有实例权重设置。
+ 如果自动扩缩组无法横向扩展以适应运行的任务数，则任务将无法转换到 `PROVISIONING` 状态。
+ 请勿修改与由容量提供程序管理的自动扩缩组关联的扩展策略资源。
+ 如果在创建容量提供程序时启用了托管式扩展，则可将自动扩缩组所需计数设置为 `0`。启用托管式扩展后，Amazon ECS 管理自动扩缩组的横向缩减和横向扩展操作。
+ 您必须将容量提供程序与集群关联，然后才能将其与容量提供程序策略关联。
+ 您最多可以为容量提供程序策略指定 20 个容量提供程序。
+ 使用自动扩缩组容量提供程序的服务无法更新为使用 Fargate 容量提供程序，反之亦然。
+ 在容量提供程序策略中，如果未在控制台中为容量提供程序指定 `weight` 值，则使用原定设置值 `1`。如果使用 API或 Amazon CLI，则使用原定设置值 `0`。
+ 如果在容量提供程序策略中指定了多个容量提供程序，则至少有一个容量提供程序的权重值必须大于零。任何权重为 0 的容量提供程序都不能用于放置任务。如果您在策略中指定的多个容量提供程序的权重全部为 0，则使用该容量提供程序策略的任何 `RunTask` 或 `CreateService` 操作都将失败。
+ 在容量提供程序策略中，只能有一个容量提供程序定义了*基准值*。如果未指定基准值，则使用默认设置值零。
+ 集群可能同时包含自动扩缩组容量提供程序和 Fargate 容量提供程序。但是，容量提供程序策略只能包含自动扩缩组容量提供程序或 Fargate 容量提供程序，而不能同时包含两者。
+ 集群可能包含使用两个容量提供程序和两种启动类型的服务和独立任务的组合。服务可以更新为使用容量提供程序策略而不是启动类型。但是在执行此操作时必须强制实施新部署。
+ Amazon ECS 支持 Amazon EC2 Auto Scaling 暖池。暖池是一组准备投入使用的预初始化 Amazon EC2 实例。每当您的应用程序需要横向扩展时，Amazon EC2 Auto Scaling 都会使用暖池中的预初始化实例，而不是启动冷实例，这允许运行任何最终初始化过程，然后将实例投入使用。有关更多信息，请参阅 [为您的 Amazon ECS Auto Scaling 组配置预初始化的实例](using-warm-pool.md)。

有关创建 Amazon EC2 Auto Scaling 启动模板的更多信息，请参阅**《Amazon EC2 Auto Scaling 用户指南》中的 [Auto Scaling 启动模板](https://docs.amazonaws.cn/autoscaling/ec2/userguide/launch-templates.html)。有关创建 Amazon EC2 Auto Scaling 组的更多信息，请参阅**《Amazon EC2 Auto Scaling 用户指南》中的 [自动扩缩组](https://docs.amazonaws.cn/autoscaling/ec2/userguide/auto-scaling-groups.html)。