Use case 09 of 21 · By Nicolas Dao

Device and IoT data

Thousands of devices sending readings that end up in reports.

My stack for this

  1. 01
    AWS IoT Core

    Cheapest AWS front door if devices speak MQTT.

  2. 02
    Amazon SQS

    Buffer, then batch into Lambda.

  3. 03
    Neon (serverless Postgres)

    Postgres wins for ingest-and-report.

Don't

  • API Gateway

    A per-request HTTP front door for a stream of tiny messages. At 216M messages a month, the REST API alone costs about $756. The whole IoT Core pipeline, processing included, costs about $215–230.

    Instead: AWS IoT Core

  • Amazon SNS

    SNS invokes Lambda once per message: at device volumes that's millions of tiny invocations. SQS lets Lambda take them in batches.

    Instead: Amazon SQS

  • Cloudflare Durable Objects

    Each object only sees its own data, so there's no SQL across devices for reports. Use them only for sending commands back to devices; the readings belong in Postgres.

    Instead: Neon (serverless Postgres)

Worked example: IoT ingestion into Postgres →

The picks, in brief

What each one is, my verdict, and what it costs. Every name opens the full entry: when to use it and when not, the gotchas with their fixes, provisioning and alternatives.

  • Use when it fits Proposed AWS IoT Core

    The cheapest AWS front door for device data, when the devices speak MQTT.

    Pricing: Sydney: $0.096 per million connection-minutes, $1.20 per million messages (metered in 5 KB steps), $0.18 per million rules triggered plus $0.18 per million actions. Basic Ingest messages carry no messaging charge. In my IoT example (5,000 devices, one message a minute), IoT Core → SQS → batched Lambda → Postgres ≈ $215–230 a month vs about $1,014–1,109 for API Gateway REST → SNS → Lambda.

  • My default Amazon SQS

    The queue in front of Lambda. Natural back-pressure, nearly free when batched.

    Pricing: Sydney: $0.40 per million requests (Standard), $0.50 (FIFO). A request carries up to 10 messages, so batching cuts the bill tenfold: 50M messages ≈ $6 batched, $60 unbatched.

  • My go-to Postgres. Scales to zero, branches like git, and talks HTTP so Lambda needs no VPC or proxy.

    Pricing: Launch plan $0.106 per compute-unit hour, Scale $0.222; storage $0.35/GB-month; no minimum. Available in Sydney.

Where they sit

The layers of the stack this job touches, with every tool named on this page.

Want this stack in your AWS account?

Cloudless Labs is a Sydney consultancy. We migrate on-premises systems to AWS, build serverless apps on this stack, and coach teams to ship with Claude Code and Codex.

Contact Us

For general inquiries, please contact us at:

For e-learning capabilities, please contact: