Como posso impedir que meu serviço Amazon ECS falhe ao se estabilizar no AWS CloudFormation?

4 minuto de leitura
0

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 DescribeService. 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 que contém o serviço permanece no estado CREATE_IN_PROGRESS ou UPDATE_IN_PROGRESS e não pode ser atualizada.

Se você não conseguir corrigir o problema subjacente com suas tarefas de serviço do Amazon ECS imediatamente e não quiser esperar que as chamadas de API DescribeService atinjam o tempo limite, você pode forçar manualmente o estado do recurso de serviço do Amazon ECS no AWS CloudFormation a um estado CREATE_COMPLETE. Para fazer isso, 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: forçar manualmente o AWS CloudFormation a entrar no estado CREATE_COMPLETE não é uma prática recomendada para serviços de produção, porque todas as tarefas são interrompidas e isso pode causar uma interrupção na produção.

Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), certifique-se de estar usando a versão mais recente da AWS CLI.

Resolução

Verificar a criação de recursos

1.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

2.Abra o console do AWS CloudFormation e selecione sua pilha.

3.Selecione a guia Eventos e verifique se seu recurso está sendo criado.

Atualize a contagem desejada do serviço

Você pode atualizar a contagem desejada do serviço para seu valor original com a AWS CLI ou o console do Amazon ECS.

Para usar a AWS CLI:

1.Para descrever o serviço e listar os eventos do serviço, execute o comando a seguir:

aws ecs describe-services --cluster awsExampleECSCluster --services MyNginxService2

2.Para atualizar a contagem desejada do serviço, execute o comando a seguir:

aws ecs update-service --cluster awsExampleECSCluster --service MyNginxService2 --desired-count 0

3.Atualize --desired-count para seu valor original.

Para usar o console do Amazon ECS:

1.Abra o console do Amazon ECS.

2.No painel de navegação, selecione Clusters, e depois, o cluster que contém o serviço Amazon ECS que você criou.

3.Na página Clusters, selecione o cluster que contém o serviço Amazon ECS que você criou.

4.Na página do cluster que você selecionou, na coluna Nome do serviço, selecione o serviço.

5.Selecione a guia Eventos e, em seguida, selecioneAtualizar.

6.Na página Configurar serviço, em Número de tarefas, insira 0.

7.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: para sincronizar sua pilha do AWS CloudFormation com as propriedades do serviço Amazon ECS depois de corrigir o problema com as tarefas subjacentes, você deve alterar manualmente a contagem desejada (DesiredCount) de volta ao valor original do seu modelo.


Informações relacionadas

Atualização de um serviço

update-service

services-stable

AWS OFICIAL
AWS OFICIALAtualizada há 3 anos