AWS beanstalk — это веб-сервис amazon, который выполняет большую часть конфигурации за вас и создает инфраструктуру, подходящую для горизонтально масштабируемого приложения. Вместо Beanstalk другим подходом будет настройка балансировщиков нагрузки и автоматических групп отмены, что требует немного опыта и времени AWS.
В этом уроке мы собираемся загрузить приложение jar с пружинной загрузкой, используя amazonastic beanstalk и пакет формирования облаков.
Чем меньше, тем больше, поэтому мы будем использовать в качестве шаблона практически то же приложение весенней загрузки, которое было взято из официального руководства Spring .
Единственным изменением будет изменение rootProject.name на beanstalk-deploy и некоторые изменения в структуре пакета. Загрузка проекта с GitHub достаточно.
Тогда мы можем построить и запустить проект
|
1
2
|
gradlew buildjava -jar build/libs/beanstalk-deployment-1.0-SNAPSHOT.jar |
Следующим шагом является загрузка приложения на s3.
|
1
|
aws s3 cp build/libs/beanstalk-deployment-1.0-SNAPSHOT.jar s3://{you bucket name}/beanstalk-deployment-1.0-SNAPSHOT.jar |
Вам необходимо установить клиент эластичного бобового стебля, так как он очень помогает в большинстве операций с бобовыми стеблями.
Поскольку мы будем использовать Java 8, я получу список с эластичными средами beanstalk, чтобы получить правильное SolutionStackName.
|
1
|
aws elasticbeanstalk list-available-solution-stacks |grep Java |
Основываясь на результатах, я буду использовать имя стека «64bit Amazon Linux 2016.09 v2.3.0 под управлением Java 8».
Теперь мы готовы перейти к нашему скрипту облачной информации.
Мы укажем параметр, и это будет корзина, содержащая код приложения
|
1
2
3
4
5
|
"Parameters" : { "SourceCodeBucket" : { "Type" : "String" } } |
Затем мы укажем название приложения
|
1
2
3
4
5
6
|
"SpringBootApplication": { "Type": "AWS::ElasticBeanstalk::Application", "Properties": { "Description":"Spring boot and elastic beanstalk" } } |
Следующим шагом будет указание версии приложения
|
01
02
03
04
05
06
07
08
09
10
|
"SpringBootApplicationVersion": { "Type": "AWS::ElasticBeanstalk::ApplicationVersion", "Properties": { "ApplicationName":{"Ref":"SpringBootApplication"}, "SourceBundle": { "S3Bucket": {"Ref":"SourceCodeBucket"}, "S3Key": "beanstalk-deployment-1.0-SNAPSHOT.jar" } } } |
И тогда мы указываем наш шаблон конфигурации.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
"SpringBootBeanStalkConfigurationTemplate": { "Type": "AWS::ElasticBeanstalk::ConfigurationTemplate", "Properties": { "ApplicationName": {"Ref":"SpringBootApplication"}, "Description":"A display of speed boot application", "OptionSettings": [ { "Namespace": "aws:autoscaling:asg", "OptionName": "MinSize", "Value": "2" }, { "Namespace": "aws:autoscaling:asg", "OptionName": "MaxSize", "Value": "2" }, { "Namespace": "aws:elasticbeanstalk:environment", "OptionName": "EnvironmentType", "Value": "LoadBalanced" } ], "SolutionStackName": "64bit Amazon Linux 2016.09 v2.3.0 running Java 8" } } |
Последним шагом будет склеивание вышеуказанных свойств путем определения среды
|
1
2
3
4
5
6
7
8
9
|
"SpringBootBeanstalkEnvironment": { "Type": "AWS::ElasticBeanstalk::Environment", "Properties": { "ApplicationName": {"Ref":"SpringBootApplication"}, "EnvironmentName":"JavaBeanstalkEnvironment", "TemplateName": {"Ref":"SpringBootBeanStalkConfigurationTemplate"}, "VersionLabel": {"Ref": "SpringBootApplicationVersion"} } } |
Теперь вы готовы загрузить свой шаблон облачной информации и развернуть приложение beanstalk.
|
1
2
|
aws s3 cp beanstalkspring.template s3://{bucket with templates}/beanstalkspring.templateaws cloudformation create-stack --stack-name SpringBeanStalk --parameters ParameterKey=SourceCodeBucket,ParameterValue={bucket with code} --template-url https://s3.amazonaws.com/{bucket with templates}/beanstalkspring.template |
Вы можете скачать полный исходный код и шаблон облачной информации с Github .
| Ссылка: | Интегрируйте Spring boot и Elastic Beanstalk, используя Cloudformation от нашего партнера по JCG Эммануила Гкациоураса в блоге gkatzioura . |