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
下記のdockerイメージが、Amazonが公開している正式なDynamoDB Localになるので、これを使う。
DBなので裏でずっと起動しておいて欲しいので、
また、
DynamoDB Localは結構お利口さんである。
デフォルト状態では、本物のDynamoDBと同じように認証情報やリージョンによって、別々のDBファイルを作成する。
そのため、テーブルを作ったはずが他のアプリからはそのテーブルが見えない、といった事象が起こりうる。(各種情報を揃えれば良いだけだが)
というわけで開発段階では、面倒くささを減らすために-sharedDbを使ったほうが何かと便利だと思う。
DynamoDB Localでは、AWSにあるパブリックのDynamoDBとは異なり、GUIが存在しない。
もちろんコマンドやアプリからなら問題なく操作は可能だが、ちょっと面倒くさいよね・・・ということで、OSSでGUIを作ってくれている人がいるので、ありがたく使わせてもらう。
dynamodb-adminは、nodejsで動いている。
そのため、nodejsとパッケージ管理ツールのnpmをインストールしておく必要がある。
※プロンプトが戻ってこなくなるので、
Webブラウザからhttp://localhost:8000にアクセスして、下記のような画面が確認できればOK
あとは、テーブルを作ったり、アイテムを作ったりして、アプリ側からも取得などできれば問題なし。※別記事で書くと思う
まえがき
別記事で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※もしそもそもdockerをインストールできていないのであれば、こちらを参考にどうぞ
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 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と同じように認証情報やリージョンによって、別々の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あとは、テーブルを作ったり、アイテムを作ったりして、アプリ側からも取得などできれば問題なし。※別記事で書くと思う
コメント
コメントを投稿