A pipeline foi desenvolvida para buscar dados (IPCA e Selic) via API do banco central do Brasil, carregados em um bucket no S3, transformados via python e feito load dos dados tratados em um banco de dados do postgres containnnerizado via Docker
API BCB (SGS) │ ▼ extract.py ──► S3 (raw/ano/mes/dia/) │ ▼ transform.py ──► S3 (processed/ano/mes/dia/) │ ▼ load.py ──► PostgreSQL (indicadores_bcb)
- Python 3.11
- AWS S3
- PostgreSQL 15
- Docker / Docker Compose
- boto3
- psycopg2
- python-dotenv
- GitHub Actions (CI/CD)
- 876 registros processados por execução (849 Selic + 27 IPCA)
- 0 duplicatas — pipeline idempotente com upsert por
data_referencia + serie
O projeto conta com pipeline de integração contínua via GitHub Actions,
executado automaticamente a cada push ou pull request para a branch main:
- Instalação automatizada das dependências
- Execução dos testes (
pytest) a cada alteração no código
Isso garante que qualquer mudança no pipeline seja validada antes de chegar à branch principal, sem depender de execução manual.
- Docker Desktop instalado
- Conta AWS com bucket S3 configurado
- Arquivo
.envna raiz com as variáveis abaixo
DB_HOST=db-postgres DB_PORT=5432 DB_NAME=pipeline_db DB_USER=postgres DB_PASSWORD=sua_senha AWS_ACCESS_KEY_ID=sua_chave AWS_SECRET_ACCESS_KEY=sua_chave_secreta AWS_DEFAULT_REGION=us-east-2
git clone https://github.com/GabrielDataLab/Pipeline-ETL-com-Python-AWS-S3-PostgreSQL-containerizado
cd Pipeline-ETL-com-Python-AWS-S3-PostgreSQL-containerizado
docker-compose up --buildpipeline-bcb-etl/ ├── .github/ │ └── workflows/ │ └── ci.yml # Pipeline de CI/CD (GitHub Actions) ├── docker-compose.yml ├── Dockerfile ├── requirements.txt ├── src/ │ ├── extract.py │ ├── transform.py │ └── load.py ├── tests/ │ └── test_pipeline.py # Testes automatizados (pytest) ├── main.py └── README.md