web-dev-qa-db-ja.com

AWS ElasticBeanstalk-既存の環境をRuby 2.1からRuby 2.2にアップグレードする方法

AWS ElasticBeanstalk-できません最新のプラットフォームでクローンを作成または_eb upgrade_ from Ruby 2.1 to Ruby 2.2

私はこれに頭をぶつけてきました。 5月に、AWSはRuby Elastic EnvironmentsがRuby-2.2を提供するようになったと発表しました(例:Ruby-2.2-(passenger-standalone)またはRuby-2.2-(puma))。アップグレードできません。既存のRuby-2.1環境からRuby-2.2へ。完全に再作成する必要があるようです...それはばかげているようです。他の誰かがこれを経験していますか?単純なものが欠けているだけですか?

追加情報

stagingおよびproduction環境で、数か月間Ruby-2.1-(passenger-standalone)を喜んで使用しています。今度はアップグレード最新のRuby-2.2プラットフォームにアップグレードしたいと思います。 AWSのドキュメントには、これは非常に簡単であると記載されています。実際、一部のドキュメントには、_eb clone <env-name> --update_を使用できると記載されているようです。そのフラグは、私が使用している_EB CLI 3.4.5_には存在しません:(さらに、Webコンソールには最新のプラットフォームで複製オプションメニュー項目がありますが、無効になっています。

最新のRuby-2.2インスタンスを取得するためにできることは、まったく新しい環境を最初から作成することだけのようです。これは非常に面倒です。

だからこれが私が試したものです...

_$ eb status
Environment details for: staging
  Application name: xyz
  Region: us-west-2
  Deployed Version: fbe7
  Environment ID: someId
  Platform: 64bit Amazon Linux 2015.03 v1.4.3 running Ruby 2.1 (Passenger Standalone)
  Tier: WebServer-Standard
  CNAME: bla.bla.bla.elasticbeanstalk.com
  Updated: 2015-06-26 22:48:59.689000+00:00
  Status: Ready
  Health: Green
_

Ruby 2.1を使用していることを確認します。アップグレードしてみましょう:

_$ eb upgrade
Environment already on most recent platform version.
_

さて、それは素晴らしいです、それでプラットフォーム自体はどうですか?

_$ eb platform select
It appears you are using Ruby. Is this correct?
(y/n): y

Select a platform version.
1) Ruby 2.2 (Puma)
2) Ruby 2.2 (Passenger Standalone)
3) Ruby 2.1 (Puma)
4) Ruby 2.1 (Passenger Standalone)
5) Ruby 2.0 (Puma)
6) Ruby 2.0 (Passenger Standalone)
7) Ruby 1.9.3
(default is 1): 2
_

さて、これが私のプラットフォーム設定です:

_$ eb platform show
Current default platform: Ruby 2.2 (Passenger Standalone)
New environments will be running:  64bit Amazon Linux 2015.03 v1.4.3 running Ruby 2.2 (Passenger Standalone)

Platform info for environment "staging":
Current: 64bit Amazon Linux 2015.03 v1.4.3 running Ruby 2.1 (Passenger Standalone)
Latest:  64bit Amazon Linux 2015.03 v1.4.3 running Ruby 2.1 (Passenger Standalone)
_

したがって、新しい環境はRuby-2.2エディションを利用します。それは素晴らしいことですが、新しく作成されたRuby-2.1エディションの代わりに、構成済みのRuby-2.1エディションを真剣に廃止する必要がありますか?いい加減にして?

28
Dan

aws clieb cli ではありません)を使用して、これに対する解決策を見つけました。

aws elasticbeanstalk update-environment --solution-stack-name "64bit Amazon Linux 2016.03 v2.1.0 running Ruby 2.3 (Puma)" --environment-name "dev-bg-123456" --region "us-east-1"

Aws cliは homebrew でインストールできます:

brew install awscli
50

この課題に対する私の解決策は次のとおりです。

  1. まったく新しい環境を立ち上げます。
  2. Webアプリケーションまたはワーカーを作成します。
  3. 必要な環境を選択します。おそらく最新のものです。私の場合、Ruby-2.2の乗客。
  4. 新しい環境が成功するように、サンプルアプリケーションをデプロイすることを選択します。
  5. 新しい環境の残りのオプションを選択して、起動させます。

起動に成功したら、すべての環境変数を設定しました。例えばすべてのデータベース、smtp、Rails_ENV/RACK_ENVなど。次に、以前にデプロイしたアプリケーションに移動し、最新の品質バージョンを新しい環境にデプロイするだけです。

これは単純なeb upgradeよりもはるかに多くの作業であることに同意するでしょう。ラメソース。

1
Dan

私はこの問題に対する別のアプローチを見つけました。

私がそれを機能させる方法は上記のコメントに似ていますが、既存のbeanstalk環境を更新することができ、コードを完全に新しいものにデプロイすることはできませんでした。

私がしたステップ:

  1. 必要なRubyバージョン2.3を実行しているbeanstalkで完全に新しい環境を起動しました(私の場合、Ruby 2.2からRuby 2.3へのアップデートが必要でした)
  2. 新しいインスタンスにSSHで接続し、アプリケーションに必要なすべての依存関係(パッケージ、開発ツールなど)をインストールしました。これらは.ebextensionsディレクトリでも実行できます。
  3. Ruby 2.3を実行しているインスタンスから、すべてがインストールされたカスタムAMIを作成しました
  4. ラルフが投稿したのと同じコマンドを使用しましたが、数週間かかりました。
aws elasticbeanstalk update-environment --region "REGION" --environment-name "ENV_NAME" --solution-stack-name "64bit Amazon Linux 2018.03 v2.8.1 running Ruby 2.3 (Puma)" --option-settings Namespace=aws:autoscaling:launchconfiguration,OptionName=ImageId,Value="AMI- 
xxxxxxxx"

AMI option-settingsが重要でした。これは、既存の環境で新しいインスタンスを起動するために使用するRuby 2.3.7がインストールされたAMIを支援するためです。以前は、ラルフの提案したコマンドを押すだけで、すべての試行で失敗していました。

0