web-dev-qa-db-ja.com

AWSの作成に失敗しました:サービスはすでに存在します。 (サービス:AWSServiceDiscovery;ステータスコード:400;エラーコード:ServiceAlreadyExists;リクエストID)

awsが初めてで、ECSクラスターでEC2サービスを作成しようとしているときに問題が発生しました。

cluster1に新しいサービス(service1)を正常に作成できましたが、その後、cluster1を削除してcluster2を作成することにしました。 cluster2にservice1を再作成しようとしたときに問題が発生しました。サービスを追加しようとすると、次のエラーが発生します

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

誰もがこの問題を解決する方法を知っていますか?タスク定義の登録を解除しようとしましたが、機能しませんでした。 cluster1が削除され、cluster2にサービスがありません

10
DJ_

ここに完全な答えがあります。 AWS ECSサービスを作成し、Route53に名前空間(.local)とサービス(ECSサービスと同じ名前の)を作成したオプションのServiceDiscoveryも選択した場合。

ECSサービスとクラスターを削除しても、Route53名前空間/サービスエントリは自動的には削除されません。今、あなたはService already exists新しいECSサービスがServiceDiscoveryサービスと同じ名前と一致するため、エラーが発生しました。 3つのオプションがあります。 1. Route53名前空間とサービスをクリーンアップします。 2. ServiceDiscovery機能を引き続き使用する場合は、Route53サービスを再利用します。 3. ECSサービスを作成するときは、サービス検出統合を有効にしないでください。

オプション1-

  • Route53 ServiceDiscovery名前空間とサービスをコンソールから削除することはできません。 AWS CLIを使用する必要があります(ECSを作成したアカウントと同じAWSキーでCLIを構成していることを確認してください) 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"、 "Name": "nginx" }]}

  • aws servicediscovery list-namespaces

{"名前空間":[{"Id": "ns-3yd7pskwsxhwlq67"、 "Arn": "arn:aws:servicediscovery:us-east-1:1234567890:namespace/ns-3yd7pskwsxhwlq67"、 "Name": "local" 、「タイプ」:「DNS_PRIVATE」}]}

  • 最初にコマンドでサービスを削除します。 aws servicediscovery delete-service --id "srv-x4acveybedar32mv"。結果は、CLIからの空の応答です。
  • コマンドで名前空間を削除します。 aws servicediscovery delete-namespace --id "ns-3yd7pskwsxhwlq67"

{"OperationId": "s573v5dr62yee5d7vbfvsy5h65ybxmoh-jossalgs"}

  • それで全部です。これで、必要なECSサービスを再作成できます。

注意 -

DNSクリーンアップ操作が適切に反映されるまでに数分かかる場合があるため、再試行する前に常に数分を与えるだけです。

オプション2-

  • 同じ名前で作成する代わりに既存のものを選択してRoute53サービスを再利用します。

enter image description here

22
Imran

AWS Cloud Mapサービスから削除する必要があります。 AWSクラウドマップを使用したECSサービス検出(DNSベース)。

この問題の使用例。 Service Discovery(DNSベース)を使用して、Service Discoveryを削除せずにECSサービスを削除します(コンソールで、DNSプライベートゾーンから全体を削除するためのチェックボックスを設定していません)。既存全体でサービスを作成しようとしています。

AWS Cloud Mapは、サービス検出(およびDNSプライベートゾーン)を管理します。

手順:
1。 AWSクラウドマップに移動 ここに画像の説明を入力
2。ここに画像の説明を入力して削除 ここに画像の説明を入力

0
Tomer