¿Cómo soluciono problemas al configurar un nuevo proveedor de capacidad o actualizar un proveedor de capacidad existente para mi clúster de Amazon ECS?

Última actualización: 13/04/2022

Tengo problemas cuando intento configurar un nuevo proveedor de capacidad o actualizar un proveedor de capacidad existente para mi clúster de Amazon Elastic Container Service (Amazon ECS).

Descripción corta

Algunos de los problemas más comunes que se producen cuando configura un nuevo proveedor de capacidad o actualiza un proveedor de capacidad existente para su clúster de Amazon ECS son los siguientes:

  • Se producen errores al crear un proveedor de capacidad de grupo de Auto Scaling mediante AWS Command Line Interface (AWS CLI).
  • Aparece el error: The specified capacity provider already exists (El proveedor de capacidad especificado ya existe). Para cambiar la configuración de un proveedor de capacidad existente, actualice el proveedor de capacidad.
  • Aparece el error:The specified Auto Scaling group ARN is already being used by another capacity provider (El ARN del grupo de Auto Scaling especificado ya está siendo utilizado por otro proveedor de capacidad). Especifique un ARN de grupo de Auto Scaling único y vuelva a intentarlo.
  • Aparece el error al crear la estrategia del proveedor de capacidad:The specified cluster is in a busy state (El clúster especificado está ocupado). Los elementos adjuntados al clúster deben estar en estado UPDATE_COMPLETE o UPDATE_FAILED antes de que se puedan actualizar. Espere e inténtelo de nuevo.
  • Obtiene errores debido a algunas limitaciones con el proveedor de capacidad.
  • El proveedor de capacidad se creó correctamente con AWS CloudFormation, pero no se muestra en la consola.

Resolución

Se producen errores al crear un proveedor de capacidad de grupo de Auto Scaling con AWS CLI

Para solucionar este problema al crear un proveedor de capacidad mediante AWS CLI, revise los eventos de AWS CloudTrail para comprobar la API CreateCapacityProvider. Los siguientes son algunos de los errores que puede obtener con la API CapacityProvider:

  • ClientException: estos errores suelen deberse a una acción del cliente. Esta acción del cliente puede estar utilizando una acción o un recurso en nombre de un usuario de AWS Identity and Access Management (IAM) que no tiene los permisos necesarios para usar la acción o el recurso. Este error también puede especificar un identificador que no es válido.
  • UpdateInProgressException: obtiene este error porque ya hay una actualización actual del agente de contenedores de Amazon ECS en curso en la instancia de contenedor que especificó. Si el agente de contenedores se desconecta mientras se encuentra en una etapa de transición, como PENDING (Pendiente) o STAGING (Almacenamiento provisional), el proceso de actualización puede quedarse atascado en ese estado. Sin embargo, cuando el agente se vuelve a conectar, se reanuda donde se detuvo anteriormente.

Para obtener más información, consulte Errores.

Nota: si recibe errores al ejecutar comandos de AWS CLI, asegúrese de que utiliza la versión más reciente de AWS CLI.

Aparece el error: The specified capacity provider already exists (El proveedor de capacidad especificado ya existe). Para cambiar la configuración de un proveedor de capacidad existente, actualice el proveedor de capacidad

Cuando cree el proveedor de capacidad, use un nombre que sea diferente de cualquiera de los nombres de proveedores de capacidad que usó anteriormente. O bien, puede eliminar el proveedor de capacidad existente con ese nombre y, a continuación, crear un nuevo proveedor de capacidad.

Para ver una lista de todos los proveedores de capacidad que creó, ejecute el siguiente comando:

aws ecs describe-capacity-providers --query capacityProviders[].name --region example-region

La salida es similar a la siguiente:

[
    "FARGATE",
    "FARGATE_SPOT",
    "ecs-capacityprovider-1"
]

Para eliminar un proveedor de capacidad, ejecute el siguiente comando:

aws ecs delete-capacity-provider --capacity-provider ecs-capacityprovider-1 --region example-region

Para obtener resultados de muestra y más opciones, consulte delete-capacity-provider.

Para crear un nuevo proveedor de capacidad, ejecute el siguiente comando:

aws ecs create-capacity-provider --name "example-capacity=provider" --auto-scaling-group-provider autoScalingGroupArn=arn:aws:autoscaling:us-east-1:123456789012:autoScalingGroup:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111:autoScalingGroupName/MyAutoScalingGroup,managedScaling={status=ENABLED,targetCapacity=100,minimumScalingStepSize=1,maximumScalingStepSize=100},managedTerminationProtection=ENABLED

Para obtener resultados de muestra y más opciones, consulte create-capacity-provider.

Aparece el error: The specified Auto Scaling group ARN is already being used by another capacity provider (El ARN del grupo de Auto Scaling especificado ya está siendo utilizado por otro proveedor de capacidad). Especifique un ARN de grupo de Auto Scaling único y vuelva a intentarlo

El grupo de Auto Scaling y el proveedor de capacidad deben tener una relación individual. Puede adjuntar un grupo de Auto Scaling únicamente a un proveedor de capacidad y viceversa. Por lo tanto, verifique que su proveedor de capacidad esté asociado a un solo grupo de Auto Scaling.

Aparece el error: The specified cluster is in a busy state (El clúster especificado está ocupado). Los elementos adjuntados al clúster deben estar en estado UPDATE_COMPLETE o UPDATE_FAILED antes de que se puedan actualizar. Espere e inténtalo de nuevo

Este error se resuelve automáticamente en unos minutos. Puede esperar un tiempo y volver a intentar actualizar el proveedor de capacidad. También puede ejecutar el siguiente comando de la CLI para ver el estado actual de los archivos adjuntos y esperar hasta que los datos adjuntos estén en el estado UPDATE_COMPLETE.

aws ecs describe-clusters --clusters example-ARN --include ATTACHMENTS --query clusters[].attachmentsStatus --region example-region

El resultado debe ser similar al siguiente:

[
    "UPDATE_COMPLETE"
]

Obtiene errores debido a algunas limitaciones con el proveedor de capacidad

Tenga en cuenta las siguientes limitaciones al crear o actualizar un proveedor de capacidad:

  • No puede especificar más de seis proveedores de capacidad para una estrategia de capacidad.
  • Puede utilizar proveedores de capacidad de grupo de Auto Scaling o proveedores de capacidad de AWS Fargate en su estrategia de clúster. No puedes usar una combinación de ambos tipos.
  • El valor base de la estrategia del proveedor de capacidad solo se admite cuando ejecuta las tareas.

El proveedor de capacidad se creó correctamente con CloudFormation, pero no se muestra en la consola

Esto puede suceder cuando no asocia el proveedor de capacidad con el clúster en su plantilla de CloudFormation.

Para evitar este problema, utilice el siguiente fragmento de código en la plantilla de CloudFormation para asociar el proveedor de capacidad con el clúster:

...
ECSCluster:
  Type: 'AWS::ECS::Cluster'
  Properties:
    ClusterName: example-cluster
    CapacityProviders:
      - !Ref ECSCapacityProvider
...