🏞️
DynamoDB のローカル環境を Docker で構築してみる
Amazon DynamoDB
を利用した API
を開発しています。
AWS
上にテストデータを入れた dev table を作成してそのテーブルを呼び出すようにしていました。
無料枠に収まっているとはいえキャパシティを消費してしまっていることからもう少し遊びのあるサンドボックス的な環境が欲しくなったので Docker
での構築を試みました。
DynamoDB local とは
そのままローカルで利用することができる DynamoDB
です。
ただまるっきり Web サービスの DynamoDB
と同じというわけではなく、テーブル名の大文字小文字をローカルでは区別しなかったり、もろもろの速度の部分や制限などの部分で若干異なる部分もあるようです。
docker-compose.yml の構成
今回は DynamoDB Local
と管理画面である dynamodb-admin
を構築します。
version: '3'
services:
dynamodb:
image: amazon/dynamodb-local
container_name: dynamodb-local-example
command: -jar DynamoDBLocal.jar -sharedDb -dbPath . -optimizeDbBeforeStartup
volumes:
- dynamodb:/var/lib/dynamodblocal
ports:
- 8000:8000
dynamodb-admin:
image: aaronshaf/dynamodb-admin
tty: true
ports:
- "8001:8001"
depends_on:
- dynamodb
environment:
DYNAMO_ENDPOINT: http://dynamodb-local-example:8000
volumes:
dynamodb:
driver: local
bin:
driver: local
導入
構築
docker compose build --no-cache
docker compose up -d
確認
dynamodb-admin
の管理画面にとんでみます。
http://localhost:8001
試しにテーブルを作成してみる
container_name と DYNAMODB_ENDPOINT をきちんと指定する
個人的にはまった個所です。
depends_on
だけの指定でいいと思いきや DYNAMODB_ENDPOINT
の設定も必要なようです。設定しないと dynamodb-admin
から接続できないです。
今後
dynamodb-admin
は、データや、テーブルのメタ情報を生データ形式でみられるので便利ですが、CSV インポートなどをしたい場合は NoSQL Workbench
を利用する必要があります。
その他、API サーバーや awscli
との連携、スクリプトによるテーブル生成などもやりたいと思います。
参考
Discussion