AWS Elastic Beanstalkを使ってみた

AWS運用自動化サービス「Cloud Automator」
この記事は1年以上前に書かれたものです。
内容が古い可能性がありますのでご注意ください。
CSチームの馬場です。
使ってみたシリーズ、PHP Fogに続き第二弾は『AWS Elastic Beanstalk』です。
AWS Elastic Beanstalkは、Amazon Web Servicesの一つとして提供されているクラウド上のアプリケーションを簡単に管理できる機能です。ロードバランサーとオートスケーリング機能も標準装備となっていて、これらの機能は自動で提供されます。
サービスの追加はAWS Management ConsoleからAWS Elastic Beanstalkを選択して追加するだけで、機能の利用自体には料金が発生しないため手軽に利用できます。課金は起動したEC2インスタンスやその他サービスの利用に応じておこなわれます。
2012年3月からPHPもサポートが開始され、2012年4月には東京リージョンでもAWS Elastic Beanstalkが利用可能となりました。Gitも利用できるため、アプリケーションのデプロイも簡単におこなうことができます。
早速、Gitを利用してAWS Elastic Beanstalkにデプロイをおこなってみたいとおもいます。

事前準備

Windows環境でGitを利用するため、以下のツールを使用します。

  • GitGit-1.7.10-preview20120409.exe をインストールします。インストールの際はコマンドプロンプトを使用するため『Run Git from the Windows Command Prompt』を選択します。
  • AWS Elastic Beanstalk Command Line Tool ダウンロードしたディレクトリ内のelasticbeanstalk-cliAWSDevToolsWindowsAWSDevTools-OneTimeSetup.bat を実行します。これで、AWS Elastic Beanstalk アプリケーションのプッシュに必要なものがすべてインストールされます。

手順

1) AWS Elastic BeanstalkでEnvironmentを作成 2) リポジトリの作成 3) リポジトリセットアップ 4) Gitでデプロイ

1) AWS Elastic BeanstalkでEnvironmentを作成

AWS Management Console > AWS Elastic Beanstalk > Create New Application で新しいアプリケーションを作成します。

Environmentを作成します。
今回作成したサンプル

  • Application:sample
  • Environment:samplephp

ここで作成したsamplephpがデプロイ環境になります。

以上、数分でセットアップが完了します。
http://***Environment名***.elasticbeanstalk.com/ にアクセスすると デフォルトのアプリケーショントップページが表示されます。
URLはEnvironment Details > URLでも確認できます。
ちなみにEC2のインスタンス一覧を確認すると、インスタンスが起動していることがわかります。

2) リポジトリの作成

ローカル環境にて、事前準備でインストールしたGit BashアイコンからShellを起動し作業用のディレクトリを作成します。

3) リポジトリセットアップ

解凍したAWS Elastic Beanstalk Command Line Toolのelasticbeanstalk-cli¥AWSDevTools¥Windows¥AWSDevTools-RepositorySetup.bat をtestディレクトリ以下にコピーし、ダブルクリックして実行します。※この作業は作成したリポジトリ毎に実行が必要です
バッチファイルの実行後、デプロイ用の設定をおこないます。

4) Gitでデプロイ

コミット用のファイルを作成し、Gitでデプロイをおこないます。

http://***Environment名***.elasticbeanstalk.com/ にアクセスします。
無事反映されました!

まとめ

環境設定まわりは最初手間取りましたが、セットアップが完了すれば数分で最適な環境が構築できました。
試しにBeanstalkで起動したインスタンスを停止してみたところ、数分で復旧しヘルスチェックもグリーンに戻りました。 今後も対応環境は増えるようなので、更に使い勝手が良くなりそうですね。

AWS運用自動化サービス「Cloud Automator」