AWS CLI を使った Sinatra アプリケーションの AWS Elastic Beanstalk へのデプロイ
前回書いた記事の作業を簡単に実行できる Ebfly という gem を作成しました。
まだ、機能的には足りないことが多いのですが、アプリの作成からデプロイまではできるようになったので、公開しました。Ebfly を使うと、前回解説した作業がこのように簡単にできます。
インストール
$ gem install ebfly
これで ebfly
コマンド使えるようになります。
次に、$HOME/.ebfly
にファイルを作成して、AWS の設定をします。
AWS_ACCESS_KEY_ID='...'
AWS_SECRET_ACCESS_KEY='...'
AWS_REGION='us-east-1'
環境変数で指定することもできます。
export AWS_ACCESS_KEY_ID='...'
export AWS_SECRET_ACCESS_KEY='...'
export AWS_REGION='us-east-1'
アプリの作成からデプロイまで
Step 1 作業用ディレクトリの作成
$ mkdir sinatraapp
$ cd sinatraapp
$ git init .
Step 2 アプリケーションの作成
ebfly app create
コマンドでアプリケーションを作成します。
# Usage: "ebfly app create <application-name>"
$ ebfly app create sinatraapp
Step 3 Environment の作成
'ebfly env create' コマンドで Environment を作成します。
# Usage: "ebfly env create <environment-name> -a <application-name> -s <solution_stack_name> -t <tier-type>
$ ebfly env create dev -a sinatraapp -s ruby19 -t web
Step 4 sinatra アプリの作成
前回と同じなので、解説省略
config.ru
require './helloworld'
run Sinatra::Application
helloworld.rb
require 'sinatra'
get '/' do
"Hello World!"
end
Gemfile
source 'http://rubygems.org'
gem 'sinatra'
Step 5 Bundle install して、コミット
$ bundle install
$ git add .
$ git commit -m "First commit"
Step 6 デプロイ
指定したブランチを ebfly env push
コマンドを使ってデプロイすることができます。
master ブランチをデプロイする場合はこう。
# Usage: "ebfly push <name> <branch or tree_ish>".
$ ebfly env push dev master -a sinatraapp
コマンド実行後、アプリケーションのステータスが Ready
になるまで待ちましょう。
アプリケーションのステータスは ebfly env info
コマンドで確認できます。
$ ebfly env info dev -a sinatraapp
=== environment info ===
application name: sinatraapp
environment id: e-XXX
environment name: sinatraapp-dev
description:
status: Ready
health: Green
tier: WebServer Standard 1.0
solution stack name: 64bit Amazon Linux 2013.09 running Ruby 1.9.3
endpoint url: awseb-e-w-XXXXXXXXXXXXXXXX-1111111111.us-east-1.elb.amazonaws.com
cname: sinatraapp-dev-xyz.elasticbeanstalk.com
ステータスが Ready
になったら、上記の cname
のURLをコピペしてブラウザでアクセスしてみてください。
Mac OS は人は、'ebfly env open`コマンドを利用することで、同じことができます。
$ ebfly env open dev -a sinatraapp
Step 7 後片付け
ebfly app delete -f
で強制的にアプリを削除することができます。
$ ebfly app delete sinatraapp -f
まとめ
ElasticBeanstalk は便利だけど、セットアップのわかりにくさとかもあって、あまり使われていないような気がしています。Ebfly を使えば、AWS CLI や eb コマンドよりは、手軽に始めることができると思います。みんな、ElasticBeanstalk を使うようになって、ノウハウが共有できれば良いな、と思う今日このごろです。