【初心者必見】Eclipseで作成したJavaWebアプリケーションをAWSにデプロイする。その①

##初めに
AWSって何？ってところから一週間勉強してJavaのWebアプリケーションをデプロイした時の話をまとめる。簡単ではあるがAWSの用語の解説も挟んでいくので、記事を読んで実践する頃には基礎の基礎はインプットできるかと思う。

###環境
Windows10
その他の環境やverは下の図解にまとめてあるが、各々の環境に合わせて適宜変更しながら設定してほしい。

##前提
- AWSのアカウントを作っていること
- IAMユーザーを１つ作成していること

作り方は以下の記事を参照。
基本、作成したIAMユーザーで作業する。

https://qiita.com/kzykmyzw/items/ca0c3276dfebb401f7d8
##今回のゴール
- warファイルをAWSのサーバにデプロイして、DB連携を伴うアプリケーションが公開できる

##注意点
AWSに登録して一年はサービスの利用に無料枠が与えられるためほとんどの場合無料枠で事足りるが、<font color="Red">**AWSは従量課金制**</font>であるため、サーバーを立てっぱなしにしたり、インスタンスをたくさん作りすぎると知らない間に料金が発生する場合がある。
（<font color="Red">**一緒に勉強した友人は痛い出費を被った。**</font>）

アカウントを作成したら<font color="Red">**料金の上限設定を必ず行うこと。**</font>
その辺の詳細設定は次のリンクを参照。

https://qiita.com/t-kudo9/items/61fb0e3fc8a42a1ee928

##構築する環境の全体像
![スクリーンショット 2021-02-08 22.38.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/712635/247e0c95-067d-262d-067e-fe43fc7f0814.png)

##AWS関連の用語の説明
**VPC** (Amazon Vurtual Private Cloud)：AWS専用の仮想ネットワーク。本来は外部との接続はここでいろいろと設定をするが、今回はデフォルトで与えられているものを使用。サブネットとかはここで設定する。

**EC2** (Amazon Elastic Compute Cloud) : サーバ構築に必要なもの一式をクラウドで借りられるサービス。このサービスから作成したEC2インスタンスがAWS上の仮想サーバとなる。
ここに後からTomcatとか必要なものを入れていく。

**RDS** (Amazon Relational Database Service) : AWSのDBMS。結構種類がある。
今回はMySQL8.0.20を使用。

##STEP0 : AWSの下準備
IAMユーザでログインしたら画面右上のリージョンを確認する。これが東京になっていればOK。
その他の地域が設定されている場合には東京に設定し直す。
![スクリーンショット 2021-02-08 22.48.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/712635/b0925ac0-1a01-338a-3eda-435d41a9d5ef.png)

##STEP1 : セキュリティグループの作成
**セキュリティグループ** : EC2インスタンスに対して動作する仮想ファイアウォール。
詳細な説明はここを参照。
https://qiita.com/leomaro7/items/42967c080814dfc82139

まずはこれを設定していく。
AWSメニュー画面左上のサービス ＞ EC2
![スクリーンショット 2021-02-08 22.54.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/712635/3ce74951-1ae2-4793-12cd-8748ccce551a.png)

左のメニューバーから「セキュリティグループ」を選択。セキュリティグループの作成にて名前と説明を適当に記入。
![スクリーンショット 2021-02-08 22.54.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/712635/93f90d06-ed3a-d937-f7f4-4b65eab9b44a.png)

![スクリーンショット 2021-02-08 22.55.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/712635/087542b6-b459-daf7-8642-687b69cae0b8.png)

続いてインバウンドルールを以下のように設定。ざっくり言うと、ここからの接続は許可しますよーってやつ
![スクリーンショット 2021-02-08 22.55.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/712635/5f0764fa-97aa-85de-9a14-68a33447f346.png)

ここまでできれば作成ボタンを押してセキュリティーグループの作成を終える。

##STEP2 : RDSの作成
続いてRDSを作っていく。やるべきことは大きく２つ。

###①パラメータグループの設定
**パラメータグループ** : 文字コードや接続数を設定するところ

