Help us understand the problem. What is going on with this article?

ローカル(Docker)でDynamoDBの環境構築

概要

  • 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": []
}
mafakuti
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away