Uma função orientada a eventos deve validar o evento, ser idempotente e produzir logs suficientes para explicar cada processamento.
aws lambda get-function-configuration --function-name processar-vendas --profile curso
aws lambda invoke --function-name processar-vendas --payload fileb://events/s3-put.json response.json --profile curso
aws logs tail /aws/lambda/processar-vendas --since 10m --follow --profile cursoO evento local deve reproduzir o contrato real do produtor. Não use dados sensíveis em fixtures versionadas.
from typing import Any
def handler(event: dict[str, Any], context: Any) -> dict[str, int]:
records = event.get("Records", [])
if not records:
raise ValueError("Evento sem Records")
processed = sum(process_record(record) for record in records)
return {"received": len(records), "processed": processed}| Tema | Pergunta |
|---|---|
| idempotência | repetir o evento duplica a saída? |
| timeout | a dependência externa cabe no limite configurado? |
| memória | o ganho de CPU justifica o custo? |
| retry | a falha é transitória ou permanente? |
| concorrência | o destino suporta o pico de chamadas? |
| observabilidade | o log identifica objeto e execução sem expor dados? |
Evite ETL pesado, dependências enormes e gravações sem chave determinística.