Хотя ранее я писал о том, как легко запустить и запустить приложение Spring Boot на AWS с помощью Boxfuse, я думаю, что было бы неплохо иметь представление о некоторых альтернативных способах достижения этого. Одна из этих альтернатив — использование AWS Elastic Beanstalk . В этом посте я опишу базовую конфигурацию, чтобы ваше приложение Spring Boot работало в облаке на AWS. После создания Elastic Beanstalk у вас будет по крайней мере один экземпляр EC2, работающий на AWS с Elastic Load Balancer перед ним. Также предоставляется группа автоматического масштабирования и, конечно, некоторые группы безопасности . Когда помещено в диаграмму, это выглядит следующим образом (кстати, часть базы данных не будет использоваться в примере этого поста):
Я предполагаю, что у вас уже есть аккаунт для AWS. Если нет, то получите бесплатную подписку на первый год (соблюдайте условия, чтобы она оставалась бесплатной).
Настройка AWS IAM
Первый шаг — создание нового пользователя, который сможет запускать AWS Elastic Beanstalk. У этого пользователя будут только эти разрешения, поэтому, если данные учетной записи могут попасть в чужие руки, ущерб будет сведен к минимуму (объяснение здесь ). Когда вы создаете своего пользователя, не забудьте загрузить свои учетные данные для этого пользователя, они понадобятся вам позже.
Я поместил нового пользователя в группу «spring-boot-users» и назначил для этой группы следующие роли и политики:
‘ AWSElasticBeanstalkFullAccess ‘:
Пока мы здесь, вы также можете создать следующие две роли (они должны создаваться автоматически при создании вашей первой среды Elastic Beanstalk с помощью консоли управления или интерфейса командной строки EB, но я помню, у меня были некоторые проблемы с ними, и я сам их создал) :
- aws -asticbeanstalk-ec2-role: со следующими прикрепленными политиками: AWSElasticBeanstalkWebTier
- aws -asticbeanstalk-service-роль: со следующей прикрепленной политикой: AWSElasticBeanstalkEnhancedHealth
Установите клиентский интерфейс Elastic Beanstalk
Со всем этим мы почти готовы испачкать руки. Я предпочитаю использовать CLI вместо консоли управления, потому что, используя CLI, вы можете написать весь сценарий, который значительно облегчает жизнь. Чтобы установить CLI (я использую Mac), просто запустите:
brew install awsebcli
Настройте свои учетные данные нового пользователя для использования с CLI. Я добавляю их в мой файл ~ / .aws / credentials следующим образом:
1
2
3
4
5
6
7
|
[default] aws_access_key_id = 1234567890 aws_secret_access_key = hrhyueiryt983745983erti+UXsF6IvC [spring-boot] aws_access_key_id = 0987654321 aws_secret_access_key = hdgdfghkjg384957893745dc7 /Xrsekgu7V4 |
Поэтому в свой файл учетных данных я добавил профиль «spring-boot» с соответствующим ключом и секретом.
Настройте свой проект Spring Boot
Теперь все настроено для запуска и запуска среды EB. Перейдите в папку проекта Spring-boot и в этом каталоге выполните следующую команду:
eb init
Конфигурация для EB теперь будет настроена на основе введенного вами входа:
В папке вашего проекта вы теперь увидите новую папку «.elasticbeanstalk» с файлом «config.yml». Поскольку я создаю свое приложение с помощью Maven, я добавляю следующую строку в config.yml, чтобы он развернул мою последнюю версию снимка сборки в Elastic Beanstalk:
deploy:
artifact: target/jwt-spring-security-demo-1.0.0-SNAPSHOT.jar
Также я ввожу значение для профиля, чтобы CLI выбрал правильные учетные данные из моего файла учетных данных, который я изменил ранее. Файл конфигурации заканчивается так:
01
02
03
04
05
06
07
08
09
10
11
12
13
|
branch-defaults: master: environment: null group_suffix: null deploy: artifact: target /jwt-spring-security-demo-1 .0.0-SNAPSHOT.jar global: application_name: spring-boot-demo default_ec2_keyname: spring-boot-demo default_platform: Java 8 default_region: eu-central-1 profile: spring-boot sc: git |
Создайте экземпляр Elastic Beanstalk
Если вы выполните «eb create» в приглашении и примете значения по умолчанию, вы получите свой собственный экземпляр Elastic Beanstalk с приложением Spring Boot (обратите внимание, что для запуска и запуска всего требуется несколько минут). Когда создание завершено, вы можете увидеть свой экземпляр Elastic Beanstalk в Консоли управления:
Протестируйте экземпляр Elastic Beanstalk
Когда вы сейчас запустите ‘eb open’, браузер начнет указывать на ваше приложение. Прямо сейчас мой говорит 502 Bad Gateway:
Осталась одна проблема, которую я должен решить. Стек по умолчанию поставляется с экземпляром EC2, на котором запущен Nginx в качестве обратного прокси-сервера, и он прослушивает порт 80. Мои приложения с весенней загрузкой работают на порту 8888, но этот порт недоступен извне (не открывается по умолчанию группа безопасности, которая была создана Elastic Beanstalk). Проблема может быть решена тремя способами (как минимум):
- Откройте порт 8888 на экземпляре EC2 и попросите Elastic Load Balancer «поговорить» с этим портом. Таким образом, мы обходим Nginx через порт 80.
- Настройте Nginx так, чтобы он пропускал входящий трафик через порт 80 на 8888.
- Сделайте наше приложение Spring Boot запущенным на порту 5000, поскольку по умолчанию Nginx также пересылает его.
Я выберу последний вариант для этого поста, чтобы конфигурация Elastic Beanstalk была простой. После изменения порта в файле application.yml, вот так:
server:
port: 5000
и перестроив приложение, я могу повторно развернуть его с помощью:
eb deploy
Теперь, когда я получаю доступ к URL-адресу « http://spring-boot-demo-dev2.eu-central-1.elasticbeanstalk.com/hello », я получаю ожидаемый результат:
Вот именно для этого поста. О AWS Elastic Beanstalk можно рассказать намного больше в сочетании с приложением Spring Boot, которое я покажу в следующих статьях.
Ссылка: | Запустите приложение Spring Boot на AWS с помощью Elastic Beanstalk от нашего партнера по JCG Паскаля Альмы в блоге Pragmatic Integrator . |