Comment résoudre les problèmes lors de la configuration d'un nouveau fournisseur de capacité ou de la mise à jour d'un fournisseur de capacité existant pour mon cluster Amazon ECS ?

Date de la dernière mise à jour : 13/04/2022

Je rencontre des problèmes lorsque j'essaie de configurer un nouveau fournisseur de capacité ou de mettre à jour un fournisseur de capacité existant pour mon cluster Amazon Elastic Container Service (Amazon ECS).

Brève description

Voici quelques-uns des problèmes les plus courants qui surviennent lorsque vous configurez un nouveau fournisseur de capacité ou mettez à jour un fournisseur de capacité existant pour votre cluster Amazon ECS :

  • Vous obtenez des erreurs lorsque vous créez un fournisseur de capacité de groupe Auto Scaling à l'aide de l'AWS Command Line Interface (AWS CLI).
  • Vous obtenez l'erreur suivante : The specified capacity provider already exists. To change the configuration of an existing capacity provider, update the capacity provider. (Le fournisseur de capacité spécifié existe déjà. Pour modifier la configuration d'un fournisseur de capacité existant, mettez-le à jour.)
  • Vous obtenez l'erreur suivante :The specified Auto Scaling group ARN is already being used by another capacity provider. Specify a unique Auto Scaling group ARN and try again. (L'ARN du groupe Auto Scaling spécifié est déjà utilisé par un autre fournisseur de capacité. Spécifiez un ARN de groupe Auto Scaling unique et réessayez.)
  • Vous obtenez l'erreur suivante lorsque vous créez la stratégie du fournisseur de capacité :The specified cluster is in a busy state. Cluster attachments must be in UPDATE_COMPLETE or UPDATE_FAILED state before they can be updated. Wait and try again. (Le cluster spécifié est dans un état occupé. Les attachements de clusters doivent être dans l'état UPDATE_COMPLETE ou UPDATE_FAILED avant de pouvoir être mis à jour. Attendez et réessayez.)
  • Vous obtenez des erreurs en raison de certaines limitations avec le fournisseur de capacité.
  • Le fournisseur de capacité est créé avec succès avec AWS CloudFormation, mais n'apparaît pas dans la console.

Solution

Vous obtenez des erreurs lorsque vous créez un fournisseur de capacité de groupe Auto Scaling à l'aide de l'AWS CLI

Pour résoudre ce problème lorsque vous créez un fournisseur de capacité à l'aide de l'AWS CLI, examinez les événements AWS CloudTrail pour vérifier l'API CreateCapacityProvider. Voici quelques-unes des erreurs que vous pourriez obtenir avec l'API CapacityProvider :

  • ClientException : ces erreurs sont généralement causées par une action client. Cette action client peut utiliser une action ou une ressource au nom d'un utilisateur AWS Identity and Access Management (IAM) qui ne dispose pas des autorisations requises pour utiliser l'action ou la ressource. Cette erreur peut également spécifier un identifiant qui n'est pas valide.
  • UpdateInProgressException : vous obtenez cette erreur car une mise à jour de l'agent de conteneur Amazon ECS est déjà en cours sur l'instance de conteneur que vous avez spécifiée. Si l'agent de conteneur est déconnecté alors qu'il se trouve dans une phase de transition, telle que PENDING ou STAGING, le processus de mise à jour peut rester bloqué dans cet état. Toutefois, lorsque l'agent se reconnecte, il reprend là où il s'était arrêté précédemment.

Pour plus d'informations, consultez Erreurs.

Remarque : si vous recevez des erreurs lors de l'exécution de commandes AWS CLI, vérifiez que vous utilisez la version la plus récente d'AWS CLI.

Vous obtenez l'erreur suivante : The specified capacity provider already exists. To change the configuration of an existing capacity provider, update the capacity provider (Le fournisseur de capacité spécifié existe déjà. Pour modifier la configuration d'un fournisseur de capacité existant, mettez-le à jour)

Lorsque vous créez le fournisseur de capacité, utilisez un nom différent de tous les noms de fournisseurs de capacité que vous avez utilisés précédemment. Ou bien, vous pouvez supprimer le fournisseur de capacité existant portant ce nom, puis créer un nouveau fournisseur de capacité.

Pour afficher une liste de tous les fournisseurs de capacité que vous avez créés, exécutez la commande suivante :

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

Le résultat est similaire à ce qui suit :

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

Pour supprimer un fournisseur de capacité, exécutez la commande suivante :

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

Pour un exemple de résultat et plus d'options, consultez delete-capacity-provider.

Pour créer un nouveau fournisseur de capacité, exécutez la commande suivante :

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

Pour un exemple de résultat et plus d'options, consultez create-capacity-provider.

Vous obtenez l'erreur suivante : The specified Auto Scaling group ARN is already being used by another capacity provider. Specify a unique Auto Scaling group ARN and try again (L'ARN du groupe Auto Scaling spécifié est déjà utilisé par un autre fournisseur de capacité. Spécifiez un ARN de groupe Auto Scaling unique et réessayez)

Le groupe Auto Scaling et le fournisseur de capacité doivent avoir une relation directe. Vous pouvez attacher un groupe Auto Scaling à un seul fournisseur de capacité et vice versa. Par conséquent, vérifiez que votre fournisseur de capacité est associé à un seul groupe Auto Scaling.

Vous obtenez l'erreur suivante : The specified cluster is in a busy state. Cluster attachments must be in UPDATE_COMPLETE or UPDATE_FAILED state before they can be updated. Wait and try again (Le cluster spécifié est dans un état occupé. Les attachements de clusters doivent être dans l'état UPDATE_COMPLETE ou UPDATE_FAILED avant de pouvoir être mis à jour. Attendez et réessayez)

Cette erreur se résout automatiquement en quelques minutes. Vous pouvez attendre un certain temps, puis réessayer de mettre à jour le fournisseur de capacité. Vous pouvez également exécuter la commande CLI suivante pour afficher l'état actuel des attachements et attendre que l'attachement soit dans l'état UPDATE_COMPLETE.

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

Le résultat doit ressembler à ce qui suit :

[
    "UPDATE_COMPLETE"
]

Vous obtenez des erreurs en raison de certaines limitations avec le fournisseur de capacité

Tenez compte des limitations suivantes lorsque vous créez ou mettez à jour un fournisseur de capacité :

  • Vous ne pouvez pas spécifier plus de six fournisseurs de capacité pour une stratégie de capacité.
  • Vous pouvez utiliser des fournisseurs de capacité du groupe Auto Scaling ou des fournisseurs de capacité AWS Fargate dans votre stratégie de cluster. Vous ne pouvez pas utiliser une combinaison des deux types.
  • La valeur de base de la stratégie du fournisseur de capacité est prise en charge uniquement lorsque vous exécutez les tâches.

Le fournisseur de capacité est créé avec succès avec CloudFormation, mais n'apparaît pas dans la console.

Cela peut se produire lorsque vous n'associez pas le fournisseur de capacité au cluster dans votre modèle CloudFormation.

Pour éviter ce problème, utilisez l'extrait suivant dans votre modèle CloudFormation pour associer le fournisseur de capacité au cluster :

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