Elastic Beanstalkにローカルのアプリケーションをデプロイする

本日はElastic Beanstalkを使用することでロードバランサの作成やロードバランサの冗長化、ロードバランサへのEC2インスタンスの紐付け、RDSの作成等を手作業ではなく、Elastic Beanstalkに任せて、アプリを開発して、デプロイしてみます。

コマンドラインのインストール

$ brew install aws-elasticbeanstalk

$ eb -h
AWS Elastic Beanstalk Command Line Interface v2.6.3

※公式ドキュメントはダウンロードして、解凍して、パスを通してと言っていますが、brewで入れた方が速いです。

http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/create_deploy_nodejs.sdlc.html

プロジェクトディレクトリの作成・移動

$ mkdir {{プロジェクト名}}
$ cd {{プロジェクト名}}

gitリポジトリの作成

$ git init

IAM(Identity and Access Management)でUserの作成

ユーザーを作成するとcredencials.csvが落ちてきます。
そこにAccess Key IDとSecret Access Keyが記載されています

※AdministratorAccessのPolicyを作成してattachすることを忘れずに https://console.aws.amazon.com/iam/home?region=us-east-1#policies

eb初期化

$ eb init
↓
各種設定
↓
Updated AWS Credential file at "/Users/{{ユーザー名}}/.elasticbeanstalk/aws_credential_file".

※/Users/{{ユーザー名}}/.elasticbeanstalk/configができます

アプリをElastic Beanstalkで起動

$ eb start

http://{{プロジェクト名}}-env-XXXXXXXX.elasticbeanstalk.com/にアクセスすると

f:id:keiwt:20150214161605p:plain

Hello Worldアプリの作成

  • app.jsの作成
var http = require("http");

http.createServer(function(request, response) {
  response.writeHead(200, {"Content-Type": "text/plain"});
  response.write("Hello World");
  response.end();
}).listen(process.env.PORT || 8888);
  • ローカル実行と確認
$ node app.js
↓
http://localhost:8888/

Hello Worldと表示されていればOK

編集内容をElastic Beanstalk上のアプリケーションにデプロイ

$ git add .
$ git commit -m "コミットメッセージ"
$ git aws.push

http://{{プロジェクト名}}-env-XXXXXXXX.elasticbeanstalk.com/にアクセスすると、Hello Worldが表示されます。

※git aws.pushの際にImportError: No module named botoとなる場合は以下のコマンドで解決できます。

$ sudo easy_install pip
$ sudo pip install boto