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の指定

アップデート完了して初期画面

AWSAccess 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 にタブが増えている〜。

んで、これは何でしょうw

何が起きたかわからん。カンタンすぎるよ!!
と、EC2タブを開いてみる。インスタンス起動しているし〜。
どんだけーーー。
良心的にmicroインスタンスとなっております。

んじゃ、環境を変更してみよう。

ロードバランサのスティッキーセッションはデフォルトでOFFのようなのでONに設定

オートスケーリングはデフォルトでMax4になっているので1に設定w。

重要イベント発生時にAmazon SNS を使ってメール通知を設定

JVMのログ吐き出し先をAmazon S3 に設定とかすてきすぎる。

JDBC接続先のURL設定〜。これはTomcatのDataSource設定かなぁ。
Amazon RDSとかMySQLとかOracleのURL設定すればいいみたい。

んじゃ何かアプリをデプロイしてみますか。

Create New Applicationを選択

サブドメインの設定ができるのね。
ここで合わせて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インスタンスってのがよくわかります。