Initial commit

This commit is contained in:
2026-05-14 15:29:03 -03:00
parent 82ac556ecc
commit 54bcf081f6
31 changed files with 3132 additions and 518 deletions

126
docs/infrastructure.md Normal file
View File

@@ -0,0 +1,126 @@
# Infraestrutura
A infraestrutura é gerenciada via **Pulumi** (IaC em Python) e provisionada na AWS.
## Visão Geral dos Recursos
```
┌─────────────────────────────────────────────────┐
│ AWS Account 305427701314 │
│ (us-east-1) │
│ │
│ ┌──────────────────────────────────────────┐ │
│ │ Application Load Balancer │ │
│ │ Portas: 8501 (Streamlit), 8000 (API) │ │
│ │ Subnets: públicas (2) │ │
│ └─────────────────┬────────────────────────┘ │
│ │ │
│ ┌─────────────────▼────────────────────────┐ │
│ │ ECS Fargate Cluster │ │
│ │ Task: assistente-analitico-db-dev │ │
│ │ CPU: 256 | Memória: 512 MB │ │
│ │ Auto-scaling: 13 instâncias (60% CPU) │ │
│ │ Subnets: privadas (2) │ │
│ └──────────────────────────────────────────┘ │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────────┐ │
│ │ ECR │ │ KMS │ │ Secrets │ │
│ │ Repo │ │ Key │ │ Manager │ │
│ └──────────┘ └──────────┘ └──────────────┘ │
│ │
│ ┌──────────────────────────────────────────┐ │
│ │ CloudWatch Logs │ │
│ │ Log Group: assistente-analitico-db-dev │ │
│ │ Retenção: 7 dias │ │
│ └──────────────────────────────────────────┘ │
└─────────────────────────────────────────────────┘
```
## Stacks Pulumi
O diretório `infra/` contém três stacks independentes:
### 1. `infra/ecr/` — Elastic Container Registry
Cria o repositório ECR para armazenar as imagens Docker.
| Configuração | Valor |
|-------------|-------|
| Stack | `inovyo` |
| Repositório | `assistente-analitico-db-dev` |
### 2. `infra/ecs_alb/` — ECS + Application Load Balancer
Stack principal que provisiona o cluster ECS Fargate com ALB.
**Configurações principais:**
| Configuração | Valor |
|-------------|-------|
| Stack | `Inovyo` |
| Projeto | `assistente-analitico` |
| Ambiente | `dev` |
| Conta AWS | `305427701314` |
| Região | `us-east-1` |
**Rede:**
| Recurso | Valor |
|---------|-------|
| VPC | `vpc-17ceb96c` |
| Subnets ALB | 2 subnets públicas |
| Subnets ECS | 2 subnets privadas |
| Ingress CIDR | `3.14.44.224/32` (IP restrito) |
| ALB interno | Não (externamente acessível) |
**ECS Task:**
| Configuração | Valor |
|-------------|-------|
| Task Name | `assisnte-analitico-db-dev` |
| CPU | 256 |
| Memória | 512 MB |
| Desired Count | 1 |
| Auto-scaling | 13 instâncias, target 60% CPU |
| Portas | 8000 (API), 8501 (Streamlit) |
**Variáveis de ambiente do container:**
| Variável | Descrição |
|----------|-----------|
| `LANGFUSE_HOST` | Endpoint do Langfuse |
**Módulos inclusos:**
- `iam.py` — Roles de execução e task com políticas para Bedrock, DynamoDB, Secrets Manager, CloudWatch
- `ecs.py` — Definição de task, service, target groups, listeners e auto-scaling
- `ecr.py` — Referência ao repositório ECR
- `kms.py` — Chave KMS para criptografia
- `conf.py` — Carregamento de configuração do Pulumi
- `autotag/` — Auto-tagging de recursos AWS
### 3. `infra/langfuse/` — Langfuse
Provisionamento da infraestrutura para o serviço de observabilidade Langfuse.
| Configuração | Valor |
|-------------|-------|
| Stack | `inovyo` |
| Host | `http://172.31.252.176:3000` |
## Serviços AWS Utilizados
| Serviço | Uso |
|---------|-----|
| **ECS Fargate** | Orquestração de containers |
| **ALB** | Balanceamento de carga |
| **ECR** | Registry de imagens Docker |
| **Bedrock** | Inferência de modelos LLM |
| **DynamoDB** | Contexto e dados pré-processados do agente |
| **Secrets Manager** | Credenciais do Langfuse |
| **KMS** | Criptografia |
| **CloudWatch** | Logs |
| **IAM** | Controle de acesso |
## Como Deployar Infraestrutura
Consulte o [Guia de Deploy](deployment.md) para instruções detalhadas.