web-dev-qa-db-fra.com

La création d'AWS a échoué: le service existe déjà. (Service: AWSServiceDiscovery; Code d'état: 400; Code d'erreur: ServiceAlreadyExists; ID de demande)

je suis nouveau sur aws et j'ai rencontré un problème en essayant de créer un service EC2 dans un cluster ECS.

j'ai réussi à créer un tout nouveau service (service1) dans le cluster1, mais après, j'ai décidé de supprimer le cluster1 et de créer le cluster2. Le problème est survenu lorsque j'essaie de recréer service1 dans cluster2. chaque fois que j'essaye d'ajouter le service, j'obtiendrai l'erreur suivante

creation failed: Service already exists. (Service: AWSServiceDiscovery; Status Code: 400; Error Code: ServiceAlreadyExists; Request ID: d854025e-ebcc-11e8-84ab-b3bac906f2ef)

quelqu'un sait comment résoudre ce problème? j'ai essayé de désenregistrer la définition de tâche mais cela n'a pas fonctionné. cluster1 a été supprimé et il n'y a aucun service dans cluster2

7
DJ_

Voici la réponse complète. Lorsque vous avez créé AWS ECS Service et que vous avez également sélectionné ServiceDiscovery facultatif pour cela, ce qui a créé un espace de noms (.local) et un service (avec le même nom que ECS Service) dans Route53.

Lorsque vous supprimez le service et le cluster ECS, il ne supprime pas automatiquement les entrées d'espace de nom/service Route53. Maintenant, vous obtenez Service already exists erreur car votre nouveau service ECS correspond au même nom que le service ServiceDiscovery. Vous avez 3 options. 1. Nettoyez les espaces de noms et les services Route53. 2. Réutilisez le service Route53 si vous souhaitez continuer à utiliser la fonction ServiceDiscovery. 3. N'activez pas l'intégration de découverte de service lorsque vous créez le service ECS.

Option 1 -

  • Vous ne pouvez pas supprimer les espaces de noms et le service Route53 ServiceDiscovery via la console. Vous devrez utiliser l'AWS CLI. (Assurez-vous que vous avez configuré la CLI avec les clés AWS comme le compte sur lequel vous avez créé ECS) https://docs.aws.Amazon.com/cli/latest/reference/ servicediscovery/index.html
  • Répertoriez les espaces de noms et services avec CLI à l'aide des commandes suivantes et des exemples de résultats que vous devriez obtenir.
  • aws servicediscovery list-services

{"Services": [{"Id": "srv-x4acveybedar32mv", "Arn": "arn: aws: servicediscovery: us-east-1: 1234567890: service/srv-x4acveybedar32mv", "Name": "nginx" }]}

  • aws servicediscovery list-namespaces

{"Namespaces": [{"Id": "ns-3yd7pskwsxhwlq67", "Arn": "arn: aws: servicediscovery: us-east-1: 1234567890: namespace/ns-3yd7pskwsxhwlq67", "Name": "local" , "Tapez": "DNS_PRIVATE"}]}

  • Supprimez d'abord le service avec la commande. aws servicediscovery delete-service --id "srv-x4acveybedar32mv". Le résultat est une réponse vide de la CLI.
  • Supprimez l'espace de noms avec la commande. aws servicediscovery delete-namespace --id "ns-3yd7pskwsxhwlq67"

{"OperationId": "s573v5dr62yee5d7vbfvsy5h65ybxmoh-jossalgs"}

  • C'est tout. Maintenant, vous pouvez recréer les services ECS que vous vouliez.

Remarque -

Parfois, les opérations de nettoyage DNS prendront quelques minutes pour se refléter correctement, alors donnez toujours quelques minutes avant de réessayer.

Option 2 -

  • Réutilisez les services Route53 en sélectionnant en sortant un au lieu de créer avec le même nom.

enter image description here

15
Imran