Groovy/Grape(Grab)でAWS利用環境を迅速に整える(為のコードメモ)
最近AWSを触るようになって、APIを扱う上で幾つか言語が選べるのですが、その中でJavaAPIをGroovyで扱えるようにしとくと何かと便利なのかな〜と思い、利用ライブラリを諸々整えるのもG*システム(Grapes/Grab)を使えば環境整備も楽だよね、という事でその辺の実行手順をメモ。
まぁ、AWSに限った話でも無いですねw Grapes/Grabのメモと言った方が良いのかも。動作確認はAWS EC2上で行なっております。
$ ssh -i (key-pair-file).pem ec2-user@ec2-xx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com The authenticity of host 'ec2-xx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com (xx.xxx.xxx.xxx)' can't be established. RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'ec2-xx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com,xx.xxx.xxx.xxx' (RSA) to the list of known hosts. __| __|_ ) _| ( / Amazon Linux AMI ___|\___|___| https://aws.amazon.com/amazon-linux-ami/2013.03-release-notes/ $
$ java -version java version "1.6.0_24" OpenJDK Runtime Environment (IcedTea6 1.11.11) (amazon-61.1.11.11.53.amzn1-x86_64) OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode) $
$ sudo wget http://dist.groovy.codehaus.org/distributions/groovy-binary-2.1.3.zip $ sudo unzip groovy-binary-2.1.3.zip $ export GROOVY_HOME=/home/ec2-user/groovy-2.1.3 $ export PATH=$PATH:$GROOVY_HOME/bin $ groovy -version Groovy Version: 2.1.3 JVM: 1.6.0_24 Vendor: Sun Microsystems Inc. OS: Linux
- 実行コード。以前個人で色々試していた時はこの段階で上手いこと動いてくれなかったんですが、今日参加したYokohama.groovyで色々聞いて問題無く動かす事が出来ました。@Grapes/@Grabの記述だけじゃダメなんですねぇ...
@Grapes([ @Grab(group='com.amazonaws', module='aws-java-sdk', version='1.4.3'), @Grab(group='org.twitter4j', module='twitter4j-core', version='3.0.3') ]) import com.amazonaws.services.s3.AmazonS3Client; println 'hello!'
- @Grapes/@Grabコマンドで依存性解決されたライブラリは、利用ユーザフォルダの.groovy配下に格納されるようです。
$ pwd /home/ec2-user/.groovy/grapes $ ll 合計 28 drwxrwxr-x 3 ec2-user ec2-user 4096 5月 19 08:49 2013 com.amazonaws drwxrwxr-x 3 ec2-user ec2-user 4096 5月 19 08:50 2013 commons-codec drwxrwxr-x 3 ec2-user ec2-user 4096 5月 19 08:49 2013 commons-logging drwxrwxr-x 3 ec2-user ec2-user 4096 5月 19 08:49 2013 org.apache drwxrwxr-x 3 ec2-user ec2-user 4096 5月 19 08:49 2013 org.apache.commons drwxrwxr-x 7 ec2-user ec2-user 4096 5月 19 08:50 2013 org.apache.httpcomponents drwxrwxr-x 4 ec2-user ec2-user 4096 5月 19 08:50 2013 org.codehaus.jackson
- IntelliJ IDEAでも同様の記載で問題無く動きました。
(追記)IDEA上では、このままではGrapeで取り込んだ各種Jarファイルはまだ利用出来ません><; IDE上でのライブラリの追加が必要ですのでその手順を追記。
- @Grapes/@Grabの箇所にカーソルを当てると、豆電球みたいなのがホバー表示されます。ここで[Grab the Artifacts]を選択。
- すると、IDEAの方で自動的に各種ライブラリを取込み設定してくれます!これは楽ちん。
- これでちゃんと取り込んだライブラリも認識してくれるようになりました。
比較的早い、揃っているAWSのJavaAPIをGroovyで補完効かせて(by IDEA)ささっと作成し、Linux OS上で環境を迅速に作成(by EC2&Grape等を用いてライブラリ依存関係も1発で解決)しながらCUIベースで処理実行...みたいな流れがこれでやりやすくなりそうです。