Can you run DynamoDB locally?

Yes. AWS ships DynamoDB Local, a free downloadable version of DynamoDB that runs on your own machine as a Docker image, a Java executable, or an Apache Maven dependency. It exposes the same API as the web service, so you can develop and test offline, then simply point your code at AWS.

Three ways to run it

  • Docker image — the most common choice: one docker run and the endpoint is up on a local port.
  • Downloadable archive — a Java application you launch directly (requires a JRE).
  • Apache Maven dependency — embed it in JVM test suites.

Why develop locally

The database is self-contained on your computer, so you save on throughput, data storage, and data transfer fees — and you don't need an internet connection while developing. When you're ready to deploy, you remove the local endpoint from the code and it points at the DynamoDB web service.

Mind the differences

DynamoDB Local emulates the API, but it is not the production engine — AWS documents behavioral differences in its usage notes (throughput isn't enforced, for example). Treat it as a functional dev/test double, not a performance model.

Three divergences we measured

We keep a DynamoDB Local container running to reproduce the errors quoted on our error pages, which means we hit its edges regularly. Three are worth knowing before you trust a green local test.

Provisioned throughput is not enforced at all. We created a table at 1 RCU, put one 3.5 KB item, and read it back strongly consistent in a loop with SDK retries off (maxAttempts: 1):

reads=5000 ok=5000 errors=0 elapsed=2.5s rate=1997/s

Five thousand reads, zero throttles, roughly 2,000 read units per second sustained against a table provisioned for one. The same loop against the live service throws ProvisionedThroughputExceededException at read 49. A capacity bug cannot fail locally.

One error changes its name. Run the same PartiQL INSERT twice and DynamoDB Local answers DuplicateItem with the message Duplicate primary key exists in table. The service answers DuplicateItemException with There was an attempt to insert an item with the same primary key as an item that already exists in the DynamoDB table. Error handling that switches on the name passes locally and misses in production.

Some APIs are simply absent. ExportTableToPointInTime answers:

UnknownOperationException: An unknown operation was requested.

That is not the service's error for the same call, so a code path guarding on PointInTimeRecoveryUnavailableException cannot be exercised locally either.

Go deeper

The DynamoDB Local guide walks through setup step by step, and the local & LocalStack connection guide shows how to point a GUI at it — DynoTable connects to local endpoints exactly like it connects to AWS. Test your first query with the expression builder.

References

Last verified 2026-07-13 against the official AWS documentation linked above.

The three divergences were reproduced 2026-07-28 against DynamoDB Local 3.3.0 (amazon/dynamodb-local, Corretto 17.0.17) with @aws-sdk/client-dynamodb 3.1095.0 on Node v24.18.0. Every line of output above is the engine's own, unedited.

Work with DynamoDB without the Console

A fast DynamoDB desktop client that runs the real SQL DynamoDB can’t — JOINs, GROUP BY, aggregates — with visual editing and an AI agent on your own Bedrock keys.

Free 30-day trial, no credit card — then the Free plan with no time limit.