AWS beanstalk — это веб-сервис amazon, который выполняет большую часть конфигурации за вас и создает инфраструктуру, подходящую для горизонтально масштабируемого приложения. Вместо Beanstalk другим подходом будет настройка балансировщиков нагрузки и автоматических групп отмены, что требует немного опыта и времени AWS.
В этом уроке мы собираемся загрузить приложение jar с пружинной загрузкой, используя amazonastic beanstalk и пакет формирования облаков.
Чем меньше, тем больше, поэтому мы будем использовать в качестве шаблона практически то же приложение весенней загрузки, которое было взято из официального руководства Spring .
Единственным изменением будет изменение rootProject.name на beanstalk-deploy и некоторые изменения в структуре пакета. Загрузка проекта с GitHub достаточно.
Тогда мы можем построить и запустить проект
1
2
|
gradlew build java -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 .template aws 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 . |