Minha tarefa do Amazon Elastic Container Service (Amazon ECS) foi cancelada do grupo-alvo.
Resolução
Observação: Se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
Se o registro de sua tarefa do Amazon ECS for cancelado do grupo-alvo, verifique se há mensagens de erro na tarefa. Ou execute o seguinte comando describe-tasks da AWS CLI:
aws ecs describe-tasks \
--cluster cluster-name \
--tasks task-ARN
Observação: substitua cluster-name pelo nome do cluster e task-ARN pelo ARN da tarefa. Os detalhes da tarefa interrompida estão disponíveis por apenas 1 hora após a interrupção das tarefas.
Verifique o exitCode, reason, stopCode e stoppedReason na saída do comando e, em seguida, solucione o problema da tarefa interrompida.
Verifique se um contêiner essencial na tarefa foi encerrado
Todas as tarefas devem ter pelo menos um contêiner essencial. Se o contêiner essencial falhar ou parar, o Amazon ECS interromperá todos os contêineres na tarefa. Para investigar mais, verifique seus logs da aplicação.
Se sua tarefa usa o driver de log awslogs, execute o seguinte comando get-log-events para verificar os logs da sua aplicação no Amazon CloudWatch:
aws logs get-log-events \
--log-group-name awslogs-group \
--log-stream-name awslogs-stream-prefix/container-name/task-id
Observação: substitua awslogs-group pelo nome do grupo de log, awslogs-stream-prefix pelo nome do fluxo de log, container-name pelo nome do contêiner e task-id pelo ID da tarefa.
Para ver um exemplo de definição de tarefa que envia logs para o CloudWatch, consulte Exemplo de definição de tarefa do Amazon ECS: Encaminhe os logs para o CloudWatch.
Verifique se há problemas de falta de memória
Se os processos do contêiner consumirem mais memória do que a quantidade que você alocou na definição da tarefa, seu contêiner de tarefas será encerrado.
Para resolver esse problema, aloque mais memória para o contêiner. É uma prática recomendada testar o carregamento e ajustar os parâmetros de memória em um ambiente que não seja de produção. Também é uma prática recomendada aumentar gradualmente a memória e depois monitorar o desempenho. Por exemplo, aumente 256 MB para 512 MB. Ao atualizar sua memória de tarefas, revise também sua alocação de CPU. Para obter mais informações, consulte Práticas recomendadas para tamanhos de tarefas do Amazon ECS.
Para atualizar a memória, verifique se você definiu a memória no contêiner ou na definição da tarefa. Atualize a definição da tarefa e, em seguida, atualize o serviço para usar a nova revisão da definição da tarefa. Monitore o serviço para garantir que a definição da tarefa seja implantada com êxito com as novas configurações de memória.
Para obter mais etapas de solução de problemas, consulte Como soluciono erros de falta de memória no Amazon ECS?
Verifique suas configurações de verificação de integridade
Para solucionar falhas de verificação de integridade para tarefas do AWS Fargate, consulte Como soluciono falhas de verificação de integridade para tarefas do Amazon ECS no Fargate?
Erros de cancelamento de registro podem ocorrer quando uma tarefa falha nas verificações de saúde do Elastic Load Balancing (ELB) e você recebe um dos seguintes erros:
- “(service AWS-service) (port 8080) is unhealthy in (target-group arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/aws-targetgroup/123456789) due to (reason Health checks failed with these codes: [5xx]/[4xx]/[3xx]) or (Request timed out).”
- “(serviço AWS-Service) (tarefa eaa3ec9e9f104070b461490987654321) falhou nas verificações de integridade do contêiner.”
- “(service AWS-Service) (instance 10.122.144.145) (port 8080) is unhealthy in (target-group arn:aws:elasticloadbalancing:ap-south-1:120987654321:targetgroup/AWS-Service-TG/159c835dc9d8cf84) due to (reason Target is in an Availability Zone that is not enabled for the load balancer).”
Você também pode receber o seguinte erro no console do Amazon ECS:
“Task failed ELB health checks in (target-group arn:aws:elasticloadbalancing:us-east-1:111111111111:targetgroup/aws-targetgroup/123456789)”
Para resolver esse problema, certifique-se de que o endpoint que você configurou na verificação de integridade do grupo-alvo esteja correto.
Se suas tarefas do Amazon ECS demoram a responder às verificações de integridade, é uma prática recomendada aumentar o valor do parâmetro healthCheckGracePeriodSeconds. Além disso, use o modo de início lento para permitir que os alvos se aqueçam antes que o balanceador de carga envie a eles as solicitações de verificação de integridade.
Verifique sua configuração de tarefas e serviços
Verifique as métricas de CPU e memória do seu serviço. O alto uso de recursos pode fazer com que sua aplicação não responda e resultar em um erro 5xx. Para resolver esses problemas de tarefas com os tipos de inicialização do Fargate e do Amazon EC2, consulte Como posso monitorar a alta utilização de memória para tarefas do Amazon ECS no Fargate?
Verifique se a interface de rede elástica da tarefa ou os grupos de segurança da instância de contêiner permitem o tráfego do seu balanceador de carga nas portas necessárias do seu modo de rede:
- Para o modo de rede awsvpc, permita a porta que você definiu como containerPort em sua definição de tarefa.
- Para o modo de rede bridge, permita as portas efêmeras (32768-60999).
Informações relacionadas
Mensagens de erro de tarefas interrompidas do Amazon ECS
Use o Application Load Balancer para o Amazon ECS
Registro e monitoramento no Amazon Elastic Container Service