Implementation Plan: Infra & DX Otimizada
Objective
Implementar as melhorias de infraestrutura definidas no spec 2026-04-19-infra-docker-terraform-design.md, otimizando a imagem Docker para AWS Lambda com uv, estruturando os módulos do Terraform e ajustando o ambiente de desenvolvimento local (Docker Compose).
Step 1: Otimização do Dockerfile (AWS Lambda + uv)
- Refatorar o arquivo
Dockerfilena raiz do projeto. - Implementar a abordagem Multi-stage Build.
- Stage 1 (Builder):
- Base
ghcr.io/astral-sh/uv:python3.12-bookworm-slim. - Setar variáveis de otimização (
UV_COMPILE_BYTECODE=1,UV_LINK_MODE=copy). - Fazer o
uv syncdas dependências com cache mount e exportar para.venv. - Stage 2 (Runtime):
- Base
python:3.12-slim-bookworm. - Copiar o AWS Lambda Web Adapter (
public.ecr.aws/awsguru/aws-lambda-adapter:0.8.4). - Copiar o diretório
.venve os fontes da aplicação. - Setar o
CMDpara rodar o Uvicorn apontando pro app correto (amon_claw.main:appouamon_claw.presentation.api.main:app).
Step 2: Ajuste da Developer Experience (Docker Compose)
- Modificar o
compose.ymlprincipal para ser focado apenas em dependências (MongoDB, Mongo Express, Redis, RedisInsight), removendo o serviço da aplicação (app). - Criar um arquivo secundário
compose.full.yml(ou similar) que inclua o serviçoappbuildando do novoDockerfileotimizado, para servir de ambiente de demonstração/PoC. - Atualizar documentação do README.md (ou adicionar um quickstart) explicando os dois fluxos de execução:
- Workflow Dev (Bancos via Docker + API via
uv run local). - Workflow PoC (Tudo via Docker Compose).
Step 3: Estruturação Base do Terraform
- Criar diretório
infra/na raiz do repositório. - Criar arquivos base:
infra/main.tf,infra/providers.tf,infra/variables.tf,infra/outputs.tf. - Configurar backend S3/DynamoDB provisório ou comentado no
providers.tf. - Criar estrutura de módulos em
infra/modules/: -
ecr/: Configuração de Lifecycle policies. -
iam/: Configuração de roles e policies (Least Privilege). -
lambda/: Configuração de Image-based Lambda com arquiteturaarm64. -
api_gateway/: Configuração de HTTP API v2 com rota$default.