Contents
ELB+BeanstalkでSpringBoot+RDSの概要
Beanstalkを使ってSpringBootアプリを構築するのは、
最も簡単にAWS上にアプリをデプロイする方法だと考えます。
手順としても、
・RDSを作成する
・SpringBootの.jarを作成する
・BeanstalkにSpringBootの.jarをアップする
と言う単純なものです。
Step1.RDSを作成する
Amazon RDSでMySQLやPostgreSQLのインスタンスを作成してください。
ステータスが「利用可能」であることを確認します。
エンドポイントを控えておきます。
Step2.SpringBootの.jarを作成する
次に、SpringBootの.jarを作成します。
gradle bootJar で作成しますが、設定ファイルを編集しておきます。
spring:
## DB接続情報
dataSource:
url: jdbc:mysql://okozukai-db.cgzqjfdvnh64.ap-northeast-1.rds.amazonaws.com:3306/okozukai
username: okozukaiadmin
password: lknuve7gAre%
driver-class-name: com.mysql.cj.jdbc.Driver
# サーバー設定
server:
port: 5000
DB接続先をRDSのエンドポイントに変更します。
サーバーのポートは5000番を設定しておく必要があります。
Beanstalkでは、EC2上にnginxが構築され、
nginxは80番を5000番ポートにプロキシされるようになっているからです。
gradle build
や gradle bootJar
を実行すると、
build/libs 配下にxxxxx-0.0.1-SNAPSHOT.jarができます。
Step3.BeanstalkにSpringBootの.jarをアップする
.jarができたら早速Beanstalkにアップします。
Elastic Beanstalkの画面から、環境>新しい環境の作成ボタンを押します。
「環境枠の選択」は「ウェブサーバー環境」を選択します。
ウェブサーバー環境の作成>アプリケーション情報>アプリケーション名 はあなたのアプリのアプリ名を任意の形式で入力します。
環境情報>環境名はそのままでOKです。
環境情報>ドメインは空白のままでOKです。
本番では環境名は、
xxxxapp-env-develop
xxxxapp-env-test1
xxxxapp-env-test2
xxxxapp-env-test3
xxxxapp-env-staging
xxxxapp-env-production
のような使われ方になります。
プラットフォーム>プラットフォームは「Java」を選択します。
(java -jar コマンド
が使用できれば良いため。)
アプリケーションコード>コードのアップロードを選択して、
ソースコード元>ローカルファイルからファイルを選択して、
作成しておいた.jarをアップします。
最後にオレンジに環境の作成ボタンを押します。
数分したら起動されています。
Beanstalkの画面のサイドバー環境を押します。
すると、すべての環境に作成した環境が表示されています。
URLを押してください。
すると、アプリが使用できるようになっているはずです。
DB接続のある機能を使用して、RDSとも接続できることを確認してください。
手順は以上です。
EC2を複数台にしてELBを適用するには?
上記の手順では、指定しなかったため、EC2は1台作成されています。
EC2の台数を指定して、ELBを適用する手順を示します。
環境の作成のボタンの横に「より多くのオプションの設定」があるので、押してください。
プリセットが、デフォルトでは単一インスタンスなので、EC2は1インスタンスとなっていました。
台数を指定するため、カスタム設定を選択します。
容量の変更>Auto Scaling グループにインスタンス数を指定できる箇所があるので、希望の最小〜最大を指定します。
プリセットをカスタム設定にした時点で、ロードバランサーが設定されます。
この状態で、環境の作成を完了してください。
EC2のインスタンスは指定した最小数が起動されています。
ロードバランサーが作成されています。
インスタンス数を増減させるために、Auto Scalingグループが作成されています。
参考リンク
AWS デベロッパーガイド Elastic Beanstalk での Java の開始方法
Spring Boot アプリケーションのデプロイ 1.5.1. AWS Elastic Beanstalk