Use when it fits · DuckDB Foundation (DuckLabs, now part of AWS) · Embedded analytics engine

DuckDB

SQL over Parquet that runs anywhere, from my laptop to a Lambda. Next to Athena, not instead of it.

In The Stack Weekly: W43: Aurora PostgreSQL reads Iceberg and Parquet, worth a pilot

AWS bought DuckLabs, the company behind DuckDB, in August 2026. DuckDB stays MIT-licensed and owned by the non-profit DuckDB Foundation. So far the only AWS integration is Aurora PostgreSQL querying the lake; AWS says Athena, Glue and the rest will follow "over time".

The value is developer experience. The same SQL runs on my laptop, in a test, and in a Lambda, against the same Parquet in S3. It isn't a cheaper Athena: for big scans the difference is at most about 2x, and Athena does the fan-out for you.

Use it when

  • App endpoints that run many small, selective queries over the lake (per-customer dashboards, reports): sub-second when warm, no Athena polling.
  • Writing and reshaping Parquet: COPY gives full control of sort order, file size and partitions, with no 100-partition limit.
  • Local development and tests: the same SQL against the same S3 data from a laptop, or against sample files in CI with no AWS at all.

Don't use it when

  • Scans of tens of GB to TBs per query: one Lambda reads roughly 50 GB per 15 minutes. Athena fans out for you.
  • Ad-hoc analysis by people who just want a SQL console: Athena.

Pricing

Free and MIT-licensed. In Lambda you pay compute and S3 GETs: a query that reads 1 GB costs about $0.002, against $0.005 on Athena, with no 10 MB minimum per query.

Gotchas, with fixes

Gotcha: Lambda has no HOME directory, so INSTALL, LOAD and CREATE SECRET fail with "Can't find the home directory".

Fix: Run SET home_directory='/tmp' first.

Gotcha: The S3, AWS and Iceberg extensions are downloaded at runtime unless bundled: about 100 MB on every cold start.

Fix: Bundle them in the layer and SET extension_directory to it.

Gotcha: DuckDB SQL isn't Athena's (Trino) SQL. Date, array and approximate functions differ.

Fix: Test shared queries on both engines, or keep each query on one engine.

Gotcha: The layer zip is over 50 MB.

Fix: Upload the layer through S3, or use a container image.

Instead, consider

Worked examples

Where it fits

  • A data lake: Pick 04.

    App queries, writing Parquet, local dev and tests, on the same files. AWS bought the company behind it in August 2026.

  • Logs without a shocking bill: Pick 03.

    Search the S3 logs from a laptop or a Lambda when someone asks what happened.

Sources

Last reviewed by Nicolas Dao

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: