Amazon Elastic Container Service (Amazon ECS) で新しいサービスを作成すると、次のエラーが発生します。 「サービスの作成がべき等ではありませんでした」
解決策
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
Amazon ECS データベース内の既存のサービスと同じ名前のサービスを作成すると、べき等ではないことを示すエラーが発生します。この問題を解決するには、次の操作を行います。
既存のクラスター名を使用しないようにする
既存のクラスターと同じ名前のクラスターを作成しようとすると、次のいずれかのエラーが発生します。
InvalidParameterException: サービスの作成がべき等ではありませんでした。
または、
無効なリクエストが指定されました: CreateService エラー: サービスの作成がべき等ではありません。
このエラーを解決するには、同じ名前の既存のサービスがないことを確認します。同じ名前のサービスを最近削除した場合は、そのサービスの状態が DELETED になっていることを確認してください。
注: 既存のクラスターを削除しても、クラスターがまだ削除段階にある可能性があるため、べき等ではないことを示すエラーが発生する可能性があります。
サービスの状態が DEPROVISIONING である場合は、サービス内のいずれかのタスクがプロビジョニング解除状態に留まっているかどうかを確認します。クラスター内のすべてのタスクのステータスを確認するには、DescribeTasks API を実行します。または、次の手順を実行します。
- Amazon ECS コンソールを開きます。
- ナビゲーションページで [クラスター] を選択します。
- クラスターを選択します。
- [タスク] タブを選択します。
削除されたサービスに対する UpdateService API コールで、サービスがまだアクティブかどうかを確認します。さらに、Delete Service API コールで理由に「サービスに登録済みインスタンスが含まれています。サービスを削除する前に該当するインスタンスを削除してください」という理由が含まれているかどうかを確認します。Delete Service API にこの理由が含まれている場合は、該当インスタンスを削除します。
削除した IAM ロールを再作成する
タスクに AWS Identity and Access Management (IAM) ロールを使用している場合、そのロールを削除する前にタスクを削除する必要があります。IAM ロールは、タスクのライフサイクル全体を通じて使用可能である必要があります。これにはリソースのプロビジョニング解除も含まれます。
最初に IAM ロールを削除した後は、次のステップを実行してロールを再作成します。
- 以前の IAM ロール名を取得するには、次の describe-services コマンドを実行します。
aws ecs describe-services --cluster clustername --services servicename
注: お使いのものでそれぞれ、clustername をクラスター名に、servicename をサービス名に置き換えます。
- 同じ名前の IAM ロールを再作成します。必要なアクセス許可については、「Amazon ECS での、サービスリンクロールのアクセス許可」を参照してください。
注: ロールを削除したユーザーに関する情報を確認するには、AWS CloudTrail の DeleteRole イベントを確認します。
別の名前で新しいサービスを作成する
それでも削除したサービスと同じ名前では新しいサービスを作成できない場合は、別の名前で新しいサービスを作成してください。
関連情報
CreateService