AWS Elastic Beanstalk を使う その3
Environmentのコンフィグ画面のContainerタブで、Environment Properties ってなんやねんっ!って思って調べました。結論から言いますとシステムプロパティを設定しているだけでした。
要は、DB接続先とかAWS接続先とか各種環境変数をBeanStalkのEnvironment Propertiesとして書いておけば、テスト用アプリ、本番用アプリ、テスト用DB、本番用DBなどの切り替えをソースの修正なしに画面のみで行える訳です。
実際にやってみましょう。これが設定した画面。文字列は適当。
勝手にDB接続してコネクションプールしてくれるとかは幻想でしたw。
んで、今度はBeanStalkに載せるアプリ側で値を取得してみましょう。
雛形アプリのソースを修正しました。
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ page import="java.util.*" %> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8"> <title>Hello AWS Web World!</title> <link rel="stylesheet" href="styles/styles.css" type="text/css" media="screen"> </head> <body> <div id="content" class="container"> <div class="section grid grid15 gridlast ec2"> <h2>System Properties:</h2> <ul> <% Properties props = System.getProperties(); %> <li><%= "AWS_ACCESS_KEY_ID : " + props.getProperty("AWS_ACCESS_KEY_ID") %></li> <li><%= "AWS_SECRET_KEY : " + props.getProperty("AWS_SECRET_KEY") %></li> <li><%= "JDBC_CONNECTION_STRING : " + props.getProperty("JDBC_CONNECTION_STRING") %></li> <li><%= "PARAM1 : " + props.getProperty("PARAM1") %></li> <li><%= "PARAM2 : " + props.getProperty("PARAM2") %></li> <li><%= "PARAM3 : " + props.getProperty("PARAM3") %></li> <li><%= "PARAM4 : " + props.getProperty("PARAM4") %></li> <li><%= "PARAM5 : " + props.getProperty("PARAM5") %></li> </ul> </div> </div> </body> </html>
どうやって値を取るかどこにも載っていなかったのですが、
勘でどうにかなりました。。。これドキュメント載せるべきかと。
ではではー。
AWS Elastic Beanstalk を使う その2
続きましてオリジナルアプリをEclipseからアップするテスト。
Classic Eclipse にプラグイン入れて動かそうと思ったけど、
動きが微妙なので、素直にWeb Tools Platform All in Oneをダウンロード
んで、
AWS Toolkit for Eclipse をダウンロードぉ〜。
Eclipse 3.6 をインストールしてUpdateSiteの指定
AWSのAccess Key と Secret Key を入力します。
プロジェクトの新規作成から AWS Java Web Projectを選択
雛形プロジェクトを選択することもできる。
Basic Java Web Application はシンプルはJSPアプリで、
Travel LogはS3,SimpleDB,SNSを使っているみたい。
Run on Server で ローカルのWebアプリをBeanstalkにデプロイ
そしてブラウザから動作確認。完了。はえー。
AWS Elastic Beanstalk を使う その1
最初に身元確認の電話w。
AWS Management Console にタブが増えている〜。
何が起きたかわからん。カンタンすぎるよ!!
と、EC2タブを開いてみる。インスタンス起動しているし〜。
どんだけーーー。
良心的にmicroインスタンスとなっております。
ロードバランサのスティッキーセッションはデフォルトでOFFのようなのでONに設定
オートスケーリングはデフォルトでMax4になっているので1に設定w。
重要イベント発生時にAmazon SNS を使ってメール通知を設定
JVMのログ吐き出し先をAmazon S3 に設定とかすてきすぎる。
JDBC接続先のURL設定〜。これはTomcatのDataSource設定かなぁ。
Amazon RDSとかMySQLとかOracleのURL設定すればいいみたい。
んじゃ何かアプリをデプロイしてみますか。
サブドメインの設定ができるのね。
ここで合わせてwarファイルもアップロードできます。
とりあえずAdobe BlazeDSのsamples.warをアップしてみる。
さっそくURLにアクセス。
http://classmethod.elasticbeanstalk.com/
(そのうち消えるURLですw)
さくっとBlazeDS表示されましたねw
管理画面みて何となく分かったのですが、
1つのEnvironmentの中に複数のApplicationを置くような感じですかね?
いや、玉川さんのブログを見ると、1つのApplicationの中に複数のEnvironmentがあるんですねぇ。
Applicationごとにサブドメイン設定されたURLが割り当てられています。
Applicationを削除すると、EC2の管理コンソールでインスタンスが消えますので、1Applicationで最低1インスタンスってのがよくわかります。