Implantação AWS — passo a passo
deploy/aws = módulo Terraform: ECS Fargate (Web + MCP) atrás de ALB, RDS Postgres, logs CloudWatch.
1. Pré-requisitos
- Terraform ≥ 1.5 + credenciais AWS (
aws configure/ variáveis de ambiente) com direitos para fazer recursos com escopo VPC, ECS, RDS, ALB, IAM. - Três imagens em registro que ECS pode extrair (ECR ou GHCR público).
2. Inicializar
cd deploy/aws
terraform init
3. Aplicar
terraform apply \
-var image_registry=ghcr.io/your-org/cmind \
-var image_tag=1.0.0 \
-var owner_email=you@example.com \
-var owner_password='Change-Me-Str0ng!' \
-var pg_password="$(openssl rand -hex 16)" \
-var discovery_join_token="$(openssl rand -hex 24)"
Faz: RDS Postgres (appdb), cluster ECS, serviços Fargate para Web + MCP, ALB (Web em /,
MCP em /mcp), grupos de segurança, grupo de log CloudWatch, coletor ADOT (AWS Distro for
OpenTelemetry) sidecar em cada tarefa. O aplicativo exporta OTLP para sidecar, que envia
rastreamentos para X-Ray, métricas para CloudWatch (EMF, namespace cmind); logs permanecem em
driver awslogs como JSON compacto. Descoberta ativada para Web. Papel de tarefa concede sidecar
acesso de escrita X-Ray + CloudWatch — nenhum coletor para executar você mesmo.
Usa VPC padrão/subnets da conta para brevidade. Para produção, conecte VPC próprio, subnets privadas, ouvinte HTTPS (certificado ACM).
4. Obter os URLs
terraform output web_url # raiz ALB
terraform output mcp_url # ALB /mcp
Abra web_url, entre com proprietário (alteração de senha forçada no primeiro login).
5. Adicionar agentes de nó (separadamente)
Fargate não permite privilegiado/DinD, então execute agentes em outro lugar apontando para web_url:
- ECS em EC2 — provedor de capacidade com definições de tarefa
privileged = trueexecutandocmind-node-agent. - EKS — gráfico Helm (kubernetes.md) com
nodeAgent.privileged=true.
Defina NodeAgent__MainUrl=<web_url>, NodeAgent__AdvertiseUrl=<agent reachable url>,
NodeAgent__JwtSecret=<discovery_join_token>. Agentes se auto-registram — veja
../operations/node-discovery.md.
6. Verifique
aws logs tail /ecs/cmind --since 5m # logs JSON compactos
curl -s "$(terraform output -raw web_url)/version"
Notas de produção
- Adicionar ouvinte HTTPS + certificado ACM; restringir grupo de segurança ALB.
- Armazene segredos no AWS Secrets Manager / SSM, injete via tarefa-definição
secretsem vez deenvironmentde texto puro. - Ativar RDS Multi-AZ + backups.
- Rastreamentos (X-Ray), métricas (CloudWatch EMF), logs (CloudWatch Logs) conectados automaticamente via
sidecar ADOT; correlacionar em
trace_id. Veja ../operations/logging.md.