Elastic Beanstalk + Rails

  • 2
    いいね
  • 0
    コメント

EB CLIのインストール

keyが必要なのでIAMを作成する。権限は最小になるように頑張る。

$ brew install python
$ pip install awsebcli

環境自体は、GUIから作成するので概ね良いと思う。
t1.smallは流石に重い気がするので、m3.mediumぐらいでいいと思う。

初期化

eb init

Tableを作る

$ eb ssh
$ createdb -U USER_NAME -h HOST_NAME TABLE_NAME

環境変数の指定

DATABASE_URL

postgres://ID:PASSWORD@HOST:PORT/TABLE_NAME

SECRET_KEY_BASE

$ bundle exec rake secret

RAILS_SERVE_STATIC_FILES

RAILS_SERVE_STATIC_FILESをtrueに設定しないとpublicフォルダにアクセス出来ないようです。

rake db:migrate

RAILS_SKIP_MIGRATIONS – ユーザーのアプリケーションの代わりにコンテナで rake db:migrate を実行するか、単にスキップするかを指定します。Rails 3.x アプリケーションにのみ適用できます。Rails 以外の移行については、拡張子が .config のファイル(myconfig.config)を使用してコンテナコマンドを指定し、手動で移行を実行する必要があります。RAILS_SKIP_MIGRATIONS を true に設定した場合は、設定ファイルを使用して移行を行います。設定ファイルの使用の詳細については、「Ruby 環境のカスタマイズと設定」を参照してください。

Elastic Beanstalk での Ruby 環境の設定 - AWS Elastic Beanstalk

またはSSHでログインして実行することになると思う。

Deploy

502 Bad Gateway

GUIからアップロードすると、上手く動かないことがあり困った。うまくいく場合とうまくいかない場合の再現性が薄く対処が難しかった。

$ eb deploy

を使ったところ、アップロードしていたアプリに不備があるようでエラーが出た。GUIアップロードでは、詳細なエラーチェックが行われておらず唐突に失敗する場合があるのかもしれない。

というかよく考えると/var/app/currentの下が、GUIからやったときとCUIからやったときで完全に違ったので、多分やり方を間違えている。結論、CUIからやるのでいいと思う。

なんだか環境変数のセットもGUIからやると失敗することがあって、初回作成以外はGUIから触らないほうがいいのかもしれない。迷信めいてるけど。