Quando eu crio um novo serviço do Amazon Elastic Container Service (Amazon ECS), recebo o seguinte erro: “A criação do serviço não foi idempotente.”
Resolução
Observação: Se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de erros da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
O erro não foi idempotente ocorre quando você cria um serviço que tem o mesmo nome de um serviço já criado no banco de dados do Amazon ECS. Para resolver esse problema, execute as seguintes ações.
Certifique-se de não usar um nome de cluster já criado
Se você tentar criar um cluster com o mesmo nome de outro, encontrará um dos seguintes erros:
“InvalidParameterException: A criação do serviço não foi idempotente.”
-or-
“Solicitação inválida: erro CreateService: O serviço de criação não é idempotente.”
Para resolver o erro, verifique se não há um serviço com o mesmo nome. Se você excluiu recentemente um serviço com o mesmo nome, verifique se o estado do serviço é EXCLUÍDO.
Observação: o erro não é idempotente pode ocorrer mesmo se você excluir o cluster, pois o cluster ainda pode estar na fase de exclusão.
Se o serviço estiver no estado DESPROVISIONANDO, verifique se alguma tarefa no serviço está travada no desprovisionamento. Para ver o status de todas as tarefas no cluster, execute a API DescribeTasks. Ou conclua as seguintes etapas:
- Abra o console do Amazon ECS.
- Na página de navegação, escolha Clusters.
- Selecione o cluster.
- Escolha a guia Tarefas.
Verifique a chamada de API UpdateService para o serviço excluído para verificar se o serviço ainda está ativo. Além disso, verifique na chamada de API Delete Service o motivo “O serviço contém instâncias registradas; exclua as instâncias antes de excluir o serviço”. Se a API Delete Service incluir esse motivo, exclua a instância.
Recriar o perfil do IAM excluído
Se você usa um perfil do AWS Identity and Access Management (IAM) para uma tarefa, primeiro deve excluir a tarefa antes de excluir o perfil. O perfil do IAM deve estar disponível durante todo o ciclo de vida da tarefa. Isso inclui o desprovisionamento de recursos.
Se você excluiu o perfil do IAM primeiro, conclua as etapas a seguir para recriar o perfil:
- Para obter o nome do perfil do IAM anterior, execute o seguinte comando describe-services:
aws ecs describe-services --cluster clustername --services servicename
Observação: substitua clustername pelo nome do cluster e servicename pelo nome do serviço.
- Recrie o perfil do IAM com o mesmo nome. Para informações sobre as permissões necessárias, consulte Permissões de perfil vinculadas ao serviço do Amazon ECS.
Observação: para encontrar informações sobre o usuário que excluiu o perfil, verifique o evento DeleteRole do AWS CloudTrail.
Criar um novo serviço com um nome diferente
Se você ainda não conseguir criar um novo serviço com o mesmo nome do serviço excluído, crie um novo serviço com um nome diferente.
Informações relacionadas
CreateService