Boa tarde
Verifiquei que após construir o cluster ECS a task é finalizada de forma recorrente sempre com a mensagem abaixo:
Task failed ELB health checks in (target-group arn:aws:elasticloadbalancing:us-west-2:574980437017:targetgroup)
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Boa tarde
Verifiquei que após construir o cluster ECS a task é finalizada de forma recorrente sempre com a mensagem abaixo:
Task failed ELB health checks in (target-group arn:aws:elasticloadbalancing:us-west-2:574980437017:targetgroup)
Resolvi o problema com a seguinte solução:
Deixei explícito o status code do retorno do health check do balance
health_check {
enabled = true
interval = 30
path = "/"
port = "traffic-port"
protocol = "HTTP"
timeout = 5
healthy_threshold = 5
unhealthy_threshold = 2
matcher = 302
}Pesquisando sobre o caso, verifiquei que o http 302 é referente a redirecionamento.
Analisado o caso, percebi que ainda não consegui resolver
Compartilhando a solução do caso, tive que adicionar health check para o target group e para a task definition.
Para o target group adicionei a seguinte configuração no terraform
health_check {
enabled = true
interval = 30
path = var.health_check_path
port = "traffic-port"
protocol = "HTTP"
timeout = 5
healthy_threshold = 5
unhealthy_threshold = 2
matcher = var.matcher_ports
}Tive que implementar um endpoint de health no projeto para servir como path, mas pelo que pesquisei você também pode adicionar como root ("/"). Em relação ao matcher, deixei como 200 e 302 para tratar casos de redirecionamentos.
variable "health_check_path" {
default = "/health"
}
variable "matcher_ports" {
default = "200,302"
}Na task definition adicionei o seguinte comando ao json template para deixar o container como health no painel da AWS
"command": ["CMD-SHELL","curl -f http://localhost:3000/health || exit 1"],Foi necessário instalar o curl dentro da imagem docker uma vez que a imagem que estava trabalhando era alpine.