¿Cómo puedo solucionar los errores al eliminar un proveedor de capacidad en Amazon ECS?

6 minutos de lectura
0

Aparece un error cuando intento eliminar un proveedor de capacidad para mi clúster de Amazon Elastic Container Service (Amazon ECS).

Descripción corta

Si usó el comando delete-capacity-provider de la interfaz de línea de comandos de AWS (AWS CLI) o la API DeleteCapacityProvider, es posible que reciba uno de los siguientes errores:

«updateStatus»: «DELETE_FAILED»

Alternativa:

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

Si usó la consola de administración de AWS para eliminar un proveedor de capacidad, es posible que reciba el siguiente error:

«Se produjo un error al eliminar el nombre del proveedor de capacidad. El proveedor de capacidad especificado está en uso y no se puede eliminar»

No puede eliminar un proveedor de capacidad que esté asociado a un clúster. Para resolver los problemas de eliminación, debe eliminar el proveedor de capacidad del clúster o eliminar el clúster. A continuación, elimine el proveedor de capacidad.

Nota: Si elimina un grupo de Amazon EC2 Auto Scaling, el proveedor de capacidad relacionado pasará al estado INACTIVO. No se recomienda utilizar proveedores de capacidad en estado INACTIVO, ya que es posible que se eliminen automáticamente en cualquier momento.

Resolución

Nota: Si se muestran errores al poner en marcha comandos de AWS CLI, consulte Solución de errores de AWS CLI. Además, asegúrese de utilizar la versión más reciente de la AWS CLI. Para formatear, instale jq desde Descargar jq en el sitio web de jq.

Identificación de los proveedores de capacidad que están asociados al clúster

Para identificar todos los proveedores de capacidad asociados a un clúster de Amazon ECS, utilice la consola de Amazon ECS o la AWS CLI.

Consola de Amazon ECS

Siga estos pasos:

  1. Abra la consola de Amazon ECS.
  2. En el panel de navegación, seleccione Clústeres.
  3. Seleccione su clúster.
  4. Seleccione la pestaña Infraestructura.
  5. Elija Proveedores de capacidad.

AWS CLI

Ejecute el siguiente comando describe-clusters:

aws ecs describe-clusters --cluster your-cluster-name | jq '.clusters[].capacityProviders'

Nota: Sustituya your-cluster-name por el nombre de su clúster.

Asegurarse de que Amazon ECS no utilice el proveedor de capacidad en la estrategia del proveedor de capacidad

Para ver los servicios que utilizan el proveedor de capacidad, ejecute el siguiente script:

#!/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: Sustituya ClusterName por el nombre del clúster y CapacityProviderName por el nombre del proveedor de capacidad. Si el script devuelve un resultado en blanco, significa que ninguno de los servicios del clúster está utilizando el proveedor de capacidad. En este caso, continúe con 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.

Para poder eliminar un proveedor de capacidad existente que esté en uso, debe actualizar Amazon ECS para usar un proveedor de capacidad nuevo. Utilice la consola de Amazon ECS o la AWS CLI. Cuando actualice el servicio, utilice Forzar un nuevo despliegue para realizar la transición entre proveedores de tareas que utilizan la capacidad de instancias de Amazon Elastic Compute Cloud (Amazon EC2).

Para usar la AWS CLI para actualizar el proveedor de capacidad, siga estos pasos:

  1. Ejecute el siguiente comando describe-services para ver la estrategia de proveedor de capacidad existente para el servicio:

    aws ecs describe-services --cluster my-cluster --services my-service

    Nota: Sustituya my-cluster por el nombre de su clúster y my-service por el nombre de su servicio.

  2. Cree una nueva estrategia de proveedor de capacidad que excluya al proveedor de capacidad que desea eliminar. Asegúrese de que el peso total de los proveedores de capacidad restantes sea de 100.

  3. Ejecute el siguiente comando update-service para actualizar el servicio:

    aws ecs update-service \
      --cluster your-cluster-name \
      --service your-service-name \
      --capacity-provider-strategy capacityProvider=remaining-provider,weight=100 \
      --force-new-deployment

    Nota: Sustituya your-cluster-name por el nombre de su clúster y your-service-name por el nombre de su servicio. Además, sustituya el remaining-provider por el nombre del nuevo proveedor de capacidad.

Comprobar si el proveedor de capacidad está establecido en la estrategia predeterminada para el clúster

Para encontrar la estrategia de proveedor de capacidad predeterminada para su clúster, ejecute el siguiente comando describe-clusters:

aws ecs describe-clusters --cluster mycluster | jq '.clusters[].defaultCapacityProviderStrategy'

Si el proveedor de capacidad que desea eliminar está en la salida del comando, debe modificar la estrategia predeterminada del proveedor de capacidad. Puede usar la consola de Amazon ECS o la AWS CLI.

Consola de Amazon ECS

Siga estos pasos:

  1. Abra la consola de Amazon ECS.
  2. En el panel de navegación, seleccione Clústeres.
  3. Seleccione su clúster.
  4. Seleccione Actualizar clúster.
  5. En Configuración del clúster, para Estrategia de proveedor de capacidad predeterminado, elija Eliminar para el proveedor de capacidad.
  6. Seleccione Actualizar.

AWS CLI

Ejecute el siguiente comando put-cluster-capacity-providers:

aws ecs put-cluster-capacity-providers --cluster ClusterName --capacity-providers [] --default-capacity-provider-strategy []

Nota: Sustituya ClusterName por el nombre de su clúster.

Sustituya el proveedor de capacidad anterior por uno nuevo antes de eliminarlo. Para reemplazar el proveedor de capacidad, ejecute el siguiente comando put-cluster-capacity-provider:

aws ecs put-cluster-capacity-providers --cluster ClusterName --capacity-providers UpdatedCapacityProvider --default-capacity-provider-strategy capacityProvider=UpdatedCapacityProvider --region RegionName

Nota: Sustituya ClusterName por el nombre de su clúster, UpdatedCapacityProvider por el nuevo proveedor de capacidad y RegionName por su región de AWS.

Al ejecutar el comando put-cluster-capacity providers, debe incluir todos los proveedores de capacidad que desee conservar en el clúster. Si no incluye un proveedor de capacidad, Amazon ECS lo desvincula del clúster.

Eliminación del proveedor de capacidad

Para eliminar el proveedor de capacidad, ejecute el siguiente comando delete-capacity-provider:

aws ecs delete-capacity-provider --capacity-provider PreviousCapacityProvider

Nota: Sustituya PreviousCapacityProvider por el ARN del proveedor de capacidad que desea eliminar.

Para comprobar que se ha eliminado el proveedor de capacidad, ejecute el siguiente comando describe-capacity-providers:

aws ecs describe-capacity-providers --capacity-provider PreviousCapacityProvider

Nota: Sustituya PreviousCapacityProvider por el ARN del proveedor de capacidad que ha eliminado.

En el resultado del comando, verifique que el estado del proveedor de capacidad sea INACTIVO.

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 4 meses