# 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.