LoginSignup
10
10

More than 5 years have passed since last update.

SinatraアプリをAWS-EBで動かした

Last updated at Posted at 2014-05-23

SinatraアプリをAWS Elastic Beanstalkで動かした

Sinatraアプリを作ってみたけど環境構築が面倒、と思っていたら、ものすごく分かりやすい記事があったので、早速実践しました。
この場を借りて感謝もうしあげます。

やったこと

実際に動かしたSinatraアプリのリポジトリはこれです。

実行したコマンドなどは、リポジトリのWikiに書きました。

はまった箇所は以下です。

  • IAM ユーザの権限が足りなかった
  • gitのブランチを変えたら何か言われた
  • アプリに渡す環境変数

IAM ユーザの権限が足りなかった

eb initコマンドを実行するときに、AWSユーザのKEYとSECRETを入力します。
ここで最低限与えるべき権限が決まっているようです。詳細は参考URLをみてください。
私が動かすSinatraアプリは、DBを使わないので、以下の権限を与えれば大丈夫でした。

  • IAM FullAccess
    • ポリシーファイルとか作るらしい。よく理解していない。
  • EC2 FullAccess
    • EC2インスタンス作ったり消したりする。
    • EIP付与したり。
    • ELBとかも選択すれば使うし。
  • ElasticBeanstalk FullAccess
    • とりあえず。アプリとか作るし指定しておいた。

<参考>
なお、権限が足りないと、以下のような悲しい感じになります。

...
Select an environment tier.
Available environment tiers are:
1) WebServer::Standard::1.0
2) Worker::SQS/HTTP::1.0
Select (1 to 2): 1
Select a solution stack.
Available solution stacks are:
Select (1 to 0): 0
Select (1 to 0): 1
Select (1 to 0): 0
Select (1 to 0): -1
Select (1 to 0):
Select (1 to 0): ^C  ←Ctrl+Cで抜けるしかない…

gitのブランチを変えたら何か言われた

Elastic Beanstalkは、gitのブランチごとに別の環境にデプロイできるようです。
masterブランチが本番環境、stagingブランチがステージング環境、などの使い分けができるみたいですね。

ブランチを変える場合、以下のコマンドを実行します。
コマンドを実行すると、環境の名前の入力を求められます。

eb branch

結果

% eb branch
The current branch is "tb_eb_getstart".
Enter an AWS Elastic Beanstalk environment name (auto-generated value is "aws-portal-tbebgetstart"):
Do you want to copy the settings from environment "aws-portal-env" for the new branch? [y/n]: y

<参考>
はじめ、eb initをmasterブランチで実行したんですが、masterにいきなりコミットするのは嫌なので、ブランチを切りました。
しかし、.gitignoreが変更されているので、とりあえずコミットし、eb startしたら、「このブランチは設定してねーよ!」とか言われました。
「n」と打ってもアプリの開始はやめてくれなくて開始で5分、停止で5分待ちました。。

% eb start
The current branch "tb_ebtest" is not associated with an Elastic Beanstalk environment. Call "eb branch" to set up a new environment for this branch.
Proceeding with default settings.
Starting application "aws-portal".
Would you like to deploy the latest Git commit to your environment? [y/n]: n
Waiting for environment "aws-portal-env" to launch.   ←やめて!
2014-05-24 00:24:24 INFO    createEnvironment is starting.
...

アプリに渡す環境変数

今回使うアプリはAWSのRubyのSDK(v2)を使うので、環境変数からIAMユーザのKEYとSECRETを受け取る仕組みになっています。

コマンドなり設定ファイルなりで指定できそうですが、とりあえずマネジメントコンソールから環境変数を設定することが出来ました。
やり方はWikiに書きました。

こういったリポジトリに入れる事が出来ない情報は、どうすればいいんですかね。
自動化するときに大きな壁になると思うのですが、みなさんどうしているのでしょう。

参考URL

10
10
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
10