Как перейти на последнюю версию AMI в AWS Elastic Beanstalk?

18

Я запускаю приложение на AWS Elastic Beanstalk, и похоже, что мне нужно создать новую среду, если я хочу использовать последнюю версию AMI.

Если бы я знал, какой был последний идентификатор AMI, я мог бы обновить его в конфигурации среды.

Есть ли место, где я мог бы найти ID последних AMI Elastic Beanstalk или, что еще лучше, можно ли автоматически заменять экземпляры новой версией при каждом выпуске новой версии?

Вениамин
источник
2
Запустить новую среду и посмотреть, какой идентификатор AMI находится на сервере, который он запускает?
ceejayoz
2
Это немного больно, не так ли?
Бенджамин
В прошлый раз, когда я настраивал среду EB, это заняло около пяти минут. AMI Amazon Linux выходят раз в три месяца IIRC. 1,6 минуты в месяц не доставляют мне особой боли.
ceejayoz
Позвольте мне перефразировать: такое чувство, что должен быть лучший путь. Но вы правы, это не имеет большого значения.
Бенджамин
2
Они действительно должны публиковать их в некоторых заметках о выпуске или на своих форумах, а не просто молча выкладывать.
Кен Лю

Ответы:

2

Рекомендуемый и поддерживаемый способ обновить среду AWS Beanstalk документирована здесь и управляемые обновления платформы обсуждаются здесь , честно говоря , я бы придерживаться , что если вы хотите, чтобы все было легко (и это то, что Beanstalk это все о), вы будете теоретически Получайте только непрерывные обновления, и AWS будет управлять процессом, чтобы не было простоев.

Поэтому я просто хочу повторить, что обновления управляемой платформы, вероятно, то, что вам или кому-либо еще, пришедшим сюда из Google, понадобится, но если вы хотите узнать последнюю версию AWI, предоставленную AMI для вашей среды Beanstalk, это можно сделать довольно просто с помощью AWS CLI (спасибо в здравом уме именования от Amazon на их AMI).

Начиная с экземпляра из вашей среды, опишите экземпляр, чтобы получить текущий AMI (пропустите, если вы уже знаете текущий AMI).

aws ec2 describe-instances --instance-ids i-0909613f35ec0ffee --query 'Reservations[*].Instances[*].ImageId' --output text

ami-35290a56

Возьмите полученный AMI ID и опишите его.

aws ec2 describe-images --image-ids ami-35290a56 --query 'Images[*][Architecture, Hypervisor, Name, RootDeviceType, VirtualizationType]' --output json

[
    [
        "x86_64",
        "xen",
        "aws-elasticbeanstalk-amzn-2016.03.0.x86_64-python34-hvm-201603290718",
        "ebs",
        "hvm"
    ]
]

Мы можем использовать выходные данные выше в качестве входных данных для нового, отсортированного, describe-imagesно на этот раз мы заменим временные метки *подстановочными символами, например так:

aws ec2 describe-images --filters 'Name=architecture,Values=x86_64' 'Name=virtualization-type,Values=hvm' 'Name=owner-alias,Values=amazon' 'Name=name,Values=aws-elasticbeanstalk-amzn-*.x86_64-python34-hvm-*' --query 'sort_by(Images[*], &Name)[-1].ImageId' --output text

ami-1be5de78

Из-за мощи лексической сортировки и ISO 8601 мы получаем последнюю версию AMI, которая в моем примере такова ami-1be5de78.

aws ec2 describe-images --image-ids ami-1be5de78 --query 'Images[*].Name' --output text

aws-elasticbeanstalk-amzn-2016.09.0.x86_64-python34-hvm-201612200708

Опять же, я бы не советовал вам пытаться перейти на этот AMI вручную, у Beanstalk есть все условия, чтобы сделать все это для вас!

Натан
источник
0

Похоже, даже если вы измените AMI, на правильное использование AMI ElasticBeanstalk. Кажется, это не работает должным образом. Он пропускает все файлы. Это не работает правильно.

Я думаю, что вы должны запустить новую среду Elastic Beanstalk с обновленным AMI. Заставьте все работать тогда поменяйте местами URL среды.

Уэсли Малер
источник
0

Вы можете использовать функции управляемых обновлений, которые поставляются с eb, но для этого вам придется заплатить за расширенные отчеты о работоспособности. Или используйте команду 'eb platform show'; В рабочем приложении есть cron, который запускает CURRENT = eb platform show your_env_name | sed -n '5p' | cut -d: -f2- | tr -d '[[:space:]]' LATEST = eb platform show your_env_name | sed -n '6p' | cut -d: -f2- | tr -d '[[:space:]]' - Затем сравните их, и, если они разные, вы можете использовать eb clone (по умолчанию это новая версия), а затем cname swap.

Йен Ватт
источник
0

Перейдя на панель инструментов вашего приложения, найдите «Конфигурация» и нажмите «Изменить».

Вы должны увидеть список, где вы можете выбрать платформу. Последняя версия указана в этом списке. Выбор платформы

AWS EB использует специальные настройки для разных языков программирования. Вы можете найти список настроек в документации http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/concepts.platforms.html

Есть таблицы, показывающие, какую версию AMI использует каждая платформа.

Я не нашел способ автоматически запускать эти обновления. Я на самом деле предпочитаю просматривать изменения платформы и тестировать их перед их развертыванием.

Мартин Ро
источник
0

Выберите свой сервис в Elastic Beanstalk. Вы увидите обзор на панели инструментов. В правой части панели инструментов вы можете увидеть конфигурацию вашего AMI, выберите Изменить обновление или ухудшите свой AMI. На данный момент вы собираетесь заменить свой экземпляр. Так что делайте резервную копию или клонируйте.

ankuj
источник
-2

Я смог обновить свое текущее приложение, размещенное на Beanstalk, до последней версии Amazon Linux AMI, выполнив следующие шаги.

1- Войдите в консоль AWS и перейдите на портал Beanstalk.

2- Перейдите на страницу конфигурации вашего приложения и нажмите «Экземпляры».

3- Найдите идентификатор AMI, он должен быть таким, как AMI-xxxxxx.

4- Возьмите идентификатор AMI и вернитесь в консоль EC2 и нажмите AMI.

5- Измените представление на Public Images и найдите идентификатор AMI, полученный ранее из конфигурации Beanstalk.

6 - Запустите этот AMI как новый экземпляр.

7. После запуска войдите в экземпляр и настройте его в соответствии с требованиями вашего приложения.

8. Как только вы удовлетворили все на месте, как вы хотели бы, чтобы создать образ AMI этого нового экземпляра.

9- Возьмите новый идентификатор AMI экземпляра, созданный на шаге 8, и примените его к конфигурации приложения Beanstalk.

10. Он не удалит старый экземпляр и не создаст новый экземпляр с помощью пользовательского AMI, а также развернет последнее приложение на новых экземплярах.

user2040074
источник
1
Я думаю, вы неправильно поняли вопрос. Я не спрашивал, как создавать и использовать пользовательский AMI, я спрашивал, как узнать, какой последний идентификатор AMI Elastic Beanstalk по умолчанию применяется при создании новой среды, и, если возможно, как автоматически применять новый AMI. когда он будет выпущен AWS.
Бенджамин