配置 Amazon ECS 容量提供程序,以安全关闭实例 - Amazon Elastic Container Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

配置 Amazon ECS 容量提供程序,以安全关闭实例

使用 Amazon ECS 控制台和 Amazon CLI 创建或更新自动扩缩组容量提供程序时,您可以开启托管式实例耗尽功能。

注意

创建容量提供程序时,默认情况下,托管式实例耗尽功能已开启。

以下是使用 Amazon CLI 创建启用托管实例耗尽功能的容量提供程序,以及为集群的现有容量提供程序启用托管实例耗尽功能的示例。

创建启用托管实例耗尽功能的容量提供程序

要创建启用托管实例耗尽功能的容量提供程序,请使用 create-capacity-provider 命令。将 managedDraining 参数设置为 ENABLED

aws ecs create-capacity-provider \ --name capacity-provider \ --auto-scaling-group-provider '{ "autoScalingGroupArn": "asg-arn", "managedScaling": { "status": "ENABLED", "targetCapacity": 100, "minimumScalingStepSize": 1, "maximumScalingStepSize": 1 }, "managedDraining": "ENABLED", "managedTerminationProtection": "ENABLED", }'

响应:

{ "capacityProvider": { "capacityProviderArn": "capacity-provider-arn", "name": "capacity-provider", "status": "ACTIVE", "autoScalingGroupProvider": { "autoScalingGroupArn": "asg-arn", "managedScaling": { "status": "ENABLED", "targetCapacity": 100, "minimumScalingStepSize": 1, "maximumScalingStepSize": 1 }, "managedTerminationProtection": "ENABLED" "managedDraining": "ENABLED" } } }
为集群的现有容量提供程序启用托管实例耗尽功能

使用 update-capacity-provider 命令为集群的现有容量提供程序启用托管实例耗尽功能。您会看到 managedDraining 目前显示为 DISABLEDupdateStatus 显示为 UPDATE_IN_PROGRESS

aws ecs update-capacity-provider \ --name cp-draining \ --auto-scaling-group-provider '{ "managedDraining": "ENABLED" }

响应:

{ "capacityProvider": { "capacityProviderArn": "cp-draining-arn", "name": "cp-draining", "status": "ACTIVE", "autoScalingGroupProvider": { "autoScalingGroupArn": "asg-draining-arn", "managedScaling": { "status": "ENABLED", "targetCapacity": 100, "minimumScalingStepSize": 1, "maximumScalingStepSize": 1, "instanceWarmupPeriod": 300 }, "managedTerminationProtection": "DISABLED", "managedDraining": "DISABLED" // before update }, "updateStatus": "UPDATE_IN_PROGRESS", // in progress and need describe again to find out the result "tags": [ ] } }

使用 describe-clusters 命令并包含 ATTACHMENTS。托管实例耗尽 attachment 的 statusPRECREATED,总体 attachmentsStatusUPDATING

aws ecs describe-clusters --clusters cluster-name --include ATTACHMENTS

响应:

{ "clusters": [ { ... "capacityProviders": [ "cp-draining" ], "defaultCapacityProviderStrategy": [], "attachments": [ # new precreated managed draining attachment { "id": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "type": "managed_draining", "status": "PRECREATED", "details": [ { "name": "capacityProviderName", "value": "cp-draining" }, { "name": "autoScalingLifecycleHookName", "value": "ecs-managed-draining-termination-hook" } ] }, ... ], "attachmentsStatus": "UPDATING" } ], "failures": [] }

更新完成后,使用 describe-capacity-providers,您将看到 managedDraining 现在为 ENABLED

aws ecs describe-capacity-providers --capacity-providers cp-draining

响应:

{ "capacityProviders": [ { "capacityProviderArn": "cp-draining-arn", "name": "cp-draining", "status": "ACTIVE", "autoScalingGroupProvider": { "autoScalingGroupArn": "asg-draning-arn", "managedScaling": { "status": "ENABLED", "targetCapacity": 100, "minimumScalingStepSize": 1, "maximumScalingStepSize": 1, "instanceWarmupPeriod": 300 }, "managedTerminationProtection": "DISABLED", "managedDraining": "ENABLED" // successfully update }, "updateStatus": "UPDATE_COMPLETE", "tags": [] } ] }