1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-04-05

概要

  • 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": []
}
1
2
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
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?