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