概要
- DynamoDBをローカル環境でテストするためのDockerを用いたDynamoDB localについて解説します
- AWS CLIの設定などはすでに済んでいる前提なので、もしまだの場合ドキュメントを見てください
- Dockerの基礎的な知識とDockerの設定などはすでに済んでいる前提なので、もしまだの場合ドキュメントを見てください
- 対象読者はサクッとDynamoDBをローカルで試してみたいと考えている方です
- この記事はdynamodb-localを参考にしています
DynamoDB localとは
DynamoDB localは開発者が自身の開発環境で動作しているDynamoDBのバージョンを用いて開発・テストできるように作成されダウンロードが可能にされたもの
DynamoDB localの利点
- DynamoDB localの新しいDockerイメージでは、全てのDynamoDB localの依存関係とそれに必要な構成要素を組み込んだDockerイメージを用いることで、DynamoDB localを素早く開始することができる
- DynamoDB localの新しいDockerイメージでは、コンテナ化されたビルドに継続的な統合テストの一部としてDynamoD localを含めることができる
- DynamoDB localを使うためにインターネット接続は不要で、DynamoDB localは既存のDynamoDB APIで呼び出すことが出来る
- DynamoDB localではプロビジョニングされたスループット、データストレージ、データ転送のコストがない
DynamoDB localのイメージをプル
$ docker pull amazon/dynamodb-local
立ち上げ
ただ立ち上げるだけ
$ docker run -p 8000:8000 amazon/dynamodb-local
- ローカルの8000番ポートで立ち上げるだけ
-
Ctr+C
で止めることが出来る - 止めたあとは
$ docker rm #{CONTAINER_NAME}
で削除-
$ docker ps -a
で起動&停止中のコンテナを確認できる
-
- コンテナを消すとデータは消える
-
--rm
オプションをつけると、Ctr+C
で停止すると削除する必要なく自動で消える -
-d
オプションをつけるとバックグランドで実行してくれる- この場合、停止するために
$ docker stop #{CONTAINER_NAME}
を実行する必要がある
- この場合、停止するために
ローカルにデータをマウント(ボリューム)して立ち上げ
$ docker run -p 8000:8000 -v #{LOCAL_DYRECTORY}:/home/dynamodblocal/data amazon/dynamodb-local -jar DynamoDBLocal.jar -dbPath /home/dynamodblocal/data
- #{LOCAL_DYRECTORY}にはdb情報を保存しておきたいディレクトリ名を指定
-
-d
オプションと--rm
オプションについては上記同様適宜 -
--rm
オプションをつけなければ、停止(docker stop
)させておきさえすれば、いつでも呼び出し(docker start
)できる - #{LOCAL_DYRECTORY}ディレクトリに
#{ACCESS_KEY}_#{REGION}.db
ファイルが作成されたことを確認する - コンテナ名(#{CONTAINER_NAME})を命名したいときは
--name
オプションを利用して--name #{CONTAINER_NAME}
を追加- こうしておけばいちいち
$ docker ps -a
でコンテナ名を調べなくても$ docker stop #{CONTAINER_NAME}
や$ docker start #{CONTAINER_NAME}
を実行できる
- こうしておけばいちいち
確認
$ aws dynamodb list-tables --endpoint-url http://localhost:8000
- 上記コマンド(AWS CLI)で以下のようなテーブル情報が出てくれば接続ができている
{
"TableNames": []
}