Terapkan Aplikasi Spring Boot ke AWS Beanstalk

1. Ikhtisar

Dalam tutorial ini, kami akan menunjukkan cara menerapkan aplikasi dari Bootstrap Aplikasi Sederhana menggunakan tutorial Spring Boot ke AWS Elastic Beanstalk.

Sebagai bagian dari ini, kami akan:

  • Instal dan konfigurasikan alat AWS CLI
  • Buat proyek Pohon Kacang dan penerapan MySQL
  • Konfigurasikan aplikasi untuk MySQL di AWS RDS
  • Terapkan, uji, dan skalakan aplikasi

2. Konfigurasi AWS Elastic Beanstalk

Sebagai prasyarat, kami harus mendaftarkan diri di AWS dan membuat lingkungan Java 8 di Elastic Beanstalk. Kami juga perlu menginstal AWS CLI yang memungkinkan kami untuk terhubung ke lingkungan kami.

Jadi, mengingat itu, kita perlu masuk dan menginisialisasi 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.

Terakhir, kita bisa memilih aplikasi:

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

Saat ini, CLI akan membuat file bernama .elasticbeanstalk / config.yml . File ini akan mempertahankan default untuk proyek tersebut.

3. Basis Data

Sekarang, kita dapat membuat database di AWS Web Console atau dengan CLI menggunakan:

eb create --single --database

Kami harus mengikuti petunjuk untuk memberikan nama pengguna dan kata sandi.

Dengan database kita dibuat, sekarang konfigurasikan kredensial RDS untuk aplikasi kita. Kita akan melakukannya di profil Spring bernama beanstalk dengan membuat src / main / resources / application-beanstalk.properties di aplikasi kita:

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 properti bernama rds.hostname sebagai variabel lingkungan yang disebut RDS_HOSTNAME . Logika yang sama akan berlaku untuk yang lainnya.

4. Penerapan

Sekarang, kita akan menambahkan Pohon Kacang - profil tertentu Maven ke pom.xml :

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

Selanjutnya, kami akan menentukan artefak ke dalam file konfigurasi Elastic Beanstalk .elasticbeanstalk / config.yml :

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

Dan terakhir, kami akan memasukkan dua variabel lingkungan ke dalam Elastic Beanstalk. Yang pertama akan menentukan profil Spring yang aktif, dan yang kedua akan memastikan penggunaan port default 5000 yang diharapkan oleh Beanstalk:

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

5. Penerapan dan Pengujian

Sekarang kami siap untuk membangun dan menerapkan:

mvn clean package spring-boot:repackage eb deploy 

Selanjutnya, kami akan memeriksa status dan menentukan nama DNS dari aplikasi yang diterapkan:

eb status

Dan keluaran kita harus seperti ini:

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

Kami sekarang dapat menguji aplikasi - perhatikan penggunaan kolom CNAME sebagai DNS untuk melengkapi 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-baik saja, 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. Menskalakan Aplikasi

Terakhir, kami menskalakan penerapan untuk menjalankan dua contoh:

eb scale 2

Pohon Kacang sekarang akan menjalankan 2 contoh aplikasi dan lalu lintas keseimbangan beban di kedua contoh.

Penskalaan otomatis untuk produksi sedikit lebih terlibat, jadi kita akan meninggalkannya untuk hari lain.

7. Kesimpulan

Dalam tutorial ini, kami:

  • Menginstal dan mengonfigurasi AWS Beanstalk CLI dan mengonfigurasi lingkungan online
  • Menerapkan layanan MySQL dan mengonfigurasi properti koneksi database
  • Membuat dan menerapkan aplikasi Spring Boot yang telah dikonfigurasi, dan
  • Menguji dan menskalakan aplikasi

Untuk lebih jelasnya, lihat dokumentasi Java Beanstalk.

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