¿Cómo puedo solucionar el error DELETE_FAILED al eliminar el proveedor de capacidad en Amazon ECS?

5 minutos de lectura
0

Cuando utilizo la Interfaz de la línea de comandos de AWS (AWS CLI) o una API para eliminar un proveedor de capacidad en mi clúster de Amazon Elastic Container Service (Amazon ECS), se muestra un error.

Breve descripción

Si intenta eliminar un proveedor de capacidad de su clúster mediante la AWS CLI o una API, es posible que se muestre uno de los siguientes errores:

  • «updateStatus»: «DELETE_FAILED»
  • «updateStatusReason»: «El proveedor de capacidad no se puede eliminar porque está asociado al clúster: nombre-del-cluster. Elimine el proveedor de capacidad del clúster e inténtelo de nuevo.»

Estos errores se pueden mostrar por los siguientes motivos:

  • Un servicio de Amazon ECS está utilizando el proveedor de capacidad que está intentando eliminar en la estrategia de proveedor de capacidad. La Consola de administración de AWS no permite eliminar un proveedor de capacidad que se esté utilizando en un servicio de Amazon ECS. En este escenario, se mostrará este mensaje de error: «El proveedor de capacidad especificado está en uso y no se puede eliminar» en la consola. Solo puede desvincular un proveedor de capacidad existente de un clúster si no se está utilizando en ninguna tarea existente. Si ejecuta el comando DeleteCapacityProvider de AWS CLI, el proveedor de capacidad pasará al estado DELETE_FAILED. Para solucionar este problema, siga los pasos de la sección Comprobación de si un servicio de Amazon ECS utiliza el proveedor de capacidad en la estrategia de proveedor de capacidad.
  • La estrategia predeterminada utiliza el proveedor de capacidad. Si no elige una estrategia de proveedor de capacidad ni un tipo de lanzamiento al ejecutar una tarea o crear un servicio, la estrategia de proveedor de capacidad se asocia al clúster de forma predeterminada. Sin embargo, la asociación solo se produce si el proveedor de capacidad está establecido como la estrategia de proveedor de capacidad predeterminada para el clúster. Solo puede eliminar los proveedores de capacidad que no estén asociados a un clúster. Para solucionar este problema, siga los pasos de la sección Comprobación de si el proveedor de capacidad está configurado en la estrategia de proveedor de capacidad predeterminada para el clúster.

Nota: Si se muestran errores al ejecutar comandos de AWS CLI,asegúrese de estar utilizando la versión más reciente de AWS CLI.

Solución

Comprobación de si un servicio de Amazon ECS utiliza el proveedor de capacidad en la estrategia de proveedor de capacidad

1.    Si tiene varios servicios en un clúster, utilice el siguiente script para comprobar qué servicios utilizan el proveedor de capacidad.

Antes de ejecutar el script, haga lo siguiente:

Configure los parámetros del clúster y del proveedor de capacidad según sus valores. Configure sus credenciales de AWS CLI en su región de AWS. Instale jq desde el sitio web de jq.

#! /bin/bash
cluster=clustername
capacityprovider=capacityprovidername
services=$(aws ecs list-services --cluster ${cluster} | jq --raw-output '.serviceArns[]')
aws ecs describe-services \
    --cluster ${cluster} \
    --services ${services} \
    | jq -r --arg capacityprovider "${capacityprovider}" \
    '.services[] | select(.capacityProviderStrategy[]?.capacityProvider == $capacityprovider) | .serviceName'

Nota: Si el script devuelve un resultado en blanco, significa que ninguno de los servicios del clúster está utilizando el proveedor de capacidad. Vaya a la sección Comprobación de si el proveedor de capacidad está configurado en la estrategia de proveedor de capacidad predeterminada para el clúster.

2.    Actualice los servicios que se devuelven en el resultado del script con un nuevo proveedor de capacidad.

3.    Elimine el proveedor de capacidad anterior.

Importante: No puede actualizar un servicio mediante una estrategia de proveedor de capacidad o un tipo de lanzamiento. Debe actualizarlo con otro proveedor de capacidad.

Comprobación de si el proveedor de capacidad está configurado en la estrategia de proveedor de capacidad predeterminada para el clúster

1.    Para encontrar el proveedor de capacidad predeterminado para su clúster, ejecute el siguiente comando:

$ aws ecs describe-clusters --cluster mycluster | jq '.clusters[].defaultCapacityProviderStrategy'
[
  {
    "capacityProvider": "oldCP",
    "weight": 0,
    "base": 0
  }
]

2.    Para eliminar el proveedor de capacidad, debe modificar la estrategia de proveedor de capacidad predeterminada para el clúster mediante la consola de Amazon ECS o AWS CLI.

Con la consola de Amazon ECS:

1.    Abra la consola de Amazon ECS.

2.    En el panel de navegación, seleccione Clústeres y, a continuación, elija su clúster.

3.    Seleccione Actualizar el clúster.

Con AWS CLI:

$ aws ecs put-cluster-capacity-providers \
     --cluster mycluster \
     --capacity-providers newCP \
     --default-capacity-provider-strategy capacityProvider=newCP \
     --region us-east-1

$ aws ecs delete-capacity-provider --capacity-provider oldCP

$ aws ecs describe-capacity-providers --capacity-provider oldCP

Nota: En el ejemplo de código anterior, sustituya mycluster por su clúster. Sustituya newCP por el nuevo proveedor de capacidad que desee añadir. Sustituya oldCP por el proveedor de capacidad que desee eliminar.

4.    Elimine el proveedor de capacidad anterior.

Todos los proveedores de capacidad existentes asociados a un clúster que se omitan de la llamada a la API PutClusterCapacityProviders se desasocian del clúster. Las mismas reglas se aplican a la estrategia de proveedor de capacidad predeterminada del clúster.


OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 2 años