Penempatan AWS — langkah demi langkah
deploy/aws = Modul Terraform: ECS Fargate (Web + MCP) di sebalik ALB, RDS Postgres, log CloudWatch.
1. Prasyarat
- Terraform ≥ 1.5 + bukti kelayakan AWS (
aws configure/ pemboleh ubah env) dengan hak untuk membuat sumber berskop VPC, ECS, RDS, ALB, IAM. - Tiga imej dalam pendaftar yang ECS boleh tarik (ECR, atau GHCR awam).
2. Inisialisasi
cd deploy/aws
terraform init
3. Gunakan
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)"
Membuat: RDS Postgres (appdb), kluster ECS, perkhidmatan Fargate untuk Web + MCP, ALB (Web di /, MCP di /mcp), kumpulan keselamatan, kumpulan log CloudWatch, sidecar pengumpul ADOT (AWS Distro for OpenTelemetry) dalam setiap tugas. Apl mengeksport OTLP ke sidecar, yang menghantar jejak ke X-Ray, metrik ke CloudWatch (EMF, ruang nama cmind); log kekal pada pemandu awslogs sebagai JSON padat. Penemuan aktif untuk Web. Peranan tugas memberikan akses tulis sidecar X-Ray + CloudWatch — tiada pengumpul untuk dijalankan sendiri.
Menggunakan VPC/subnet lalai akaun untuk kesederhanaan. Untuk pengeluaran, wayar VPC sendiri, subnet peribadi, pendengar HTTPS (sijil ACM).
4. Dapatkan URL
terraform output web_url # akar ALB
terraform output mcp_url # ALB /mcp
Buka web_url, daftar masuk dengan pemilik (perubahan kata laluan terpaksa pada log masuk pertama).
5. Tambah ejen nod (berasingan)
Fargate melarang istimewa/DinD, jadi jalankan ejen di tempat lain yang menunjuk pada web_url:
- ECS pada EC2 — penyedia kapasiti dengan takrifan tugas
privileged = truemenjalankancmind-node-agent. - EKS — Carta Helm (kubernetes.md) dengan
nodeAgent.privileged=true.
Tetapkan NodeAgent__MainUrl=<web_url>, NodeAgent__AdvertiseUrl=<agent reachable url>, NodeAgent__JwtSecret=<discovery_join_token>. Ejen mendaftar sendiri — lihat ../operations/node-discovery.md.
6. Sahkan
aws logs tail /ecs/cmind --since 5m # log JSON padat
curl -s "$(terraform output -raw web_url)/version"
Catatan pengeluaran
- Tambah pendengar HTTPS + sijil ACM; hadkan kumpulan keselamatan ALB.
- Simpan rahsia dalam AWS Secrets Manager / SSM, suntik melalui takrifan tugas
secretsdan bukannya pemboleh ubah persekitaranenvironmentteks biasa. - Dayakan RDS Multi-AZ + sandaran.
- Jejak (X-Ray), metrik (CloudWatch EMF), log (CloudWatch Logs) berwayar secara automatik melalui sidecar ADOT; korelasikan pada
trace_id. Lihat ../operations/logging.md. - Apl sudah menunjuk
OTEL_EXPORTER_OTLP_ENDPOINTdi sidecar dalam tugas; sela semula ke pengumpul luaran jika anda suka memusatkan.
Ejen salinan perdagangan + Penurus Rahsia (S5)
deploy/aws/copy-agent.tf menambah perkhidmatan copy-agent ECS Fargate menganjurkan CopyEngineSupervisor (App:Copy:Enabled=true, App:Features:CopyTrading=true) dengan tiada ALB — pekerja memegang soket cTrader berduration panjang. Rentetan sambungan DB disimpan dalam AWS Secrets Manager, disuntik melalui blok tugas secrets (peranan pelaksanaan yang diberi secretsmanager:GetSecretValue pada rahsia itu saja), bukan env teks biasa. NodeName setiap tugas lalai ke nama hos kontena-nya (unik setiap tugas Fargate), jadi atribut pajakan DB menjalankan profil setiap tugas — dua tugas tidak pernah melayan dua host satu. Skala copy_agent_count untuk menambah kapasiti salinan; gelang kunci DataProtection dikongsi melalui Postgres, jadi mana-mana tugas boleh menguraikan token Open API yang disimpan.