ネットワーク接続がない環境で、(AWS無料利用枠が適用されなくなっても)使用料を払うことなく、Amazon DynamoDB APIを使ったコードを書いてテストできたらなと思ったことはありませんか?
もしそうなら、新しいDynamoDBのローカルテストツールをきっと気にいるはずです! DynamoDB Localは、完全にDynamoDB APIをサポートするクライアントサイドのデータベースで、DynamoDB自体に任意のテーブルやデータ操作をすることはありません。通勤中の電車の中でも、海外出張の飛行機の中でも、休暇中のビーチでも、コードを書くことができます。
アプリケーションをデプロイする準備ができたら、単に実際のDynamoDBのエンドポイントに接続するようコードを書きかえるだけです。他に変更することはありません。
DynamoDB Localのインストールと実行
DynamoDBのローカル実行可能なJavaアーカイブ(JAR)ファイルとして入手可能です。Windows、Mac、Linuxシステム上で動作し、Java Runtime Environment(JRE)のバージョン7と互換性があります。これより古いバージョンのJavaでは動作しませんのでご注意ください。
DynamoDB LocalのJARファイルをダウンロードし、任意のディレクトリに配置し、そのディレクトリでコマンドプロンプトを開きます。そして次のコマンドでDynamoDB Localを起動します。
DynamoDB LocalはJARファイルと同じディレクトリにローカルデータベースを作成します。ファイル名は、MyAccessKeyId_Region.dbという形式になります。ここで、MyAccessKeyIdはDynamoDB Localにアクセスするのに使用するAWSアクセスキーで、Regionはターゲットリージョンです。
ローカルのエンドポイントを使うようにアプリケーションを設定します。DynamoDB Localはデフォルトでポート8000をリッスンします。ポートは起動時に--portオプションを指定することで変更することができます。デフォルトポートを使う場合は、ローカルエンドポイントはlocalhost:8000になります。
いくつかの注意事項
DynamoDB Localを使いはじめる際に頭に入れておくべきことがいくつかあります。
- DynamoDB Localはプロビジョンされたスループットの設定を無視します。CreateTableおよびUpdateTableを読んだ時に指定する値は何も影響を与えません。また、DynamoDB Localは読み込み、書き込み処理の絞り込みは行いません。
- AWSアクセスキーおよびリージョンとして渡した値はデータベースファイル名にのみ使用されます。
- AWSシークレットキーは無視されますが、設定する必要があります。
- DynamoDB Localは耐久性、可用性、SLAを持ちませんので、本番環境での使用はお薦めしません。
ローカルで行こう!
こちらからDynamoDB Localをダウンロードできます。是非お試しいただき、フィードバックをいただければと思います。
ドキュメントはこちらにあります。また、新しく用意したAmazon DynamoDB Best Practices, How Tos, and Toolsページも役に立つはずです。
PS - すっかり忘れていましたが、AWSのお客様によって書かれたDynamoDBのモックレイヤーも是非チェックしてみてください。 昨年公開した記事ですが、内容は数回更新されています。