Deploy AWS ECS + API Gateway — ecosif-auth
Público-alvo: DevOps / SRE
Objetivo: Configurar o serviço ecosif-auth na AWS com ECS e uma única API Gateway. URL final: https://app.ecosif.com.br/ecosif-auth. 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-auth / /ecosif-auth/{proxy+} |
ECS ecosif-auth (ALB) | Autenticação e emissão de JWT |
Os demais paths (/, /ecosif-masterdata, etc.) são tratados noutros serviços (ver docs de cada módulo).
2. Context path e comportamento
- O API Gateway encaminha o path completo para o ALB (ex.:
https://app.ecosif.com.br/ecosif-auth/api/auth/signin→ target recebe/ecosif-auth/api/auth/signin). - O serviço deve estar configurado com context path
/ecosif-authpara que os controllers respondam nesse prefixo.
No application.yml (ou via variável):
server:
servlet:
context-path: /ecosif-auth
Ou com variável de ambiente (se o projeto a suportar): SERVER_SERVLET_CONTEXT_PATH=/ecosif-auth.
3. Variáveis de ambiente para ECS (ecosif-auth)
Definir na task definition do ECS (ou em Secrets Manager/Parameter Store referenciados pela task).
3.1 Servidor
| Variável | Obrigatória | Descrição | Valor em ECS |
|---|---|---|---|
ECOSIF_AUTH_PORT |
Sim* | Porta HTTP do contentor | 8080 |
SERVER_SERVLET_CONTEXT_PATH |
Sim | Prefixo da aplicação | /ecosif-auth |
* Padrão Spring Boot 8080; o ALB faz health check nesta porta.
3.2 Banco de Dados (PostgreSQL)
| Variável | Obrigatória | Descrição | Exemplo |
|---|---|---|---|
POSTGRES_HOST |
Sim | Host do PostgreSQL (RDS/outro) | 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_auth |
POSTGRES_PASSWORD |
Sim | Senha | (secret) |
3.3 JWT e segurança
| Variável | Obrigatória | Descrição | Exemplo |
|---|---|---|---|
AUTH_TOKEN_SECRET |
Sim | Chave secreta JWT (HMAC) | String longa e aleatória (secret) |
TOKEN_EXPIRATION |
Sim | Vida do token (ms) | 86400000 (24h) |
3.4 CORS
| Variável | Obrigatória | Descrição | Valor para app.ecosif.com.br |
|---|---|---|---|
ECOSIF_CORS |
Sim | Origens permitidas | https://app.ecosif.com.br |
3.5 JPA / Flyway / OAuth2 / Logs
| Variável | Obrigatória | Descrição | Valor típico |
|---|---|---|---|
HIBERNATE_DDL_AUTO |
Sim* | DDL Hibernate | validate |
ECOSIF_FLYWAY_ENABLED |
Não | Executar migrações na subida | true ou false |
AUTH2_CLIENT_ID |
Não | OAuth2 Google (se usar) | — |
AUTH2_SECRET |
Não | OAuth2 Google (se usar) | — |
LOG_FORMAT |
Não | Logback | json (recomendado para CloudWatch) |
4. ECS (task definition)
- Porta do contentor: 8080 (ou a definida em
ECOSIF_AUTH_PORT). - Health check (ALB): path
/ecosif-auth/actuator/health(ou o configurado no Spring Boot Actuator). - Secrets:
POSTGRES_PASSWORD,AUTH_TOKEN_SECRET(eAUTH2_SECRETse aplicável) a partir de Secrets Manager ou variáveis injetadas pela task.
Para lista completa de variáveis e logs, ver operational.md.