Stellen Sie eine Spring Boot-Anwendung für AWS Beanstalk bereit

1. Übersicht

In diesem Tutorial zeigen wir Ihnen, wie Sie eine Anwendung von unserem Bootstrap einer einfachen Anwendung mithilfe des Spring Boot-Tutorials für AWS Elastic Beanstalk bereitstellen.

Als Teil davon werden wir:

  • Installieren und konfigurieren Sie die AWS CLI-Tools
  • Erstellen Sie ein Beanstalk-Projekt und eine MySQL-Bereitstellung
  • Konfigurieren Sie die Anwendung für MySQL in AWS RDS
  • Stellen Sie die Anwendung bereit, testen Sie sie und skalieren Sie sie

2. AWS Elastic Beanstalk-Konfiguration

Voraussetzung ist, dass wir uns bei AWS registriert und eine Java 8-Umgebung bei Elastic Beanstalk erstellt haben. Wir müssen auch die AWS CLI installieren, mit der wir eine Verbindung zu unserer Umgebung herstellen können.

Vor diesem Hintergrund müssen wir uns anmelden und unsere Anwendung initialisieren:

cd .../spring-boot-bootstrap eb init 
> Select a default region 1) us-east-1 : US East (N. Virginia) 2) us-west-1 : US West (N. California) 3) us-west-2 : US West (Oregon) 4) eu-west-1 : EU (Ireland) 5) eu-central-1 : EU (Frankfurt) 6) ap-south-1 : Asia Pacific (Mumbai) 7) ap-southeast-1 : Asia Pacific (Singapore) 8) ap-southeast-2 : Asia Pacific (Sydney) 9) ap-northeast-1 : Asia Pacific (Tokyo) 10) ap-northeast-2 : Asia Pacific (Seoul) 11) sa-east-1 : South America (Sao Paulo) 12) cn-north-1 : China (Beijing) 13) cn-northwest-1 : China (Ningxia) 14) us-east-2 : US East (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) (default is 3):

Wie oben gezeigt, werden wir aufgefordert, eine Region auszuwählen.

Schließlich können wir die Anwendung auswählen:

> Select an application to use 1) baeldung-demo 2) [ Create new Application ] (default is 2): 

Zu diesem Zeitpunkt erstellt die CLI eine Datei mit dem Namen .elasticbeanstalk / config.yml . Diese Datei behält die Standardeinstellungen für das Projekt bei.

3. Datenbank

Jetzt können wir die Datenbank in der AWS Web Console oder mit der CLI erstellen, indem wir:

eb create --single --database

Wir müssen den Anweisungen folgen, um einen Benutzernamen und ein Passwort anzugeben.

Nachdem unsere Datenbank erstellt wurde, konfigurieren wir jetzt die RDS-Anmeldeinformationen für unsere Anwendung. Wir tun dies in einem Spring-Profil mit dem Namen beanstalk, indem wir src / main / resources / application-beanstalk.properties in unserer Anwendung erstellen:

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

Spring sucht nach der Eigenschaft mit dem Namen rds.hostname als Umgebungsvariable mit dem Namen RDS_HOSTNAME . Die gleiche Logik gilt für den Rest.

4. Anwendung

Jetzt werden wir eine Bohnenstange hinzufügen - spezifische Maven Profil pom.xml :

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

Als Nächstes geben wir das Artefakt in der Elastic Beanstalk-Konfigurationsdatei .elasticbeanstalk / config.yml an :

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

Und schließlich werden wir zwei Umgebungsvariablen in Elastic Beanstalk aufnehmen. Das erste gibt die aktiven Spring-Profile an und das zweite stellt die Verwendung des von Beanstalk erwarteten Standardports 5000 sicher:

eb setenv SPRING_PROFILES_ACTIVE=beanstalk,mysql eb setenv SERVER_PORT=5000

5. Bereitstellung und Test

Jetzt können wir Folgendes erstellen und bereitstellen:

mvn clean package spring-boot:repackage eb deploy 

Als Nächstes überprüfen wir den Status und ermitteln den DNS-Namen der bereitgestellten Anwendung:

eb status

Und unser Output sollte ungefähr so ​​aussehen:

Environment details for: BaeldungDemo-env Application name: baeldung-demo Region: us-east-2 Deployed Version: app-181216_154233 Environment ID: e-42mypzuc2x Platform: arn:aws:elasticbeanstalk:us-east-2::platform/Java 8 running on 64bit Amazon Linux/2.7.7 Tier: WebServer-Standard-1.0 CNAME: BaeldungDemo-env.uv3tr7qfy9.us-east-2.elasticbeanstalk.com Updated: 2018-12-16 13:43:22.294000+00:00 Status: Ready Health: Green

Wir können jetzt die Anwendung testen - beachten Sie die Verwendung des CNAME-Felds als DNS, um die URL zu vervollständigen.

Fügen wir jetzt ein Buch zu unserer Bibliothek hinzu:

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

Und wenn alles in Ordnung ist, sollten wir etwas bekommen wie:

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 Expires: 0 Pragma: no-cache Server: nginx/1.12.1 Transfer-Encoding: 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. Skalieren der Anwendung

Zuletzt skalieren wir die Bereitstellung, um zwei Instanzen auszuführen:

eb scale 2

Beanstalk führt jetzt zwei Instanzen der Anwendung aus und verteilt den Datenverkehr auf beide Instanzen.

Die automatische Skalierung für die Produktion ist etwas komplizierter, daher lassen wir das für einen weiteren Tag.

7. Fazit

In diesem Tutorial haben wir:

  • Installierte und konfigurierte die AWS Beanstalk CLI und konfigurierte eine Online-Umgebung
  • Bereitstellung eines MySQL-Dienstes und Konfiguration der Datenbankverbindungseigenschaften
  • Erstellt und bereitgestellt unsere konfigurierte Spring Boot-Anwendung und
  • Getestet und skaliert die Anwendung

Weitere Informationen finden Sie in der Beanstalk Java-Dokumentation.

Wie immer ist der vollständige Quellcode unserer Beispiele hier auf GitHub.