Deploy AWS ECS + API Gateway — ecosif-compliance

Público-alvo: DevOps / SRE
Objetivo: Configurar o serviço ecosif-compliance (Flask/Python) na AWS com ECS e uma única API Gateway. URL final: https://app.ecosif.com.br/ecosif-compliance. Este documento não cobre criação de banco de dados.


1. Arquitetura e mapeamento na API Gateway

Path (API Gateway) Target Descrição
/ecosif-compliance / /ecosif-compliance/{proxy+} ECS ecosif-compliance (ALB) Validação e conformidade contábil (API REST + Swagger em /docs/)

2. Context path / prefixo

A aplicação Flask deve ser servida com o prefixo /ecosif-compliance. Opções:

Recomenda-se A: definir no código/config o prefixo /ecosif-compliance (ex.: APPLICATION_ROOT=/ecosif-compliance ou equivalente no config.json), de forma que os endpoints fiquem em https://app.ecosif.com.br/ecosif-compliance/api/... e o Swagger em https://app.ecosif.com.br/ecosif-compliance/docs/.


3. Variáveis de ambiente para ECS (ecosif-compliance)

A aplicação lê configuração de config.json (ou config-{env}.json), com substituição de variáveis no formato ${VAR:-default}. Para ECS, definir as variáveis abaixo na task definition.

3.1 Servidor e aplicação

Variável (ambiente) Chave no config.json Obrigatória Descrição Valor em ECS
ECOSIF_HOST_ADDRESS host.address Não Endereço de escuta 0.0.0.0
ECOSIF_COMPLIANCE_PORT host.port Sim Porta HTTP do contentor 8021
ECOSIF_RUNTIME_ENVIRONMENT (escolha do ficheiro) Não Ficheiro config prod → config-prod.json
ECOSIF_DEBUG_MODE runtime.debug Não Modo debug false

Prefixo (context path): Se o projeto suportar variável para o prefixo da aplicação (ex.: APPLICATION_ROOT ou SCRIPT_NAME), definir APPLICATION_ROOT=/ecosif-compliance (ou o nome exato usado no código). Caso contrário, configurar no config.json / config-prod.json na imagem.

3.2 Banco de Dados (PostgreSQL)

Variável (ambiente) Chave no config Obrigatória Descrição Exemplo
ECOSIF_DB_SERVER database.host Sim Host PostgreSQL ecosif-db.xxxxx.us-east-1.rds.amazonaws.com
ECOSIF_DB_PORT database.port Sim Porta 5432
ECOSIF_DB_LOGIN database.name Sim Nome do banco ecosif
ECOSIF_DB_USER database.user Sim Usuário postgres
ECOSIF_DB_PASSWORD database.password Sim Senha (secret)

3.3 CORS e sessão

Variável (ambiente) Chave no config Obrigatória Descrição Valor para app.ecosif.com.br
ECOSIF_CORS cors.allowed_origins Sim Origens CORS https://app.ecosif.com.br
ECOSIF_SESSION_TIMEOUT session.timeout Não Timeout sessão (min) 30

3.4 Logs

Variável (ambiente) Chave no config Descrição Valor típico
ECOSIF_LOGMODE_ROOT logging.level Nível de log INFO

Os caminhos de ficheiro de log (logging.folder, logging.filename) podem ficar no JSON; em ECS convém usar stdout (ajustar config ou logging para não depender de disco).


4. ECS (task definition)

Para lista completa de variáveis e config.json, ver docker.md.