127 lines
5.1 KiB
Markdown
127 lines
5.1 KiB
Markdown
# 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: 1–3 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 | 1–3 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.
|