For ingest-and-report, Postgres wins. The expensive part is the front door, not the database. Fix REST and per-message invocations, and the bill drops from about $1,100 to $215–410.
216M messages a month, Sydney, Postgres already running for other workloads.
| Design | Monthly |
|---|---|
| API Gateway REST → SNS → Lambda → Postgres | $1,014–1,109 (REST alone $756, SNS $107.50, Lambda $88) |
| HTTP API → SQS → batched Lambda → Postgres | ~$410 |
| IoT Core Basic Ingest → SQS → batched Lambda → Postgres | ~$215–230 (MQTT devices with certificates) |
| Durable Objects + history to R2 | ~$70–235, but no SQL across devices |
- Keep Postgres: SQL across devices, one system, Sydney residency, compute shared with other workloads.
- Fix the front door (HTTP API or IoT Core instead of REST) and batch into Lambda through SQS.
- Watch storage: about 260 GB of growth a month, roughly $340 a month after a year.
- Durable Objects only win when devices need live sessions: commands sent down, per-device real-time state, live dashboards.