Introdução
A adoção do AWS Fargate como solução serveless para containers vem crescendo, principalmente entre times que buscam abstrair a complexidade de provisionamento de infraestrutura. No entanto, uma dúvida comum entre iniciantes e até profissionais experientes é: como visualizar os logs do containers em execução no Fargate?
Neste artigo, abordaremos de forma abragente:
Como funcionam os logs no Fargate
Configuração via console, CLI E Iac (com ESC Task Definition)
Boas práticas de logging para containers
Dicas de troubleshooting
📦 Logs no Fargate: Como funciona?
O Fargate captura automaticamente a saída padrão (stdout e stderr) dos containers e, se configurando corretamente, envia para Amazon CloudWatch Logs.
Para isso, você precisa definir na sua task definition o uso do log driver awslogs. Esse drive envia os logs para um grupo de logs no CloudWatch que você especificar.
📋 Exemplo de configuração (JSON)
"logConfiguration": {
  "logDriver": "awslogs",
  "options": {
    "awslogs-group": "/ecs/meu-servico",
    "awslogs-region": "us-east-1",
    "awslogs-stream-prefix": "ecs"
  }
}
⚙️ Configurando Logs no Fargate
✅ 1. Via Console
Acesse o ECS Console.
Crie ou edite uma Task Definition.
Na seção do container, vá até Storage and Logging.
Em Log configuration, selecione:
Log driver: awslogs
Log group: /ecs/nome-do-servico
Stream prefix: ecs
✅ 2. Via CLI
Você pode registrar uma task com logs configurados usando o comando:
aws ecs register-task-definition \
  --family meu-servico \
  --container-definitions file://container-def.json
Certifique-se de que o JSON inclua o logConfiguration conforme mostrado acima.
✅ 3. Via Terraform (Infraestrutura como Código)
hcl
container_definitions = jsonencode([
  {
    name  = "app"
    image = "meu-repo/app:latest"
    logConfiguration = {
      logDriver = "awslogs"
      options = {
        awslogs-group         = "/ecs/meu-servico"
        awslogs-region        = "us-east-1"
        awslogs-stream-prefix = "ecs"
      }
    }
  }
])
🔍 Visualizando Logs no CloudWatch
Depois que sua task está rodado:
Acesse o CloudWatch Logs.
Encontre o grupo /ecs/meu-servico.
Clique no stream correspondente (ecs/container-id) e veja a saída do container.
🔒 Permissões necessárias
A IAM Role atribuída a task precisa das permissões
{
  "Effect": "Allow",
  "Action": [
    "logs:CreateLogStream",
    "logs:PutLogEvents"
  ],
  "Resource": "*"
}
⚠️ Recomenda-se restringir Resource ao ARN do grupo de logs.
🧠 Boas práticas para logging em containers
Use stdout/stderr: Evite gravar em arquivos locais. Use console.log, System.out, etc.
Formate logs em JSON: facilita a análise com CloudWatch Logs Insights ou ELK.
Implemente log levels: INFO, DEBUG, ERROR, etc.
Rotacione e expire os logs: configure retenção no CloudWatch para evitar custos desnecessários.
🛠️ Dicas de troubleshooting
Logs não aparecem?
→ Verifique se o grupo de logs existe, se a role tem as permissões certas e se o stream está sendo criado.
Permissões negadas?
→ Verifique a taskExecutionRole e se ela está associada corretamente à sua task definition.
Múltiplos containers?
→ Use awslogs-stream-prefix diferente para cada container ou container name no prefixo.
📈 Avançado: CloudWatch Logs Insights
Você pode escrever queries para analisar os logs:
fields @timestamp, @message
| filter @message like /ERROR/
| sort @timestamp desc
| limit 20
✅ Conclusão
Visualizar logs no Fargate exige uma configuração explícita, mas é um processo simples e poderoso. Ao enviar os logs para o CloudWatch, você garante visibilidade sobre o comportamento dos containers em produção, além de possibilitar análises, alertas e integrações com outras ferramentas.
Se você está construindo aplicações com Fargate, não subestime o valor de uma boa estratégia de obervabilidade. Logging é so o começo.
Gostou do artigo? Me segue aqui no Dev.to e compartilha com alguém que também está explorando o Fargate na AWS. 🚀
              


    
Top comments (0)