DynamoDB Localの導入

DynamoDB Localの導入:


まえがき

別記事でaws-sam-initを導入して、サーバーレスアプリケーションの開発を便利に進めることができるようになったが、やはりサーバーレスならDBとしてはDynamoDBが相性が良く、組み合わせて使いたい。

とはいえ、RDBのOracleDBやPostgreSQLと違って、DynamoDBってAWS固有のプロダクトだからローカルで試せないよね・・・どうせ安いし本物のDynamoDB使っても良いけど、なんだかなぁ・・・開発だし・・・

はい。天下のAWSさんはローカルで動かせるDynamoDBちゃんを公開してくれています。是非、使わせてもらいましょう。


前提

下記の公式の手順をベースに、Dockerを使ってDynamoDB Localをインストール/実行させるまでの手順を示す。
DynamoDB ローカル (ダウンロード可能バージョン) のセットアップ

また、DynamoDB Localの簡単な管理のためにGUIも導入する。

本手順の実行環境: Ubuntu 18.04 LTS


DynamoDB Localのdockerイメージを取得

下記のdockerイメージが、Amazonが公開している正式なDynamoDB Localになるので、これを使う。

amazon/dynamodb-local

DynamoDB local

DynamoDB local is a downloadable version of DynamoDB that enables developers to develop and test applications > using a version of DynamoDB running in your own development environment.
※もしそもそもdockerをインストールできていないのであれば、こちらを参考にどうぞ

$ docker pull amazon/dynamodb-local 
$ docker images 
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE 
lambci/lambda           python3.6           4a6785b2780d        5 weeks ago         1.07GB 
amazon/dynamodb-local   latest              26ea09a4a680        4 months ago        446MB 


DynamoDB Localの起動

DBなので裏でずっと起動しておいて欲しいので、-dを使ってバックグラウンド実行させる。

また、-sharedDbも指定して、どこからつなげようと単一のDBファイルが使われるようにする。

$ docker run -d -p 8000:8000 amazon/dynamodb-local -jar DynamoDBLocal.jar -inMemory -sharedDb 
$ docker ps --no-trunc 
CONTAINER ID                                                       IMAGE                   COMMAND                                             CREATED              STATUS              PORTS                    NAMES 
1fc4f480133f130913066fac050e718ceab3a52756496f145b5132dc44c50326   amazon/dynamodb-local   "java -jar DynamoDBLocal.jar -inMemory -sharedDb"   About a minute ago   Up About a minute   0.0.0.0:8000->8000/tcp   suspicious_easley 
DynamoDB Localは結構お利口さんである。

デフォルト状態では、本物のDynamoDBと同じように認証情報やリージョンによって、別々のDBファイルを作成する。

そのため、テーブルを作ったはずが他のアプリからはそのテーブルが見えない、といった事象が起こりうる。(各種情報を揃えれば良いだけだが)

というわけで開発段階では、面倒くささを減らすために-sharedDbを使ったほうが何かと便利だと思う。

-sharedDb — -sharedDb を指定した場合、DynamoDB では、認証情報やリージョンごとに別のファイルを使用せずに、単一のデータベースファイルを使用します。
DynamoDB 使用に関する注意事項:コマンドラインオプション
また、使い終わってコンテナを止めたいときは、docker stop [container_id] を実行


GUIの導入

DynamoDB Localでは、AWSにあるパブリックのDynamoDBとは異なり、GUIが存在しない。

もちろんコマンドやアプリからなら問題なく操作は可能だが、ちょっと面倒くさいよね・・・ということで、OSSでGUIを作ってくれている人がいるので、ありがたく使わせてもらう。

dynamodb-admin
GUI for DynamoDB Local or dynalite.


準備


nodejsとnpmの導入

dynamodb-adminは、nodejsで動いている。

そのため、nodejsとパッケージ管理ツールのnpmをインストールしておく必要がある。

$ apt update 
$ apt install nodejs npm 
$ nodejs -v 
v8.10.0 
$ npm -v 
3.5.2 


dynamodb-adminのインストール

$ npm install dynamodb-admin -g 
$ export DYNAMO_ENDPOINT=http://localhost:8000 


実行

$ dynamodb-admin 
※プロンプトが戻ってこなくなるので、&を付けてバックグラウンド実行させるか、screenを使って別セッションで実行させるような形のほうが良いと思う


確認

Webブラウザからhttp://localhost:8000にアクセスして、下記のような画面が確認できればOK

あとは、テーブルを作ったり、アイテムを作ったりして、アプリ側からも取得などできれば問題なし。※別記事で書くと思う



2019-01-16-14-51-31.png


コメント

このブログの人気の投稿

投稿時間:2021-06-17 22:08:45 RSSフィード2021-06-17 22:00 分まとめ(2089件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)