MÓDULO 12 - Lambda: Solução de Problemas e Boas Práticas
Visão Geral
Este módulo aprofunda a solução de problemas em Lambda e as melhores práticas. Você aprenderá a diagnosticar erros comuns e otimizar suas funções.
Objetivos de Aprendizagem
- Identificar erros comuns em Lambda
- Diagnosticar problemas de timeout
- Analisar logs do CloudWatch de forma eficiente
- Aplicar as melhores práticas
- Otimizar o desempenho
Conteúdo da Semana
1. Erros Comuns em Lambda
┌─────────────────────────────────────────────────────────────┐
│ ERROS COMUNS EM LAMBDA │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. TIMEOUT │
│ Sintoma: "Task timed out after X seconds" │
│ Causas: │
│ • Processamento muito demorado │
│ • Chamada externa lenta (API, banco de dados) │
│ • Conexão de rede bloqueada │
│ Soluções: │
│ • Aumentar o timeout (máx 15 min) │
│ • Otimizar o código │
│ • Verificar VPC/Security Groups │
│ │
│ 2. OUT OF MEMORY │
│ Sintoma: "Runtime exited with error" │
│ Causas: │
│ • Dados muito volumosos │
│ • Vazamento de memória │
│ Soluções: │
│ • Aumentar a memória │
│ • Usar streaming ao invés de carregar tudo │
│ │
│ 3. PERMISSION DENIED │
│ Sintoma: "AccessDenied" ou "not authorized" │
│ Causas: │
│ • Falta de role IAM │
│ • Policy incorreta │
│ Soluções: │
│ • Verificar o role de execução │
│ • Adicionar as permissões necessárias │
│ │
│ 4. IMPORT ERROR │
│ Sintoma: "Unable to import module" │
│ Causas: │
│ • Handler mal configurado │
│ • Dependência ausente │
│ Soluções: │
│ • Verificar nome do arquivo e handler │
│ • Incluir todas as dependências │
│ │
└─────────────────────────────────────────────────────────────┘
2. Análise de Logs do CloudWatch
Logs Lambda no CloudWatch:
/aws/lambda/fonction-name
│
├── START RequestId: xxx Version: $LATEST
│ └── Início da execução
│
├── [INFO] Seus logs de aplicação (print, logging)
│
├── END RequestId: xxx
│ └── Fim da execução
│
└── REPORT RequestId: xxx
Duration: 123.45 ms
Billed Duration: 200 ms
Memory Size: 128 MB
Max Memory Used: 64 MB
└── Métricas importantes!
Busca útil:
• "ERROR" ou "Exception" para erros
• "Task timed out" para timeouts
• "Memory" para problemas de memória
3. Método de Diagnóstico
┌─────────────────────────────────────────────────────────────┐
│ DIAGNÓSTICO LAMBDA │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. Identificar o sintoma │
│ └── Mensagem de erro exata? │
│ │
│ 2. Verificar os logs do CloudWatch │
│ └── Existe uma stack trace? │
│ └── Qual é o último log antes do erro? │
│ │
│ 3. Verificar as métricas │
│ └── Duração vs Timeout configurado? │
│ └── Memória usada vs Memória alocada? │
│ │
│ 4. Testar localmente │
│ └── Reproduzir com os mesmos dados │
│ │
│ 5. Verificar a configuração │
│ └── Handler correto? │
│ └── Variáveis de ambiente? │
│ └── Role IAM? │
│ │
└─────────────────────────────────────────────────────────────┘
4. Boas Práticas
✅ BOAS PRÁTICAS LAMBDA
DESEMPENHO:
• Inicializar conexões fora do handler (reutilização)
• Usar a memória adequada (mais memória = mais CPU)
• Minimizar o tamanho do pacote
SEGURANÇA:
• Princípio do menor privilégio (IAM)
• Variáveis de ambiente criptografadas (KMS)
• Nunca coloque segredos no código
OBSERVABILIDADE:
• Logging estruturado (JSON)
• Métricas customizadas se necessário
• X-Ray para tracing
RESILIÊNCIA:
• Tratamento de erros (try/catch)
• Retries com backoff
• Dead Letter Queue para falhas
Exercício: Desafio de Solução de Problemas
Cenário
Uma função Lambda falha de forma intermitente. Veja os sintomas:
- Às vezes timeout após 3 segundos
- Às vezes erro "Connection refused"
- Os logs mostram tentativas de conexão com uma API externa
Perguntas
- Quais são suas hipóteses?
- Quais testes você realiza?
- Quais soluções você propõe?
Entregável
Debrief de Solução de Problemas:
- Problemas encontrados
- Método de diagnóstico utilizado
- Soluções aplicadas
- Lições aprendidas
Navegação
- Solução de Problemas Lambda
- Quiz de Validação - 30 questões para validar seus conhecimentos
- Lab: Solução de Problemas Lambda
Próxima semana: MÓDULO 13 - Observabilidade