Deploy AWS ECS + API Gateway — ecosif-reports
Público-alvo: DevOps / SRE
Objetivo: Configurar o serviço ecosif-reports na AWS com ECS e uma única API Gateway. URL final: https://app.ecosif.com.br/ecosif-reports. 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-reports / /ecosif-reports/{proxy+} |
ECS ecosif-reports (ALB) |
Geração de relatórios (PDF, CSV, TXT) |
2. Context path
Configurar context path /ecosif-reports:
- No
application.yml: server.servlet.context-path: /ecosif-reports
- Ou variável:
SERVER_SERVLET_CONTEXT_PATH=/ecosif-reports
3. Variáveis de ambiente para ECS (ecosif-reports)
3.1 Servidor
| Variável |
Obrigatória |
Descrição |
Valor em ECS |
ECOSIF_REPORTS_PORT |
Sim* |
Porta HTTP do contentor |
8080 |
SERVER_SERVLET_CONTEXT_PATH |
Sim |
Prefixo da aplicação |
/ecosif-reports |
3.2 Banco de Dados (PostgreSQL)
| Variável |
Obrigatória |
Descrição |
Exemplo |
POSTGRES_HOST |
Sim |
Host do PostgreSQL |
ecosif-db.xxxxx.us-east-1.rds.amazonaws.com |
POSTGRES_PORT |
Sim |
Porta |
5432 |
POSTGRES_DB |
Sim |
Nome do banco |
ecosif |
POSTGRES_USER |
Sim |
Usuário |
ecosif_reports |
POSTGRES_PASSWORD |
Sim |
Senha |
(secret) |
3.3 JWT e CORS
| Variável |
Obrigatória |
Descrição |
Valor para app.ecosif.com.br |
AUTH_TOKEN_SECRET |
Sim |
Chave JWT (igual ao ecosif-auth) |
(secret) |
TOKEN_EXPIRATION |
Sim |
Vida do token (ms) |
86400000 |
ECOSIF_CORS |
Sim |
Origens CORS |
https://app.ecosif.com.br |
3.4 JPA / AWS S3 / Logs
| Variável |
Obrigatória |
Descrição |
Valor típico |
HIBERNATE_DDL_AUTO |
Não* |
No YAML está none |
none |
AWS_ACCESS_KEY_ID |
Conforme uso |
AWS S3 (se usar) |
— |
AWS_SECRET_ACCESS_KEY |
Conforme uso |
AWS |
— |
AWS_DEFAULT_REGION |
Conforme uso |
Região |
us-east-1 |
LOG_FORMAT |
Não |
Logback |
json |
* O serviço não altera schema; apenas lê para relatórios.
4. ECS (task definition)
- Porta do contentor: 8080.
- Health check (ALB):
/ecosif-reports/actuator/health.
- Secrets:
POSTGRES_PASSWORD, AUTH_TOKEN_SECRET.
- Nota: Garantir java.awt.headless=true (já definido na Application) para geração de relatórios em servidor sem display.
Para lista completa de variáveis, ver variaveis_operacionais.md.