Meu serviço Amazon Elastic Container Service (Amazon ECS) não consegue se estabilizar no AWS CloudFormation. Eu recebo o seguinte erro: “O serviço arn:aws:ecs:us-east-accountID:service/ServiceName não se estabilizou.”
Breve descrição
Um serviço criado no Amazon ECS não consegue se estabilizar se não estiver no estado especificado pelo modelo do AWS CloudFormation. Para confirmar que um serviço iniciou o número desejado de tarefas com a definição de tarefa desejada, o AWS CloudFormation faz repetidas chamadas de API DescribeServices. Essas chamadas verificam o status do serviço até que o estado desejado seja atingido. O processo de chamada pode levar até três horas. Em seguida, o AWS CloudFormation atinge o tempo limite e retorna a mensagem “O ARN do serviço não estabilizou”. Enquanto o AWS CloudFormation verifica o status do serviço, a pilha com o serviço permanece no estado CREATE_IN_PROGRESS ou no estado UPDATE_IN_PROGRESS e não pode ser atualizada.
Para evitar um tempo limite de chamada de API DescribeServices, force manualmente o estado do recurso de serviço Amazon ECS no AWS CloudFormation para o estado CREATE_COMPLETE. Defina manualmente a contagem desejada do serviço como zero no console do Amazon ECS para interromper a execução de tarefas. O AWS CloudFormation irá considerar a atualização como bem-sucedida, pois o número de tarefas é igual à contagem desejada de zero.
Importante: como prática recomendada, não force manualmente o AWS CloudFormation a entrar no estado CREATE_COMPLETE, pois uma parada forçada pode causar uma interrupção na produção.
Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solucionar erros da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
Resolução
Verificar a criação de recursos
Conclua as seguintes etapas:
-
Em seu modelo do AWS CloudFormation, crie um recurso AWS::ECS::Service. Por exemplo:
Resources:
ECSServiceA:
Type: AWS::ECS::Service
Properties:
DesiredCount: 1
Cluster: awsExampleECSCluster
LaunchType: EC2
ServiceName: "MyNginxService2"
TaskDefinition: NginxTask:1
-
Abra o console do AWS CloudFormation e selecione sua pilha.
-
Selecione a guia Eventos e verifique se seu recurso está sendo criado.
Atualizar a contagem desejada do serviço
É possível atualizar a contagem desejada do serviço para seu valor original com a AWS CLI ou o console do Amazon ECS.
AWS CLI
Conclua as seguintes etapas:
-
Para descrever o serviço e listar os eventos do serviço, execute o comando describe-services da AWS CLI:
aws ecs describe-services --cluster awsExampleECSCluster --services MyNginxService2
-
Para atualizar a contagem desejada do serviço, execute o comando update-service da AWS CLI:
aws ecs update-service --cluster awsExampleECSCluster --service MyNginxService2 --desired-count 0
-
Atualize --desired-count para o valor original.
Console do Amazon ECS
Conclua as seguintes etapas:
-
Abra o console do Amazon ECS.
-
No painel de navegação, escolha Clusters. Em seguida, selecione o cluster que contém o serviço Amazon ECS que você criou.
-
Na página Clusters, selecione o cluster que contém o serviço Amazon ECS que você criou.
-
Na página do cluster que você selecionou, na coluna Nome do serviço, selecione o serviço.
-
Selecione a guia Eventos e, em seguida, Atualizar.
-
Na página Configurar serviço, em Número de tarefas, insira 0.
-
Selecione Próxima etapa para ir até o final do assistente Serviço de Atualização e, em seguida, selecione Serviço de Atualização.
O serviço agora atinge um estado estável e faz a transição do recurso de serviço Amazon ECS no AWS CloudFormation para CREATE_COMPLETE ou UPDATE_COMPLETE.
Importante: sincronize sua pilha do AWS CloudFormation com as propriedades de serviço do Amazon ECS depois de corrigir o problema com as tarefas subjacentes. Para realizar uma sincronização, altere manualmente a contagem desejada (DesiredCount) de volta ao valor original do modelo.
Informações relacionadas
O que é o Amazon Elastic Container Service?
services-stable
DescribeServices