ラベル Beanstalk の投稿を表示しています。 すべての投稿を表示
ラベル Beanstalk の投稿を表示しています。 すべての投稿を表示

2012年2月4日土曜日

AWSのElastic Beanstalkを使ってみる

前回のEclipseに「AWS Toolkit for Eclipse」を入れてみるに続き、第4弾は「Elastic Beanstalk」を使ってみようと思います。

Elastic Beanstalkとは、簡単に言えば、Webアプリの実行環境を構築・管理するPaaSです。大雑把ですが、以下のような特徴があります。

  • コンテナは、Tomcat6 と Tomcat7
    • つまりJavaアプリしか動かせない。いずれはRuby on Railsにも対応するそう。
  • ロードバランサー機能
  • オートスケーリング機能
  • Beanstalk自身の機能は無料で使用可能
    • それ以外のEC2インスタンス、S3などが通常のAWS同様に課金対象


で、今回はサンプルアプリを作って、Beanstalkにデプロイするまでの手順を説明します。前提としては、前回話したEclipseにAWS Toolkit for Eclipseをインストールしていることです。


1. Eclipse起動

2. X509設定
Eclipseのメニューにある「ウィンドウ」→「AWS Tooklit」とクリックします。表示された「AWS Toolkit Preferences」の真ん中のあたりに「Optional configuration」をクリックすると、新たに入力項目が3つ表れます。これらを埋めるためには、「Manage your AWS X.509 certificate」というクリックして取得します。

まず、「Account Number」については、クリックした先の一番下の「アカウント識別子」というのがありますので、それを入力します。

それ以外の部分については、クリックした先の上のほうにある「アクセス証明書」の「X.509証明書」をクリックします。「新しい証明書を作成する」をクリックすると、X509証明書と秘密鍵の2つが作成されます。その2ファイルをダウンロードします。


Eclipseに戻り、「証明書ファイル」には"cert-"から始まるファイルを指定し、「Private Key File」には"pk-"から始まるファイルを指定してください。その後、「適用」ボタンをクリックして完了です。

3. 領域(リージョン)設定
Elastic Beanstalkは、言い換えればWebアプリ実行環境を備えたEC2インスタンスなのですが、今はなぜか「US East(Virginia)」でしか動かせないので、あらかじめ指定しておきます。他の場所を指定しちゃうアプリデプロイができません。※クラウドなのになんで場所を意識しないといけないんだが(´・ω・`)
「US East(Virginia)」を選んだ後、「適用」をクリックし、「OK」をクリックして設定ダイアログを閉じます。

4. Webアプリ作成
Beanstalkにデプロイするアプリを作ります。まずは、下図のように「New AWS Java Web Projerct...」をクリックします。

プロジェクト作成ダイアログが表示されます。プロジェクト名はお任せします。「Start from」のところではシンプルなアプリ又はAWS提供サンプル(Travel Log)が選べます。とりあえずは、「Basic Java Web Application」にしておきます。
その後、「完了」をクリックしてダイアログを閉じます。すると、Eclipseのエクスプローラ上にプロジェクトが現れます。

5. Beanstalkにデプロイ
それではこのサンプルをさっそくデプロイします(「New AWS Java Web Project」で作ったプロジェクトは特に何もしなくてもそのままデプロイできます)。プロジェクトを右クリックし、「Amazon Web サービス」→「Deploy to AWS Elastic Beanstalk...」をクリックします。
クリックすると、「サーバーで実行」というダイアログが表示されます。「サーバーのタイプを選択」のところでは「Amazon Web サービス」に表示されている「Tomcat 6」か「Tomcat 7」をクリックします。どちらを使うかは要件によって当然異なりますが、今回はとりあえず「Tomcat 7」を選びました。


「次へ」をクリックすると、「Configure Application and Environment」というダイアログが表示されます。

ここでいうApplicationとは、EnvironmentとVersionを内包する空間を指し、デプロイするアプリのことではないので注意です。Elastic Beanstalkでは、Applicationという空間に、複数のEnvironmentとVersionがあり、いわゆるアプリはEnvironmentという場所にデプロイされます。この辺りの説明はAWS Elastic Beanstalk 詳細 -ほぼ週刊AWSマイスターシリーズ第9回-が詳しいです。

なので、ここでは、ApplicationとEnvironmentを新規定義する、ということになります。もちろん、一度作ったApplicationを利用することも可能です。今回は、新規定義なので適当な名前をつけて作ります。

「次へ」をクリックすると、「拡張構成」ダイアログになります。今回は特に何もしない(というか、ここでできることがわからないので無視する)ので、「完了」をクリックしてダイアログを閉じます。

「完了」をクリックすると、「バージョン入力」ダイアログが表示されます。自動で生成された値が入っていますが、自分で決めた値を入力することも出来ます。とりあえず、僕は、vyyyymmddaaaaの形式(yyyyは西暦、mmは月、dd日、aaaaはビルド番号(初回なのでとりあえず0001))にしました。

「OK」をクリックするとデプロイ作業が始まります。ApplicationとEnvironmentを新規定義したので裏ではそれの作成から始まります。ちなみに、「OK」クリック直後の「サーバー」ビューでは以下のように表示されます。

しばらく待つと、デプロイが完了し、Eclipseでは下図のように表示されます。

ちなみに、AWS Management Consoleではどうなっているかと言うと、下図のようになっています。行き方はAWS Management Consoleに行き、上部のメニューにある「AWS Elastic Beanstalk」をクリックすればよいです。

"SampleApp"という名のApplicationがあり、そのEnvironmentの1つである"SampleEnv"が動いている、ということになります。"SampleEnv"にあるURLをクリックするとデプロイしたアプリをブラウザから開けます。

今回はここまでです。

参考サイト:
@IT AWSの自由自在なPaaS「Elastic Beanstalk」とは
悪戦苦闘 Tech memo AWS Elastic BeanstalkでDeployのときのエラー
AWS Elastic Beanstalk 詳細 -ほぼ週刊AWSマイスターシリーズ第9回-