Engenharia de dados na AWS: pipeline com Python, S3, Athena e arquitetura escalável
Arquitetura de pipeline na AWS: ingestão Python, S3 particionado, Athena, qualidade de dados e custos sob controle.
Por Emerson Amorim14 min de leitura
Um pipeline escalável na AWS separa ingestão, armazenamento bruto, camada analítica e consumo. S3 é o sistema de registro; Athena consulta o que estiver bem particionado e documentado.
Arquitetura de referência
Sources ─► Ingest (Python) ─► s3://lake/bronze/
│
▼
Transform (Python/Spark)
│
▼
s3://lake/silver|gold/
│
▼
Athena ─► consumersParticionamento e formatos
- Prefira Parquet/ORC com compressão
- Partições por dt=YYYY-MM-DD (e hora se o volume justificar)
- Evite milhares de arquivos minúsculos
- Registre tabelas no Glue Catalog com schema explícito
import pyarrow as pa
import pyarrow.parquet as pq
def write_partition(table: pa.Table, bucket: str, dt: str) -> str:
path = f"s3://{bucket}/silver/events/dt={dt}/part-{dt}.parquet"
pq.write_table(table, path, compression="zstd")
return pathAthena com custo sob controle
SELECT device_id, avg(temperature) AS avg_temp
FROM lake.silver_events
WHERE dt BETWEEN date '2026-09-01' AND date '2026-09-07'
GROUP BY 1
ORDER BY avg_temp DESC
LIMIT 100;Sem filtro de partição, Athena varre objetos demais. Monitore bytes escaneados e imponha workgroups com limites.
Qualidade e governança
- Contratos de schema na ingestão
- Checks de nulidade, duplicidade e faixa
- Lineage mínima: job, versão, partição
- IAM least privilege por prefixo S3
Limitações
Athena não substitui warehouse para alta concorrência de BI. Para streaming subsegundo, use serviços de stream e materialize no lake de forma assíncrona.