LoginSignup
5
3

More than 5 years have passed since last update.

ElasticBeanstalkでRubyのバージョンアップ候補が現れないときにやったこと

Last updated at Posted at 2018-12-02

ElasticBeanstalkで運用しているRailsアプリケーションがあり、開発環境のRubyのバージョンを2.2から2.4に上げました。
ElasticBeanstalk上の本番環境もアップグレードしようと思ったのですが、GUIのプラットフォームのプルダウンに2.4の候補が現れず、しばらくハマリました。

調べたところ、CLIから解決する方法しか見当たりませんでした。メモ程度ですが、解決までの道のりです。

もっとよい方法があったら教えてください!

選択できるソリューションを調べる

ベースとなるAmazon Linuxと言語のバージョンの組み合わせをソリューションと呼ぶようです。
list-available-solution-stacksで選択できるソリューションをリストアップできます。

aws elasticbeanstalk list-available-solution-stacks | jq -r '.SolutionStacks[]'

今回は64bit Amazon Linux 2018.03 v2.8.6 running Ruby 2.4 (Passenger Standalone)を使うことにしました。

ハマったポイント

以下のページにプラットフォーム一覧があります。

Elastic Beanstalk でサポートされているプラットフォーム
https://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/concepts.platforms.html#concepts.platforms.ruby

最初にここから選んだのですが、実際にソリューションを適用するステップで見つからないと何度も怒られてしまいました。

選択できるソリューションのバージョンには縛りがあるようです。aws elasticbeanstalk list-available-solution-stacksで取得できるリストから選びましょう。

環境のクローン

次に少し乱暴なやり方をするので、環境をクローンしてから作業した方が安全です^^

GUIやebコマンドからクローンしてください。後でDNSの付け替えをします。

アプリケーションの新しいバージョンをアップロード

Ruby 2.4に対応したアプリケーションコードをアップロードして新しいバージョンを作成するために、クローンした環境にひとまずデプロイしちゃいます。

zipに固めてアップロードだけするのがお行儀のよいやり方ですが、eb deployと同じパッケージングをしたいのでこうしました。ビルドだけ行うコマンドが見当たらず。

エラーが発生してヘルスチェックが終わらない場合は、オペレーションを中断しちゃいます。それでも新しいバージョンラベルは発行されます。

eb deploy クローンした環境

ソリューションの変更によるRubyのアップグレード

list-available-solution-stacksで取得した中から、64bit Amazon Linux 2018.03 v2.8.6 running Ruby 2.4 (Passenger Standalone)にアップグレードします。

aws elasticbeanstalk update-environmentコマンドを使います。

aws elasticbeanstalk update-environment \
  --environment-name '環境' \
  --solution-stack-name '64bit Amazon Linux 2018.03 v2.8.6 running Ruby 2.4 (Passenger Standalone)' \
  --version-label '新しいアプリケーションのバージョンラベル'

これで無事に新しい環境にデプロイができたので、DNSを付け替えて作業完了です。

誤ってプラットフォームをアップグレードしない措置なのかなーと推測しましたが、なかなか大変でした。

5
3
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
5
3