Cost Model
This reference implementation targets near-zero idle cost. These are estimates for us-east-1 across three usage levels: idle, 1k queries/month, and 10k queries/month. Infracost prices the Terraform plan at each pull request, and covers far less of this table than that suggests. It prices fixed-price resources only. Bedrock appears in no plan at all, and Aurora Serverless v2, the largest infrastructure line item below, prices to zero because ACU consumption is usage-based. Treat the Infracost figure as a check on what the stack provisions rather than as an estimate of the bill.
The system runs in two AWS environments, QA and Prod (see RAG001), so the running total is roughly 2× a single environment. The table below is per environment; QA is paused more aggressively than Prod to hold the combined cost down.
Estimated monthly cost (per environment)
Section titled “Estimated monthly cost (per environment)”| Service | Idle | 1k queries/month | 10k queries/month | Notes |
|---|---|---|---|---|
| Aurora Serverless v2 + pgvector | ~$0–3 | ~$3–8 | ~$10–20 | 0-ACU auto-pause; bills only while active. 10 GB storage ≈ $1 |
| Lambda + API Gateway HTTP API | ~$0 | ~$0 | ~$0 | Within free tier at demo volume |
| S3 + CloudFront | ~$0.50 | ~$1 | ~$1–2 | CloudFront free tier covers demo traffic |
| Bedrock (Titan + Haiku-class) | $0 | ~$3.50 | ~$35 | Titan embed: ~$0.01/1k queries; Haiku-class generation: ~$3.50/1k queries at ~2k input + ~300 output tokens each ($1/M input · $5/M output). See RAG007 for model alternatives at scale. |
| Secrets Manager | ~$0.40 | ~$0.40 | ~$0.40 | One secret |
| Observability (CloudWatch + X-Ray) | ~$0.10 | ~$0.55 | ~$1–3 | Free-tier logs + X-Ray; 1 alarm + 10 custom EMF metrics. See RAG008. |
| Per environment | ~$1–4 | ~$8–13 | ~$47–60 | Bedrock dominates at scale — ~$35 of the 10k column |
| QA + Prod combined | ~$2–8 | ~$16–26 | ~$94–120 | 2× the displayed row above; QA paused harder than Prod, so treat it as a ceiling |
What we deliberately avoided
Section titled “What we deliberately avoided”- NAT Gateway (~$32/mo + data): avoided by reaching Aurora via the RDS Data API instead of putting the Lambda in a VPC.
- VPC endpoints (PrivateLink): if Lambda were inside the VPC, Bedrock and Secrets Manager would need PrivateLink endpoints to remain reachable — ~$7.30/endpoint/month per AZ, or ~$14.60/month per service across two AZs. At two services that is $29/month, comparable to a NAT Gateway with none of the simplicity benefit.
- OpenSearch Serverless (~$700/mo floor): pgvector covers the demo’s scale at a fraction of the cost.
- Always-on RDS instance: Aurora Serverless v2 auto-pause bills only while active.
Guardrails
Section titled “Guardrails”The Infracost diff on each PR makes one narrow class of cost change visible before merge: adding a fixed-price resource, a NAT Gateway or a PrivateLink endpoint being the ones this design has reason to avoid. Usage-driven spend is outside it, which here means Bedrock and Aurora both. What bounds those is preventive: RAG009’s per-key lifetime request quota and the Lambda concurrency limit (risks.md R2).
© 2026 Benjamin Arunski