はじめに
この記事では、AWSのDynamoDBをローカル環境で再現する方法について紹介します。
本番環境と同じようなAPIで開発・テストを行える「DynamoDB Local」を使うことで、インターネット接続やAWSアカウントが不要になります。
参考文献
個人のまとめ記事となっておりますが、温かい目で見守っていただければ幸いです。
書こうと思ったきっかけ
個人的な開発の一環で、DynamoDBをローカルで試したい場面がありました。
本番環境への影響を避けつつ、スムーズに開発を進めるために、ローカル環境でのDynamoDB構築手順を記事にまとめておこうと思いました。
DynamoDB Localとは?
- AWS公式のDynamoDBエミュレーター(ローカル実行)
- 本番と同じAPI(boto3など)で操作可能
- インターネット不要、無料で利用可能
参考文献
実際にやってみた(おすすめはDocker)
最小構成(とりあえず動かすだけ)
docker run -d -p 8000:8000 amazon/dynamodb-local
-
-d:バックグラウンド実行 -
-p 8000:8000:ホスト → コンテナのポート転送
起動後の画面
DynamoDB Local が正しく起動しているか確認するために実行した docker ps コマンドの出力ログです。
データ永続化付き(再起動しても保持)
docker run -d -p 8000:8000 \
-v $PWD/dynamodb_data:/home/dynamodblocal/data \
amazon/dynamodb-local \
-jar DynamoDBLocal.jar -sharedDb -dbPath /home/dynamodblocal/data
-
-v:永続化ディレクトリマウント -
-sharedDb:単一DBファイルで共有 -
-dbPath:データ保存パス指定
docker-composeを使う場合
version: '3.8'
services:
dynamodb:
image: amazon/dynamodb-local
container_name: macbookpro-dynamodb-1
ports:
- "8000:8000"
volumes:
- ./dynamodb_data:/home/dynamodblocal/data
command: ["-jar", "DynamoDBLocal.jar", "-sharedDb", "-dbPath", "/home/dynamodblocal/data"]
起動:
docker compose up -d
確認コマンド(もちろんデータは空):
aws dynamodb list-tables --endpoint-url http://localhost:8000
レスポンス例:
{"TableNames":[]}
データを入れて確認してみた
1. boto3 のインストール
まずは AWS SDK for Python(boto3)をインストールします。
pip install boto3
※ すでにインストールされている場合はこのステップは不要です。
こんな感じで問題なくインストールできました
2. テーブル作成用Pythonスクリプト
以下のコードを create_table.py という名前で保存します。
# create_table.py
import boto3
# DynamoDBローカルに接続(endpoint_url を忘れずに)
dynamodb = boto3.client('dynamodb', endpoint_url='http://localhost:8000')
# "Users" テーブルを作成
dynamodb.create_table(
TableName='Users',
KeySchema=[
{'AttributeName': 'id', 'KeyType': 'HASH'} # パーティションキー
],
AttributeDefinitions=[
{'AttributeName': 'id', 'AttributeType': 'S'} # 文字列型
],
ProvisionedThroughput={
'ReadCapacityUnits': 5,
'WriteCapacityUnits': 5
}
)
print("作成しました!")
3. スクリプトの実行
ターミナルで以下のコマンドを実行します:
python create_table.py
成功すれば以下のように表示されます:
作成しました!
確認コマンド("Users" テーブルが作成されている):
aws dynamodb list-tables --endpoint-url http://localhost:8000
レスポンス例:
{
"TableNames": [
"Users"
]
}
実際のターミナル画面
まとめ
ここまで読んでいただき、ありがとうございました!ローカルでDynamoDBの挙動を検証したい場合、DynamoDB Localがとても簡単で便利だと感じました!
今後の開発でも役立つので、手元に環境を整えておくと安心だと思いました...!



