先日、DynamoDB Localを使って、ローカルでDynamoDBのテストができる環境を構築しました。
DynamoDB Localとaws-cliとExec Maven Pluginで、DynamoDBのローカル開発環境を構築!
これでDynamoDBを利用する処理のテストが書けるようになりました。しかし、Jenkinsサーバにビルドさせようとしたら問題が発生しました。
Amazon EC2上のJenkinsでテストしたい
JenkinsサーバはAmazon EC2上に構築されていて、チームメンバーがgitにコミットするたびにビルドが実行されるようになっています。当然DynamoDBのテストも実行されるのですが、このEC2インスタンスにDynamoDB Localがインストールされていませんでした。
ローカル開発環境の設定は、Homebrewの恩恵で一瞬でしたが、EC2にインストールする場合は自分で起動スクリプト書かないといけません。
と思ったら、既に書かれている方がいました。しかも、インストーラ付き!
tomgoodsun/aws_dynamodb_local
ありがとうございます。
インストールスクリプトでDynamoDB Localをインストール
検証用のインスタンスを起動して、インストールスクリプトを実行してみたら、DynamoDB Localの解凍時のファイル名が違うのかスクリプト内のパスと合わなくなっていました。
環境依存かもしれないのですが、少しだけ書き換えて使うことにしました。
katty0324/aws_dynamodb_local
まずgitからcloneしてきて、installerディレクトリに移動しておきます。
git clone https://github.com/katty0324/aws_dynamodb_local.git
cd aws_dynamodb_local/installer/
インストールスクリプトを実行すれば、DynamoDB Localのダウンロードと配置が実行されます。
$ sudo bash ./install.sh
Downloading latest AWS DynamoDB Local...
# ...(略)...
Installing AWS DynamoDB Local has done.
You can start with the following commands:
Start:
/etc/init.d/aws_dynamodb_local start
Stop:
/etc/init.d/aws_dynamodb_local stop
For more information about DynamoDB you can get from the following page.
http://aws.amazon.com/en/dynamodb/
Thanks!
インストールができたようです!
起動スクリプトから起動する。
あとは起動スクリプトで起動するだけなんですが、起動スクリプト内のJavaのパスが通らなかったので、ここはファイルを書き換えてしまいました。
sudo sed -ie 's/java=\/usr\/java\/default/java=\/usr\/lib\/jvm\/java/' /etc/init.d/aws_dynamodb_local
これで起動します!
sudo /etc/init.d/aws_dynamodb_local start
これでDynamoDB Localが起動しました。動いています。
$ ps aux | grep dynamodb | grep -v grep
root 1445 0.0 1.1 2404732 44228 ? Sl Jul05 8:36 /usr/lib/jvm/java/bin/java -Djava.library.path=/usr/bin/aws_dynamodb_local -jar /usr/bin/aws_dynamodb_local/DynamoDBLocal.jar
起動設定もできています。
$ chkconfig | grep dynamodb
aws_dynamodb_local 0:off 1:off 2:off 3:on 4:off 5:on 6:off
これでEC2上でもDynamoDBのテストができるようになりました。