Springで作成したアプリをAWSのRDSとElastic Beanstalkを用いてデプロイする方法①

#はじめに
デプロイ経験がない筆者でもSpringで作成したアプリケーションをAWSのElasticBeanstalkとRDSを用いて無事にデプロイすることができたため、共有及び備忘録として執筆します。
①では、RDSでのDB作成を執筆します。
②では、MySQLの設定とElasticBeanstalkの設定について執筆します。

#作成期間と作業
作成期間は約３週間ほどです。

作成するにあたって行った作業は下記の通りです。

①Udemyの「AWS：ゼロから実践するAmazon Web Services。手を動かしながらインフラの基礎を習得」を受講してEC2やRDSについての知識をつける。
②デプロイ方法について日本語サイトを見てもうまくいかなかったため、Udemyの「Deploy Java Spring Apps Online to Amazon Cloud (AWS)」を受講してデプロイ方法について学ぶ。
※こちらの講座は英語字幕付きのため、聞き取れなくてもなんとか理解できます。
③Springの公式ドキュメントも参考にしながら、実際に自分が作成したアプリケーションをデプロイ。



##Elastic Beanstalkとは
運用に必要な環境の作成を簡単に構築できるPaaSであり、ファイルをアップロードするだけでWEBアプリケーションとして動作させることができるAWSのサービス。

#前提知識
・AWSアカウント作成
・Java実行環境
・maven環境
・RDS作成

#環境
PCのOS:macOS Big Sur 11.5.2
Spring:2.5.4
Java：OpenJDK 11.0.2
DB:MySQL 8.0.23(AWSのRDS上で起動)

#RDSの設定
RDSを作成する手順について下記に記載します。
##RDSの作成
作成方法は標準作成、エンジンはMySQLを選択
![スクリーンショット 2021-09-03 10.56.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1912583/6ed0fee7-eb01-305a-8e6b-02aa5a7c4a3f.png)
MySQLのバージョンは8.0.23を選択（バージョンの互換性には注意）
デプロイするだけのため、無料利用枠を使用する。
![スクリーンショット 2021-09-03 10.57.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1912583/ccf92ebb-cda6-820a-d377-df2add4af70c.png)

インスタンス識別子は今後、RDSを使う際の名前になる。任意の名前をつける。
マスターユーザー名、パスワードはDBに接続する際に必要になる情報である。
ここも任意のユーザー名とパスワードを入力する。
![スクリーンショット 2021-09-03 10.57.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1912583/0c38dd1d-8575-17c7-3de0-0ba8417893a3.png)

DBインスタンスクラスはバースト可能クラスを選択する。
ストレージは汎用（SSD）の２０GiBを設定する。
ストレージの自動スケーリングは今回は特に必要ないためチェックを外す。
![スクリーンショット 2021-09-03 10.57.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1912583/6bc25230-d097-6947-afa9-86505ccfa0cd.png)

可用性と耐久性は特に設定なし。（無料枠のためそもそも使えない）
![スクリーンショット 2021-09-03 10.58.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1912583/97a26f17-e4f6-c824-07c1-39714b1c2fc2.png)

VPCとサブネットグループはデフォルトのものを利用する。
パブリックアクセスは、ありにする。理由はDBへデータを登録する際にパブリックからアクセスする必要があるため。
![スクリーンショット 2021-09-03 11.00.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1912583/2d0c4b0d-3477-f521-d024-b9c381995d4f.png)

VPCのセキュリティグループはdefaultのままで、アベイラビリティーゾーンの指定はなしを選択する。
![スクリーンショット 2021-09-03 11.00.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1912583/40a3a9c9-ff1a-02c6-9e92-470b10b6b924.png)

データベース認証はパスワード認証を選択する。
![スクリーンショット 2021-09-03 11.00.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1912583/59d87450-a690-3c99-88ae-c66d7f5ecd78.png)

追加設定は特に設定しない。
![スクリーンショット 2021-09-03 11.01.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1912583/93409b1f-6756-35f2-9fa8-d19cbef77d09.png)

データベースを作成を押下して数分経つとデータベースが作成される。
![スクリーンショット 2021-09-03 11.20.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1912583/befadbc5-8baa-8c4d-883f-f98a04ed214c.png)

##RDSのインバウンド設定
作成したDBのセキュリティグループのインバウンドルールを変更する。
理由は、後ほど利用するMySQLWorkBenchを利用するため。
ソースタブをクリックしてAnywhereを選択して保存する。
![スクリーンショット 2021-09-03 11.34.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1912583/85f0e093-a0e1-3023-378a-7023892e4f5b.png)

#参考


https://www.udemy.com/course/aws-and-infra/

https://www.udemy.com/course/deploy-java-spring-apps-online/

https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#application-properties.transaction.spring.jta.atomikos.connectionfactory.borrow-connection-timeout