Playframework1.2.5 x AWS SDK for Java導入手順メモ
設定って言うほど大した事はしてないですが、フレームワーク上でAWSを利用する際の環境構築手順をメモとして残しておこうかと。対象の環境構成は以下の通り。
Java SDK: 1.7 Playframework: 1.2.5 AWS SDK: 1.4.6 (2013.06.16時点での最新) IDE: IntelliJ IDEA 12(Ultimate Edition)
- まずはJava導入済である事を確認。
$ java -version java version "1.7.0_11" Java(TM) SE Runtime Environment (build 1.7.0_11-b21) Java HotSpot(TM) 64-Bit Server VM (build 23.6-b04, mixed mode) $
$ wget http://downloads.typesafe.com/releases/play-1.2.5.zip $ unzip play-1.2.5.zip $ vi .bash_profile --------------------- PLAY_HOME=/Applications/play-1.2.5 export PLAY_HOME export PATH=$PATH:$PLAY_HOME --------------------- $ source .bash_profile
- Playのバージョンを確認。
$ play version ~ _ _ ~ _ __ | | __ _ _ _| | ~ | '_ \| |/ _' | || |_| ~ | __/|_|\____|\__ (_) ~ |_| |__/ ~ ~ play! 1.2.5, http://www.playframework.org ~ 1.2.5 $
- プロジェクトの新規作成。
$ play new awslabo ~ _ _ ~ _ __ | | __ _ _ _| | ~ | '_ \| |/ _' | || |_| ~ | __/|_|\____|\__ (_) ~ |_| |__/ ~ ~ play! 1.2.5, http://www.playframework.org ~ ~ The new application will be created in /Users/shinyaa31/IdeaProjects/awslabo ~ What is the application name? [awslabo] ~ ~ OK, the application is created. ~ Start it with : play run awslabo ~ Have fun! ~ $
- AWS絡みのライブラリを取り込む為、dependencies.ymlに設定を追加。Java製のAWS SDKの最新バージョンは現時点(2013.06.16)で1.4.6。
- 以下のように『- [Groupid] -> [Artifactid] [Latest Version]』の形で記載。
$ vi awslabo/conf/dependencies.yml # Application dependencies require: - play - com.amazonaws -> aws-java-sdk 1.4.6
- 依存性解決のコマンド実行。
$ play deps awslabo/ ~ _ _ ~ _ __ | | __ _ _ _| | ~ | '_ \| |/ _' | || |_| ~ | __/|_|\____|\__ (_) ~ |_| |__/ ~ ~ play! 1.2.5, http://www.playframework.org ~ ~ Resolving dependencies using /Users/shinyaa31/IdeaProjects/awslabo/conf/dependencies.yml, ~ ~ com.amazonaws->aws-java-sdk 1.4.6 (from mavenCentral) ~ org.apache.httpcomponents->httpclient 4.1 (from mavenCentral) ~ org.apache.httpcomponents->httpcore 4.1 (from mavenCentral) ~ org.codehaus.jackson->jackson-core-asl 1.8.9 (from mavenCentral) ~ org.codehaus.jackson->jackson-mapper-asl 1.8.9 (from mavenCentral) ~ org.freemarker->freemarker 2.3.9 (from mavenCentral) ~ org.springframework->spring-beans 3.0.7.RELEASE (from mavenCentral) ~ org.springframework->spring-core 3.0.7.RELEASE (from mavenCentral) ~ org.springframework->spring-asm 3.0.7.RELEASE (from mavenCentral) ~ org.springframework->spring-context 3.0.7.RELEASE (from mavenCentral) ~ org.springframework->spring-aop 3.0.7.RELEASE (from mavenCentral) ~ aopalliance->aopalliance 1.0 (from mavenCentral) ~ org.springframework->spring-expression 3.0.7.RELEASE (from mavenCentral) ~ org.springframework->spring-test 3.0.7.RELEASE (from mavenCentral) ~ org.aspectj->aspectjrt 1.6.0 (from mavenCentral) ~ stax->stax-api 1.0.1 (from mavenCentral) ~ stax->stax 1.2.0 (from mavenCentral) ~ ~ Downloading required dependencies, ~ ~ downloaded http://repo1.maven.org/maven2/com/amazonaws/aws-java-sdk/1.4.6/aws-java-sdk-1.4.6.jar ~ downloaded http://repo1.maven.org/maven2/com/amazonaws/aws-java-sdk/1.4.6/aws-java-sdk-1.4.6-sources.jar ~ ~ Some dependencies have been evicted, ~ ~ commons-codec 1.3 is overriden by commons-codec 1.4 ~ mail 1.4 is overriden by mail 1.4.3 ~ ~ Installing resolved dependencies, ~ ~ lib/aws-java-sdk-1.4.6.jar ~ lib/httpclient-4.1.jar ~ lib/jackson-core-asl-1.8.9.jar ~ lib/jackson-mapper-asl-1.8.9.jar ~ lib/httpcore-4.1.jar ~ lib/freemarker-2.3.9.jar ~ lib/spring-beans-3.0.7.RELEASE.jar ~ lib/spring-core-3.0.7.RELEASE.jar ~ lib/spring-context-3.0.7.RELEASE.jar ~ lib/spring-test-3.0.7.RELEASE.jar ~ lib/aspectjrt-1.6.0.jar ~ lib/stax-api-1.0.1.jar ~ lib/stax-1.2.0.jar ~ lib/spring-asm-3.0.7.RELEASE.jar ~ lib/spring-aop-3.0.7.RELEASE.jar ~ lib/spring-expression-3.0.7.RELEASE.jar ~ lib/aopalliance-1.0.jar ~ ~ Done! ~ $
$ play idea awslabo/ ~ _ _ ~ _ __ | | __ _ _ _| | ~ | '_ \| |/ _' | || |_| ~ | __/|_|\____|\__ (_) ~ |_| |__/ ~ ~ play! 1.2.5, http://www.playframework.org ~ ~ OK, the application is ready for Intellij Idea ~ Use File, Open Project... to open "awslabo.ipr" ~ $
- IDEAで対象プロジェクトのiprファイルを選択。(※[File]→[Open])
- プロジェクトの設定変更(※[File]→[Project Structure...])。SDKの設定、Compiler Output先の設定(※プロジェクト直下のout/フォルダと指定)等が必要となる。
- デバック実行等の設定を追加。以下のエントリを参考に。
- この時点でそのまま実行させると、『パッケージmodelsが存在しません』と怒られてしまう。パッケージ自体はあるのだが、中にクラスファイルが存在していないのが原因らしい。ひとまず適当なクラスを作成すれば起動出来るようになる。
- AWS SDKを利用する際の認証ファイル及び必要な値の設定。この辺りのクラスファイルを使えば、『クラスパスに所定のファイル置いておけば自動で読み込むよ』という感じだったのだが、Playframeworkのプロジェクト(構成)では何か上手いこと読み込んでくれなかった(何か設定必要だったのかな?)
- なので、Playframeworkの仕組みを普通に使うことにします。 conf/application.conf ファイルに設定を追記。
# AWS SDK Settings. aws.access.key=xxxxxxxxxxxxxxxxxxxx aws.secret.key=yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy aws.default.region=ap-northeast-1
- 以下の形で読み込み。
System.out.println("AWS_ACCESS_KEY:" + Play.configuration.getProperty("aws.access.key")); System.out.println("AWS_SECRET_KEY:" + Play.configuration.getProperty("aws.secret.key")); System.out.println("AWS_DEF_REGION:" + Play.configuration.getProperty("aws.default.region"));
Play2系やもうちょっと込み入った構成も適宜追記して行きたいところ。