DynamoDB をローカルで実行できますか?
はい。AWS は DynamoDB Local を提供しています。無料でダウンロードできる DynamoDB 版で、Docker イメージ、Java の実行可能ファイル、または Apache Maven の依存関係として自分のマシン上で動きます。ウェブサービスと同じ API を提供するので、オフラインで開発・テストしてから、コードを AWS に向けるだけで済みます。
実行方法は 3 通り
- Docker イメージ — もっとも一般的な選択肢です。
docker run1 回でローカルポートにエンドポイントが立ち上がります。 - ダウンロード版アーカイブ — 直接起動する Java アプリケーションです(JRE が必要)。
- Apache Maven の依存関係 — JVM のテストスイートに組み込みます。
ローカルで開発する理由
データベースが自分のコンピュータ内で完結するので、スループット、データストレージ、データ転送の料金を節約できます。開発中はインターネット接続も不要です。デプロイの準備ができたら、コードからローカルエンドポイントを外すだけで DynamoDB のウェブサービスを指すようになります。
違いに注意
DynamoDB Local は API をエミュレートしますが、本番のエンジンではありません。AWS は使用上の注意で動作の違いを記載しています(たとえばスループットは強制されません)。パフォーマンスのモデルではなく、機能的な開発/テスト用のダブルとして扱ってください。
実測した 3 つの相違点
私たちはエラーページで引用しているエラーを再現するために DynamoDB Local のコンテナを常時走らせているので、その縁に定期的にぶつかります。ローカルテストが緑になったことを信頼する前に、知っておく価値のある 3 つを挙げます。
プロビジョニング済みスループットはまったく強制されません。1 RCU のテーブルを作り、3.5 KB のアイテムを 1 件 put し、SDK のリトライを切って(maxAttempts: 1)強整合読み取りでループさせました。
reads=5000 ok=5000 errors=0 elapsed=2.5s rate=1997/s5,000 回の読み取り、スロットリングはゼロ、1 ユニットしかプロビジョニングしていないテーブルに対して毎秒およそ 2,000 読み取りユニットが持続しました。同じループを実サービスに対して回すと、49 回目の読み取りで ProvisionedThroughputExceededExceptionを投げます。キャパシティのバグは、ローカルでは失敗しようがありません。
あるエラーは名前が変わります。同じ PartiQL の INSERT を 2 回実行すると、DynamoDB Local は Duplicate primary key exists in table というメッセージで DuplicateItem を返します。実サービスは There was an attempt to insert an item with the same primary key as an item that already exists in the DynamoDB table というメッセージで DuplicateItemExceptionを返します。名前で分岐するエラー処理は、ローカルでは通り、本番で外します。
一部の API はそもそも存在しません。ExportTableToPointInTime はこう答えます。
UnknownOperationException: An unknown operation was requested.これは同じ呼び出しに対する実サービスのエラーではないので、PointInTimeRecoveryUnavailableException をガードするコードパスも、ローカルでは動かせません。
さらに詳しく
DynamoDB Local ガイドがセットアップを手順ごとに解説し、ローカル & LocalStack 接続ガイドが GUI をそこに向ける方法を示します — DynoTableは、AWS に接続するのとまったく同じようにローカルエンドポイントに接続します。最初のクエリは式ビルダーで試してみてください。
参考資料
- Setting up DynamoDB local (downloadable version) — Amazon DynamoDB Developer Guide
- DynamoDB local usage notes — Amazon DynamoDB Developer Guide
- Deploying DynamoDB locally on your computer — Amazon DynamoDB Developer Guide
最終検証日 2026-07-13、上記にリンクした公式 AWS ドキュメントに照らして確認しました。
3 つの相違点は 2026-07-28 に、Node v24.18.0 上の @aws-sdk/client-dynamodb 3.1095.0 を用いて DynamoDB Local 3.3.0(amazon/dynamodb-local、Corretto 17.0.17)に対して再現しました。上記の出力はすべてエンジン自身のもので、手を加えていません。