Passer au contenu

Comment puis-je résoudre les erreurs lorsque je supprime un fournisseur de capacité dans Amazon ECS ?

Lecture de 6 minute(s)
0

Un message d'erreur s'affiche lorsque j'essaie de supprimer un fournisseur de capacité pour mon cluster Amazon Elastic Container Service (Amazon ECS).

Brève description

Si vous avez utilisé la commande delete-capacity-provider de l'interface de ligne de commande AWS (AWS CLI) ou l'API DeleteCapacityProvider, l'une des erreurs suivantes peut s'afficher :

« updateStatus » : « DELETE_FAILED »

-ou-

« updateStatusReason » : « The capacity provider cannot be deleted because it is associated with cluster: Cluster Name. Remove the capacity provider from the cluster and try again. »

Si vous avez utilisé la console de gestion AWS pour supprimer un fournisseur de capacité, le message d'erreur suivant peut s'afficher :

« There was an error deleting capacity provider Capacity Provider Name. The specified capacity provider is in use and cannot be removed. »

Vous ne pouvez pas supprimer un fournisseur de capacité associé à un cluster. Pour résoudre les problèmes de suppression, vous devez soit supprimer le fournisseur de capacité du cluster, soit supprimer le cluster. Puis, supprimez le fournisseur de capacité.

Remarque : Si vous supprimez un groupe Amazon EC2 Auto Scaling, le fournisseur de capacité correspondant passe à l'état INACTIF. Il n'est pas recommandé d'utiliser des fournisseurs de capacité à l'état INACTIF car ils peuvent être automatiquement supprimés à tout moment.

Résolution

Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l’AWS CLI, consultez la section Résoudre les erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l'interface. Pour le formatage, installez jq à partir de la page Télécharger jq sur le site Web de jq.

Identifier les fournisseurs de capacité associés à votre cluster

Pour identifier tous les fournisseurs de capacité associés à un cluster Amazon ECS, utilisez la console Amazon ECS ou l'AWS CLI.

Console Amazon ECS

Procédez comme suit :

  1. Ouvrez la console Amazon ECS.
  2. Dans le volet de navigation, sélectionnez Clusters.
  3. Sélectionnez votre cluster.
  4. Choisissez l'onglet Infrastructure.
  5. Sélectionnez Fournisseurs de capacité.

AWS CLI

Exécutez la commande describe-clusters suivante :

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

Remarque : Remplacez your-cluster-name par le nom de votre cluster.

Assurez-vous qu'Amazon ECS n'utilise pas le fournisseur de capacité dans sa stratégie de fournisseur de capacité

Pour afficher les services qui utilisent le fournisseur de capacité, exécutez le script suivant :

#!/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'

Remarque : Remplacez ClusterName par le nom de votre cluster et CapacityProviderName par le nom de votre fournisseur de capacité. Si le script renvoie une sortie vide, cela signifie qu'aucun des services du cluster n'utilise le fournisseur de capacité. Dans ce cas, passez à la section Vérifier si votre fournisseur de capacité est défini dans la stratégie de fournisseur de capacité par défaut pour le cluster.

Avant de supprimer un fournisseur de capacité existant en cours d'utilisation, vous devez mettre à jour Amazon ECS pour utiliser un nouveau fournisseur de capacité. Utilisez la console Amazon ECS ou l'AWS CLI. Lorsque vous mettez à jour le service, utilisez l’option Forcer un nouveau déploiement pour transférer les tâches qui utilisent la capacité d'instance Amazon Elastic Compute Cloud (Amazon EC2) entre les fournisseurs.

Pour utiliser l'interface de ligne de commande AWS afin de mettre à jour le fournisseur de capacité, procédez comme suit :

  1. Exécutez la commande describe-services suivante pour afficher la stratégie de fournisseur de capacité existante pour le service :

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

    Remarque : Remplacez my-cluster par le nom de votre cluster et my-service par le nom de votre service.

  2. Créez une nouvelle stratégie de fournisseur de capacité qui exclut le fournisseur de capacité que vous souhaitez supprimer. Assurez-vous que le poids total des fournisseurs de capacité restants est de 100.

  3. Exécutez la commande update-service suivante pour mettre à jour le service :

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

    Remarque : Remplacez your-cluster-name par le nom de votre service et your-service-name par le nom de votre cluster. Remplacez également remaining-provider par le nom du nouveau fournisseur de capacité.

Vérifier si le fournisseur de capacité est défini dans la stratégie par défaut pour le cluster

Pour trouver la stratégie de fournisseur de capacité par défaut pour votre cluster, exécutez la commande describe-clusters suivante :

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

Si le fournisseur de capacité que vous souhaitez supprimer se trouve dans la sortie de la commande, vous devez modifier la stratégie du fournisseur de capacité par défaut. Vous pouvez utiliser la console Amazon ECS ou l'AWS CLI.

Console Amazon ECS

Procédez comme suit :

  1. Ouvrez la console Amazon ECS.
  2. Dans le volet de navigation, sélectionnez Clusters.
  3. Sélectionnez votre cluster.
  4. Sélectionnez Mettre à jour le cluster.
  5. Dans Configuration du cluster, pour Stratégie de fournisseur de capacité par défaut, sélectionnez Supprimer pour le fournisseur de capacité.
  6. Sélectionnez Mettre à jour.

AWS CLI

Exécutez la commande put-cluster-capacity-providers suivante :

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

Remarque : Remplacez ClusterName par le nom de votre cluster.

Remplacez l'ancien fournisseur de capacité par un nouveau fournisseur de capacité avant de le supprimer. Pour remplacer le fournisseur de capacité, exécutez la commande put-cluster-capacity-provider suivante :

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

Remarque : Remplacez ClusterName par le nom de votre cluster, UpdatedCapacityProvider par le nouveau fournisseur de capacité et RegionName par votre région AWS.

Lorsque vous exécutez la commande put-cluster-capacity-providers, vous devez inclure tous les fournisseurs de capacité que vous souhaitez conserver dans le cluster. Si vous n'incluez pas de fournisseur de capacité, Amazon ECS dissocie le fournisseur de capacité du cluster.

Supprimer le fournisseur de capacité

Pour supprimer le fournisseur de capacité, exécutez la commande delete-capacity-provider suivante :

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

Remarque : Remplacez PreviousCapacityProvider par l'ARN du fournisseur de capacité que vous souhaitez supprimer.

Pour vérifier que le fournisseur de capacité est supprimé, exécutez la commande describe-capacity-providers suivante :

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

Remarque : Remplacez PreviousCapacityProvider par l'ARN du fournisseur de capacité que vous avez supprimé.

Dans la sortie de la commande, vérifiez que le statut du fournisseur de capacité est INACTIF.

AWS OFFICIELA mis à jour il y a 2 ans