Configuración de los proveedores de capacidad de Amazon ECS para cerrar las instancias de forma segura
Puede habilitar el drenaje de instancias administradas al crear o actualizar los proveedores de capacidad del grupo de escalado automático mediante la consola de Amazon ECS y la AWS CLI.
nota
El drenaje de instancias administradas está activado de manera predeterminada al crear un proveedor de capacidad.
A continuación, se muestran ejemplos en los que se usa la AWS CLI para crear un proveedor de capacidad con el drenaje de instancias administradas habilitado y para habilitar el drenaje de instancias administradas para el proveedor de capacidad existente de un clúster.
Creación de un proveedor de capacidad con el drenaje de instancias administradas habilitado
Para crear un proveedor de capacidad con el drenaje de instancias administradas habilitado, utilice el comando create-capacity-provider
. Establezca el parámetro managedDraining
como 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", }'
Respuesta:
{ "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" } } }
Habilitación del drenaje de instancias administradas para el proveedor de capacidad existente de un clúster
Para habilitar el drenaje de instancias administradas para el proveedor de capacidad existente de un clúster, utilice el comando update-capacity-provider
. Verá que managedDraining
actualmente indica DISABLED
y updateStatus
indica UPDATE_IN_PROGRESS
.
aws ecs update-capacity-provider \ --name cp-draining \ --auto-scaling-group-provider '{ "managedDraining": "ENABLED" }
Respuesta:
{ "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": [ ] } }
Use el comando describe-clusters
e incluya ATTACHMENTS
. El status
del archivo adjunto de drenaje de instancias administradas es PRECREATED
, y el attachmentsStatus
general es UPDATING
.
aws ecs describe-clusters --clusters cluster-name --include ATTACHMENTS
Respuesta:
{ "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": [] }
Cuando finalice la actualización, use describe-capacity-providers
y verá que managedDraining
ahora está en estado ENABLED
.
aws ecs describe-capacity-providers --capacity-providers cp-draining
Respuesta:
{ "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": [] } ] }