Implementér en Spring Boot-applikation til AWS Beanstalk

1. Oversigt

I denne vejledning viser vi, hvordan du implementerer en applikation fra vores Bootstrap en simpel applikation ved hjælp af Spring Boot-tutorial til AWS Elastic Beanstalk.

Som en del af dette vil vi:

  • Installer og konfigurer AWS CLI-værktøjer
  • Opret et Beanstalk-projekt og MySQL-implementering
  • Konfigurer applikationen til MySQL i AWS RDS
  • Implementere, teste og skalere applikationen

2. AWS elastisk bønnestængelkonfiguration

Som en forudsætning skulle vi have registreret os på AWS og oprettet et Java 8-miljø på Elastic Beanstalk. Vi har også brug for at installere AWS CLI, som giver os mulighed for at oprette forbindelse til vores miljø.

Så i betragtning af det er vi nødt til at logge ind og initialisere vores ansøgning:

cd ... / spring-boot-bootstrap eb init 
> Vælg en standardregion 1) us-øst-1: USA-øst (N. Virginia) 2) us-vest-1: USA-vest (N. Californien) 3) us-vest-2: USA-vest (Oregon) 4) eu-vest-1: EU (Irland) 5) eu-central-1: EU (Frankfurt) 6) ap-syd-1: Stillehavsasien (Mumbai) 7) ap-sydøst-1: Stillehavsasien (Singapore) 8) ap-sydøst-2: Stillehavsasien (Sydney) 9) ap-nordøst-1: Stillehavsasien (Tokyo) 10) ap-nordøst-2: Stillehavsasien (Seoul) 11) sa-øst-1: Sydamerika (Sao Paulo ) 12) cn-nord-1: Kina (Beijing) 13) cn-nordvest-1: Kina (Ningxia) 14) us-øst-2: USA Øst (Ohio) 15) ca-central-1: Canada (Central) 16) eu-west-2: EU (London) 17) eu-west-3: EU (Paris) 18) eu-north-1: EU (Stockholm) (standard er 3):

Som vist ovenfor bliver vi bedt om at vælge en region.

Endelig kan vi vælge applikationen:

> Vælg et program, der skal bruges 1) baeldung-demo 2) [Opret ny applikation] (standard er 2): 

På dette tidspunkt, CLI opretter en fil med navnet .elasticbeanstalk / config.yml. Denne fil bevarer projektets standardindstillinger.

3. Database

Nu kan vi oprette databasen på AWS Web Console eller med CLI ved hjælp af:

eb oprette - enkelt - database

Vi bliver nødt til at følge instruktionerne for at angive et brugernavn og en adgangskode.

Med vores database oprettet, lad os nu konfigurere RDS-legitimationsoplysningerne til vores applikation. Vi gør det i en forårsprofil, der hedder bønnestængel ved at skabe src / main / resources / application-beanstalk.properties i vores ansøgning:

spring.datasource.url = jdbc: mysql: // $ {rds.hostname}: $ {rds.port} / $ {rds.db.name} spring.datasource.username = $ {rds.username} spring.datasource. adgangskode = $ {rds.password} 

Foråret vil søge efter den valgte ejendom rds.hostname som en miljøvariabel kaldet RDS_HOSTNAME. Den samme logik gælder for resten.

4. Ansøgning

Nu tilføjer vi en Beanstalkspecifik Maven-profil til pom.xml:

 beanstalk $ {project.name} -eb org.springframework.boot spring-boot-maven-plugin org.apache.maven.plugins maven-compiler-plugin ** / cloud / config / *. java 

Dernæst specificerer vi artefakten i konfigurationsfilen Elastic Beanstalk .elasticbeanstalk / config.yml:

deploy: artefakt: target / spring-boot-bootstrap-eb.jar 

Og endelig inkluderer vi to miljøvariabler i Elastic Beanstalk. Den første specificerer de aktive Spring-profiler, og den anden vil sikre brugen af ​​standardport 5000, som Beanstalk forventer:

eb setenv SPRING_PROFILES_ACTIVE = bønnestængel, mysql eb setenv SERVER_PORT = 5000

5. Implementering og test

Nu er vi klar til at opbygge og implementere:

mvn ren pakke spring-boot: ompakning eb implementere 

Dernæst kontrollerer vi status og bestemmer DNS-navnet på den implementerede applikation:

eb-status

Og vores produktion skal være noget som:

Miljøoplysninger for: BaeldungDemo-env Applikationsnavn: baeldung-demo Region: us-east-2 Implementeret version: app-181216_154233 Miljø-ID: e-42mypzuc2x Platform: arn: aws: elasticbeanstalk: us-east-2 :: platform / Java 8 kører på 64bit Amazon Linux / 2.7.7 Tier: WebServer-Standard-1.0 CNAME: BaeldungDemo-env.uv3tr7qfy9.us-east-2.elasticbeanstalk.com Opdateret: 2018-12-16 13: 43: 22.294000 + 00: 00 Status: Klar sundhed: Grøn

Vi kan nu teste applikationen - bemærk brugen af ​​CNAME-feltet som DNS for at udfylde URL'en.

Lad os tilføje en bog til vores bibliotek nu:

http POST //baeldungdemo-env.uv3tr7qfy9.us-east-2.elasticbeanstalk.com/api/books author = "Iain M. Banks"

Og hvis alt er i orden, skal vi få noget i retning af:

HTTP / 1.1 201 Cache-Control: no-cache, no-store, max-age = 0, must-revalidate Connection: keep-alive Content-Type: application / json; charset = UTF-8 Date: Wed, 19 Dec 2018 15:36:31 GMT Udløber: 0 Pragma: no-cache Server: nginx / 1.12.1 Overførsel-kodning: chunked X-Content-Type-Options: nosniff X-Frame-Options: DENY X-XSS-Protection: 1; mode = block {"author": "Iain M. Banks", "id": 5, "title": "The Player of Games"}

6. Skalering af applikationen

Endelig skalerer vi implementeringen til at køre to forekomster:

eb skala 2

Beanstalk kører nu to forekomster af applikationen og belastningsbalancetrafik på tværs af begge forekomster.

Automatisk skalering til produktion er lidt mere involveret, så vi lader det være en dag til.

7. Konklusion

I denne vejledning, vi:

  • Installeret og konfigureret AWS Beanstalk CLI og konfigureret et online miljø
  • Implementerede en MySQL-tjeneste og konfigurerede databaseforbindelsesegenskaberne
  • Bygget og implementeret vores konfigurerede Spring Boot-applikation, og
  • Testet og skaleret applikationen

For flere detaljer, se Beanstalk Java-dokumentationen.

Som altid er den komplette kildekode for vores eksempler her på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found