duyojiぶろぐ

技術系ときどき日常系

AWS Elastic Beanstalkをコマンドラインから作成してアップロードまで

AWS Elastic Beanstalkとは

Elastic Beanstalk(以下,EB)はHerokuや、phpfogのようなPaaSの一つ。

サーバーに関して知識が無くてもブラウザのGUIコンソールから
アクセスが増えたときはサーバーを増やして対応するなど設定次第で
自動でスケールアウト出来るから色々お手軽にサービスを提供できる。

EBにコマンドラインツールを使ってアップしてRailsでデプロイすることが書かれている
記事もあり、Railsでやってみたい方は以下の記事を参考にすると良いと思う。

AWS Elastic Beanstalk と Rails で Hello World してみる【11日目】


EC2インスタンスを起動してそのサーバーでサービスを提供するため
実際にsshとかでサーバーを直接いじる事も出来る。

基本的に以下のURLを一通りやれば良いだけ

http://docs.amazonwebservices.com/elasticbeanstalk/latest/dg/command-reference-get-started.html

EBは以下のように色々な言語に対応しているが今回はPHPを選択した。

しかし最初はほとんどコマンドだけで言語とかあまり関係なく
ただサーバーを立ち上げたときデフォルトでPHPの環境が出来ているだけ
だと思うので直接サーバーをいじる事が出来ればあまり気にしなくて良いと思う。
(間違っていたらごめんなさい)

実行環境

Mac OSX 10.8

必要なもの

gitとrubyに関してはXcodeなりデフォルトのrubyなり,homebrewなりで
入れれば良いと思う。それらのインストールに関しては別の記事を参考にして
入れてもらえたらと思う。

AWS Elastic Beanstalk Command Line Toolを使えるようにする

とりあえずさっきも書いたAWS Elastic Beanstalk Command Line Toolからzip形式であるAWS Elastic Beanstalk Command Line Toolをダウンロードする。

ダウンロードしたzipファイルをとりあえず適当なところに置く。
自分は「~/.aws」というディレクトリを作ってそこにzipファイルを置いて
ターミナルから以下のようにして解凍

$ unzip <ダウンロードしたファイル.zip>

解凍したあとはEBをコマンドで使えるようにするために使う「eb」コマンドまでの
パスを環境変数に保存。
ちなみに/eb/macosx/というディレクトリがあるが
ここでは/eb/linux/とlinuxディレクトリを選択した

$ export PATH=$PATH:<path to unzipped EB CLI package>/eb/linux/python2.7/


ここまでやれば「eb」コマンドが使えるようになっている。

デプロイ ~Hello, EB~を表示させる

とりあえず作業ディレクトリを作ってgitレポジトリを作る。

$ mkdir EB
$ cd EB
$ git init


ここで先ほどダウンロードして解凍したAWS DevToolsの中に入っている
AWSDevTools-RepositorySetup.shを実行する。
これはgitにaws用に拡張をつけるもので最終的にgit aws.pushでEBにpushする。

参考URL
http://docs.amazonwebservices.com/elasticbeanstalk/latest/dg/GettingStarted.GetSetup-devtools.html


EBディレクトリ

$ sh <path to unzipped EB CLI package>/AWSDevTools/Linux/AWSDevTools-RepositorySetup.sh


次にEBの環境を作る。

$ eb init

上記を行うと以下の事が対話形式で聞かれるので
自分の環境にあったもの、構築するものを選択する。

聞かれる内容

  • AWS Access Key ID
  • AWS Secret Access Key
  • Available service regions are(自分の使っているリージョン)
  • AWS Elastic Beanstalk application name(特に名前を気にしなくてよいならそのままEnterして大丈夫, ディレクトリ名がデフォルトでつく)
  • AWS Elastic Beanstalk environment name(特に名前を気にしなくてよいならそのままEnterして大丈夫, 「ディレクトリ名-env」がデフォルトでつく)
  • Available solution stacks are:(今回は64bit Amazon Linux running PHP 5.3を選択)


上記の処理を終えたら以下のコマンドを実行するとEC2インスタンスが作成されたり
色々処理が始まりデプロイされる。

$ eb start

以下のコマンドで表示されるものの中にURLがあるので、
それをブラウザに入力するとページがデフォルトで用意されているページがブラウザに表示される。

$ eb status --verbose

デフォルトで表示されるページ


index.phpでファイルを作る

<!DOCTYPE HTML>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title></title>
</head>
<body>
	<h1>Hello, <?php echo 'EB';  ?></h1>
</body>
</html>

その後git add, git commit

ファイルを作ったら以下のようにしてEBにpushして
同じページをリロードするとさっきのファイルが表示される。

$ git aws.push