ElasticBeanstalk

Elastic Beanstalk で Ruby のバージョンを上げる

More than 3 years have passed since last update.

Ruby のバージョンを上げたかった

image

元々 Ruby 2.1 を指定し、作成した環境だったが、2.2 系にバージョンを上げたくなった。

マニュアルを読んだり StackOverflow で探したりしたが「コマンド一つでバージョンアップ!」とはいかないようだ。

選択肢はこのくらい。どれが一番良いのだろう。

  • 1. カスタム AMI を作成し、切り替える(できれば避けたい)
  • 2. 設定ファイル .config の中でバージョンを切り替える
  • 3. 新たに環境を作成し、現環境とスワップする

サポートデスクに聞いてみた

今回のケースでは「3. 新たに環境を作成し、現環境とスワップする」のが良いようだ。

やはり手軽に Ruby のバージョンを上げる方法は用意されていないみたい。残念。

「1. カスタム AMI を作成し、切り替える」は「別環境を構築して頂くのと比較してメリットがなく、デメリットが多いためお薦めできかねます。」とのこと。

おまけ

プラットフォームのバージョン≠Rubyのバージョン

image

ダッシュボード上に「新しいバージョンが利用可能」と表示されている場合。
「変更」ボタンより、最新の AMI を利用することができるが Ruby のバージョン自体は変わらない。

image

「アクション」→「最新のプラットフォームを使用したクローンの作成」メニューも同様。

セキュリティパッチを当てたいだけなのに、勝手に Ruby のバージョン上がっても困るしね。
分かるよ。選べても良いと思うけどね。色々難しいんだろうね。きっと。

この自動アップデート機能の恩恵を受けたいがために、カスタム AMI は使いたくなかった。

提供されている AMI には様々な Ruby のバージョンが同梱されている

/opt/rubies/ 以下に。
今回は試していないけど symlink 張り替えるだけでイケるのかもしれない。

$ ls -al /opt/rubies/
total 24
drwxr-xr-x 6 root root 4096 Aug 31 09:13 .
drwxr-xr-x 6 root root 4096 Aug 31 09:15 ..
drwxr-xr-x 6 root root 4096 Nov 21  2014 ruby-1.9.3-p551
drwxr-xr-x 6 root root 4096 Nov 21  2014 ruby-2.0.0-p598
drwxr-xr-x 6 root root 4096 Nov 21  2014 ruby-2.1.5
drwxr-xr-x 6 root root 4096 Apr 16 03:07 ruby-2.2.2
lrwxrwxrwx 1 root root   22 Aug 31 09:13 ruby-current -> /opt/rubies/ruby-2.1.5