まずはサービス > RDS
![スクリーンショット 2021-02-08 23.01.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/712635/f04c5735-c8f8-4a8c-f214-878ec450f7c8.png)
ダッシュボードを開いたら左のメニューから「パラメータグループ」を選択し、「パラメータグループの作成」を押下
![スクリーンショット 2021-02-08 23.01.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/712635/23f91b7a-8057-fde5-1eb9-9e12f9a99abb.png)
![スクリーンショット 2021-02-08 23.06.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/712635/f9fa5958-ccf3-5393-c878-21bc0f532a6d.png)

まずは使用DBの設定。
![スクリーンショット 2021-02-08 23.07.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/712635/397f7c33-d023-1ff3-40e3-db6cbe18802f.png)

作成したら、パラメータアクションをプルダウンから「編集」へ
検索窓に「character_set」と入力して以下の設定をUTF-8mb4に変更して保存

- character_set_client
- character_set_connection
- character_set_database
- character_set_results
- character_set_server
![スクリーンショット 2021-02-08 23.11.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/712635/32c84f62-b149-2b70-914f-34a95ddfb582.png)

###②RDSの作成
RDSのメニューに戻り、「データベース」を選択し、次の画面で「データベースの作成」
![スクリーンショット 2021-02-08 23.12.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/712635/c1084ca2-bd13-2a97-028e-7da63dfcec36.png)
![スクリーンショット 2021-02-08 23.13.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/712635/94639114-7488-02db-acde-071c06c89ab6.png)

まずは使用するDBMSを設定。
<font color="Red">**この辺から操作を間違えやすいので気をつけてほしい（間違えるとやり直しは結構面倒）**</font>
![スクリーンショット 2021-02-08 23.15.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/712635/2e0fb981-71d2-0466-a15e-b755f4a1f5b9.png)

インスタンス名や、DBログイン時のユーザー名とパスワードなどを設定。
忘れないようにしっかりメモしておくこと。
![スクリーンショット 2021-02-08 23.16.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/712635/cc636e46-a9ce-9df2-a89a-f7743d285856.png)
特にこだわりがなければこの辺はデフォルトでOK
![スクリーンショット 2021-02-08 23.18.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/712635/74a504e6-f071-8662-e24f-8c4c954d4b6f.png)

続いて「追加の接続設定」
これは見逃しやすいので注意
![スクリーンショット 2021-02-08 23.18.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/712635/d3c98693-26f7-c8fa-ff3f-7f334611ca1f.png)

パブリックアクセス可能をありに。
セキュリティグループは先程作成したものを選択。
データベースポートは3306
![スクリーンショット 2021-02-08 23.20.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/712635/7b640868-5d17-2be2-e382-fd8bda0de226.png)

続いて「追加設定」
これも忘れやすい。
![スクリーンショット 2021-02-08 23.21.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/712635/46cc9fde-c823-627e-1a58-08b00ec92b8e.png)

アクセスするときのDB名と、先程作成したパラメータグループを設定。
![スクリーンショット 2021-02-08 23.22.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/712635/9af7371c-9a86-5995-d19c-c84ae383ec12.png)

ここまでできたらデータベースの作成を押下。しばらく作成に時間がかかり、完了すると次のようになる。
![スクリーンショット 2021-02-08 23.24.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/712635/fadd14e9-696b-a161-7656-45517c1c020a.png)

これでRDSは完成（お疲れ様でした）

##次回予告
長くなるので一旦ここで切る。次回は

- EC2インスタンスの作成
- TeraTermからEC2インスタンスにSSH接続
- MySQLやOpenJDK、Tomcatのインストール
- アプリのデプロイ

までやっていく。

続編はこちら
[【初心者必見】Eclipseで作成したJavaWebアプリケーションをAWSにデプロイする。その②](https://qiita.com/AIM-Z/items/4f94257bca30beec2cea)
[【初心者必見】Eclipseで作成したJavaWebアプリケーションをAWSにデプロイする。その③（最終回）](https://qiita.com/AIM-Z/items/97d52b7ed45bcc7e66be)


##最後に
ここまで読んでいただきありがとうございます。
ストック、LGTM、励みになります。
この記事が何かお役に立てれば幸いです。