eb upgrade
从Ruby 2.1到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)
几个月后兴高采烈地使用了eb clone <env-name> --update
。现在,我想将升级到最新的ruby-2.2平台。 AWS文档说这非常简单,事实上他们的一些文档似乎表明你可以使用EB CLI 3.4.5
。该标志并不存在于我使用的$ 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.2实例,就是从头开始创建一个全新的环境。这非常令人讨厌。
$ eb upgrade
Environment already on most recent platform version.
很好,确认我使用的是Ruby 2.1。所以让我们尝试升级:
$ 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)
现在,这是我的平台设置:
name
所以新环境将利用Ruby-2.2版本。这很棒,但是我是否真的必须退出我已配置的Ruby-2.1版本而不是新创建的Ruby-2.1版本?来吧?
答案 0 :(得分:50)
我找到了一个解决方案,使用aws cli(不是eb 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"
可以使用homebrew安装aws cli:
brew install awscli
答案 1 :(得分:1)
我对这一挑战的解决方案是:
成功启动后,我设置了所有环境变量;例如我的所有数据库,smtp,RAILS_ENV / RACK_ENV等。然后我转到我以前部署的应用程序,并将我最新的质量版本部署到全新的环境中。
人们会同意这比简单的eb upgrade
要多得多。瘸子酱。
答案 2 :(得分:0)
我找到了解决此问题的另一种方法。
实现它的方式与上面的注释类似,但是我设法更新了现有的beantalk环境,并且没有将代码部署到全新的环境中。
我执行的步骤:
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选项设置对我来说很关键,因为这帮助我安装了ruby 2.3.7的AMI,该Ruby用于在现有环境中启动新实例。 以前,每次尝试都无法达到Ralph的建议命令。