AWS Elastic Beanstalk - Как обновить существующую среду от Ruby 2.1 до Ruby 2.2
AWS Elastic Beanstalk - не может клонировать с последней платформой или eb upgrade
от Ruby 2.1 до Ruby 2.2
Я разбил мне голову над этим. Еще в мае AWS объявила, что их Ruby Elastic Environments теперь предлагают Ruby-2.2 (например, ruby-2.2-(passenger-standalone)
или ruby-2.2-(puma)
). Я не могу обновить существующие среды ruby-2.1 до ruby-2.2. Кажется, мне нужно полностью воссоздать их... это кажется глупым? Кто-нибудь еще испытывает это? Я просто пропустил что-то простое?
Дополнительная информация
Я с радостью использовал ruby-2.1-(passenger-standalone)
несколько месяцев в моей промежуточной и производственной среде. Теперь я хотел бы обновить их до последней платформы ruby-2.2. Документация AWS говорит, что это довольно тривиально, на самом деле некоторые из их документации даже говорят о том, что вы можете использовать eb clone <env-name> --update
. Этот флаг не существует в EB CLI 3.4.5
, который я использую: (Кроме того, в веб-консоли есть пункт меню "Клонировать с последней платформой", но он отключен.
Похоже, что все, что я могу сделать, чтобы добраться до последних экземпляров 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? Давай?
Ответы
Ответ 1
Я нашел решение для этого, используя 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"
С помощью aws cli можно установить homebrew:
brew install awscli
Ответ 2
Мое решение этой задачи состояло в следующем:
- Запустить новую среду.
- Создание веб-приложения или рабочего.
- Выберите нужную среду, которая, вероятно, самая последняя. В моем случае Пассажир с Ruby-2.2.
- Я выбираю развертывание Sample Application, чтобы новая среда удалась.
- Выберите остальные параметры для новой среды и дайте ей возможность запускать.
После успешного запуска я настроил всю свою переменную окружения; например все мои базы данных, smtp, RAILS_ENV/RACK_ENV и т.д. Затем я перехожу к ранее развернутым приложениям и просто развертываю свою последнюю качественную версию в совершенно новой среде.
Можно согласиться, что это намного больше, чем просто eb upgrade
. Сладкий соус.