Ошибка создания AWS: служба уже существует.(Сервис: AWSServiceDiscovery; Код состояния: 400; Код ошибки: ServiceAlreadyExists; Идентификатор запроса) - PullRequest
0 голосов
/ 19 ноября 2018

Я новичок в aws и столкнулся с некоторой проблемой при попытке создать службу EC2 в кластере ECS.

Мне удалось успешно создать совершенно новую службу (service1) в cluster1, но после этого ярешил удалить cluster1 и создать cluster2.Проблема возникла, когда я пытаюсь воссоздать service1 в cluster2.всякий раз, когда я пытаюсь добавить службу, я получаю следующую ошибку

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

Кто-нибудь знает, как решить эту проблему?Я попытался отменить определение задачи, но это не сработало.cluster1 был удален и в cluster2

нет служб

1 Ответ

0 голосов
/ 22 ноября 2018

Вот полный ответ. Когда вы создали сервис AWS ECS и также выбрали для него дополнительный ServiceDiscovery, который создал пространство имен (.local) и сервис (с тем же именем, что и у сервиса ECS) в Route53.

Когда вы удалили службу и кластер ECS, он автоматически не удалит записи пространства / службы Route53. Теперь вы получаете ошибку Service already exists, поскольку ваша новая служба ECS совпадает с именем службы ServiceDiscovery. У вас есть 3 варианта. 1. Очистите пространства имен и сервисы Route53. 2. Повторно используйте Сервис Route53, если вы хотите продолжать использовать функцию ServiceDiscovery. 3. Не включайте интеграцию обнаружения служб при создании службы ECS.

Вариант 1 -

  • Вы не можете удалить пространства имен и службу Route53 ServiceDiscovery через консоль. Вам потребуется использовать интерфейс командной строки AWS (убедитесь, что интерфейс CLI с ключами AWS настроен так же, как и учетная запись, в которой вы создали ECS) https://docs.aws.amazon.com/cli/latest/reference/servicediscovery/index.html
  • Вывести список пространств имен и служб с помощью CLI, используя следующие команды и пример выходных данных, которые вы должны получить.
  • aws servicediscovery list-services

{ "Сервисы": [ { "Id": "srv-x4acveybedar32mv", "Arn": "arn: aws: servicediscovery: us-east-1: 1234567890: service / srv-x4acveybedar32mv", "Имя": "nginx" } ]}

  • aws servicediscovery list-namespaces

{ «Пространства имен»: [ { "Id": "ns-3yd7pskwsxhwlq67", "Arn": "arn: aws: servicediscovery: us-east-1: 1234567890: пространство имен / ns-3yd7pskwsxhwlq67", «Имя»: «местный», "Тип": "DNS_PRIVATE" } ]}

  • Сначала удалите Сервис с помощью команды. aws servicediscovery delete-service --id "srv-x4acveybedar32mv". Результат - пустой ответ от CLI.
  • Удалить пространство имен с помощью команды. aws servicediscovery delete-namespace --id "ns-3yd7pskwsxhwlq67"

{ "OperationId": "s573v5dr62yee5d7vbfvsy5h65ybxmoh-jossalgs"}

  • Вот и все. Теперь вы можете воссоздать нужные вам сервисы ECS.

Примечание -

Иногда операции очистки DNS занимают несколько минут для правильного отражения, поэтому просто дайте всегда несколько минут перед повторной попыткой.

Вариант 2 -

  • Повторно используйте Route53 Services, выбрав выход из одного вместо создания с тем же именем.

enter image description here

...