2013年10月23日

DynamoDB Localを触ってみた

【AWS発表】 デスクトップ開発を可能にする DynamoDB Local
というのが発表されています。

簡単に言うと「DynamoDBの開発をDynamoDBにアクセスしないでできるぜ!」という類のものになります。
AWSは重量課金なので、意味なくアクセスするとお金かかりますものね。

動かし方は簡単。ダウンロードして実行するだけ。JRE 7以上である必要があります。
c:\dynamodb_local_2013-09-12>java -version
java version "1.7.0_25"
Java(TM) SE Runtime Environment (build 1.7.0_25-b16)
Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode)

c:\dynamodb_local_2013-09-12>java -Djava.library.path=. -jar DynamoDBLocal.jar
2013-10-23 02:33:16.574:INFO:oejs.Server:jetty-8.y.z-SNAPSHOT
2013-10-23 02:33:16.825:INFO:oejs.AbstractConnector:Started SelectChannelConnector@0.0.0.0:8000

立ち上げた後はEndPointを「http://localhost:8000」にすることで、DynamoDB Localへアクセス出来ます。

注意点としては、
・DynamoDB LocalはSSLに対応していないので、EndPointの設定は「localhost:8000」ではなく「http://localhost:8000」とすること
・JavaSDKの場合、Regionはus-east-1となってしまうこと
でしょうか。
ClientConfiguration clientConfiguration = new ClientConfiguration().withMaxErrorRetry(20);
AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey);

AmazonDynamoDBClient ddb = new AmazonDynamoDBClient(credentials, clientConfiguration);
ddb.setRegion("ap-northeast-1");
ddb.setEndpoint("http://localhost:8000");

Regionがus-east-1となるのはAwsHostNameUtilsでEndPointが".amazonaws.com"で終わっていない場合に"us-east-1"としているからかもしれません。
どうしても"us-east-1"が嫌で嫌でしょうがない場合はhostsに".amazonaws.com"で終わるテキトウなリージョンを登録してみると変更できるかもしれません。
(存在するリージョンを設定してしまうと接続できなくなる恐れがありますが)

DynamoDB Localのディレクトリにあるthird party licenseを見るとjettyやsqliteで動作しているようです。
簡単なテストアプリだけならDynamoDB Localで十分作れそうですね。

ホンモノのDynamoDBとの違いはドキュメントにかかれておりますが、
・スループットの設定を無視する
・読み込みおよび書き込み量の制限を行わない
・キャパシティを消費しない
などなど、DynamoDBをマジで使おうとする人には注意すべき点があります。
(周回遅れエンジニアはDynamoDBをマジで使った事はありません。。。。)

ともあれ、これを使って「通勤中の電車の中でも、海外出張の飛行機の中でも、休暇中のビーチでも、コードを書くことができます」ね!

0 コメント:

コメントを投稿