DynamoDB Localの公式Docker Imageが公開されました。

AWS運用自動化サービス「Cloud Automator」

先日、DynamoDBを利用したアプリケーションの開発やテストに便利なDynamoDB Localの公式イメージが公開されたとのアナウンスがありました。

これまでは開発環境にJavaをインストールし、jarファイルをダウンロードしてからDynamoDBLocalを実行する必要があり利用するのに少し手間がかかりました。

今回、公式のDockerImageが公開されたことでよりdockerが利用できる環境であればのより手軽にDynamoDB Localを利用できるようになりました。

実際に使ってみる

今回はDocker for Macで実行しています。

DockerHubのページでは以下の実行コマンドが記載されています。

このコマンドを実行することで公式のdockerhubからイメージがダウンロードされコンテナが実行されます。
ただし、このコマンドだとフォアグラウンドで動くのでターミナルを閉じるとコンテナも終了してしまいます。

そこで、-dオプションを追加した以下のコマンドで実行するとバックグラウンドで実行されます。
これでターミナルを閉じても利用できますね。

AWS CLIでためしてみる

AWS CLIで利用する場合はエンドポイントURLのオプションを利用してエンドポイントを指定することで利用可能です。

例えばテーブルを作成する場合は以下のようなコマンドを実行するとLaunchListと言うテーブルがDynamoDBLocal内に作成されます。

テーブルのリストを確認する場合には以下のような形になります。

SDKで実行するには

AWS CLIでは無く各言語のSDKを利用してDynamDBLocalを扱う場合でもAWS CLI同様エンドポイントURLを指定するだけで利用できます。

例えばpythonのSDKであるboto3で利用するには以下のようなコードになります。

もしくは

Rubyでも同様に以下のように指定することで利用できます。

SDKを利用している場合だとあとのテーブルの作成やデータのGET、PUTなどのコードは変更無く利用することができます。

実際にどんなコマンドが実行されてるの?

docker コンテナ内ではどんなコマンドでDynamoDBLocalが実行されているのでしょうか。

確認するためにdocker ps に --no-trunc オプションをつけて省略させずに各項目を表示させます。
手元では以下のような表示になりました

これにより java -jar DynamoDBLocal.jar -inMemory が実行されていることがわかります。

-inMemory オプションで実行されているのでテーブルデータなどはDiskには書き込まれずメモリ上のみに存在する形になります。

そのためコンテナを停止するとDynamoDBLocalに格納されたデータは消えてしまいます。
DynamDBLocalはあくまで開発用のツールであるためこのようなコマンドになってると思われます。

まとめ

公式にDocker Image化されたことで利用開始の手間が大幅に少なくなりDynamoDB Localより使いやすくなりました。
これをうまく利用し、コードの動作確認を手元で行えることでDynamoDBを利用するアプリケーションの開発を加速させていきたいですね。

AWS運用自動化サービス「Cloud Automator」