Terapkan Aplikasi Spring Boot ke AWS Beanstalk

1. Gambaran keseluruhan

Dalam tutorial ini, kami akan menunjukkan bagaimana menyebarkan aplikasi dari Bootstrap a Simple Application menggunakan tutorial Spring Boot ke AWS Elastic Beanstalk.

Sebagai sebahagian daripada ini, kami akan:

  • Pasang dan konfigurasikan alat AWS CLI
  • Buat projek Beanstalk dan penggunaan MySQL
  • Konfigurasikan aplikasi untuk MySQL dalam AWS RDS
  • Terapkan, uji, dan skala aplikasi

2. Konfigurasi AWS Elastic Beanstalk

Sebagai prasyarat, kita seharusnya mendaftarkan diri kita di AWS dan membuat persekitaran Java 8 di Elastic Beanstalk. Kita juga perlu memasang AWS CLI yang membolehkan kita berhubung dengan persekitaran kita.

Oleh itu, kita perlu log masuk dan memulakan aplikasi kita:

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):

Seperti yang ditunjukkan di atas, kami diminta untuk memilih wilayah.

Akhirnya, kita boleh memilih aplikasi:

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

Pada masa ini, CLI akan membuat fail bernama .elasticbeanstalk / config.yml . Fail ini akan mengekalkan lalai untuk projek.

3. Pangkalan Data

Sekarang, kita boleh membuat pangkalan data di AWS Web Console atau dengan CLI menggunakan:

eb create --single --database

Kami perlu mengikuti arahan untuk memberikan nama pengguna dan kata laluan.

Dengan pangkalan data kami dibuat, mari konfigurasikan sekarang kelayakan RDS untuk aplikasi kami. Kami akan melakukannya di profil Spring bernama beanstalk dengan membuat src / main / resources / application-beanstalk.properties dalam aplikasi kami:

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

Spring akan mencari harta tanah yang bernama rds.hostname sebagai pemboleh ubah persekitaran yang disebut RDS_HOSTNAME . Logik yang sama akan berlaku untuk yang lain.

4. Permohonan

Sekarang, kita akan menambah Beanstalk - profil tertentu Maven untuk pom.xml :

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

Seterusnya, kami akan menentukan artifak ke dalam fail konfigurasi Elastic Beanstalk .elasticbeanstalk / config.yml :

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

Dan akhirnya, kami akan memasukkan dua pemboleh ubah persekitaran ke dalam Elastic Beanstalk. Yang pertama akan menentukan profil Spring aktif, dan yang kedua akan memastikan penggunaan port lalai 5000 yang diharapkan oleh Beanstalk:

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

5. Penyebaran dan Pengujian

Sekarang kami bersedia untuk membangun dan menggunakan:

mvn clean package spring-boot:repackage eb deploy 

Seterusnya, kami akan memeriksa status dan menentukan nama DNS aplikasi yang digunakan:

eb status

Dan output kami harus seperti:

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

Kita sekarang dapat menguji aplikasi - perhatikan penggunaan bidang CNAME sebagai DNS untuk melengkapkan URL.

Mari tambahkan buku ke perpustakaan kami sekarang:

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

Dan, jika semuanya baik, kita harus mendapatkan sesuatu seperti:

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. Meningkatkan Permohonan

Terakhir, kami meningkatkan penyebaran untuk menjalankan dua kejadian:

eb scale 2

Beanstalk sekarang akan menjalankan 2 contoh aplikasi dan memuatkan keseimbangan lalu lintas di kedua-dua keadaan.

Penimbangan automatik untuk pengeluaran sedikit lebih banyak, jadi kami akan membiarkannya untuk hari yang lain.

7. Kesimpulannya

Dalam tutorial ini, kami:

  • Memasang dan mengkonfigurasi AWS Beanstalk CLI dan mengkonfigurasi persekitaran dalam talian
  • Menggunakan perkhidmatan MySQL dan mengkonfigurasi sifat sambungan pangkalan data
  • Membangun dan menggunakan aplikasi Spring Boot kami yang dikonfigurasi, dan
  • Menguji dan meningkatkan aplikasi

Untuk maklumat lebih lanjut, lihat dokumentasi Beanstalk Java.

Seperti biasa, kod sumber lengkap contoh kami ada di sini, di GitHub.