1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ローカル開発環境:boto3 × DynamoDB Localでテーブル作成まで試してみた記録

Posted at

はじめに

この記事では、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:ホスト → コンテナのポート転送

起動後の画面

Screenshot 2025-05-25 at 10.51.16.png

DynamoDB Local が正しく起動しているか確認するために実行した docker ps コマンドの出力ログです。

Screenshot 2025-05-25 at 10.55.04.png

データ永続化付き(再起動しても保持)

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

※ すでにインストールされている場合はこのステップは不要です。

こんな感じで問題なくインストールできました

Screenshot 2025-05-25 at 12.06.13.png

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"
    ]
}

実際のターミナル画面

Screenshot 2025-05-25 at 11.29.51.png

まとめ

ここまで読んでいただき、ありがとうございました!ローカルでDynamoDBの挙動を検証したい場合、DynamoDB Localがとても簡単で便利だと感じました!

今後の開発でも役立つので、手元に環境を整えておくと安心だと思いました...!

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?