Amazon Aurora Serverlessのインスタンスを作成し接続する

## 概要
AuroraServerlessのインスタンスを作成し、接続確認を行う。

## 環境
- Amazon Linux 2
- Aurora Serverless (MySQL 5.6互換)

## 前提条件
- VPCが作成されていること
- VPCにサブネットが2つ以上作成してあること
- RDSに接続するEC2インスタンスが作成されていること

## 手順
### サブネットグループの作成
DBサブネットグループはVPCに作成するサブネットのコレクションです。
VPCにサブネットが2つ以上作成してあることが必要となります。通常は、プライベートサブネットを指定します。

`DB サブネットグループの作成`をクリックします。
<img width="1407" alt="スクリーンショット 2018-11-22 2.38.20.png" src="https://qiita-image-store.s3.amazonaws.com/0/206741/39307a35-f6a8-8815-a3a5-9b0eee4e0a55.png">

以下の項目を入力します。

| 項目 | 値 |
|:----|:------------|
| 名前 | 任意 |
| 説明 | 任意 |
| VPC | 作成済みのVPCを選択 |


![スクリーンショット 2018-11-22 2.40.41.png](https://qiita-image-store.s3.amazonaws.com/0/206741/5532cd3f-e36f-9ecf-42c7-8dd6a0e0000f.png)

privateサブネットを追加します。
![スクリーンショット 2018-11-22 2.43.08.png](https://qiita-image-store.s3.amazonaws.com/0/206741/dc98efbb-5ef8-54df-31e7-2c948bdf6d8e.png)
`作成`をクリックして、DBサブネットグループの作成が完了です。

### パラメータグループの作成
DBパラメータグループは、各DBのパラメーターの設定を行うことができます。MySQLのmy.cnfのようなものです。

デフォルトで作成されたパラメータグループは変更することができないので、
変更する予定がある場合は独自のパラメータグループを作成する必要があります。

`パラメータグループの作成`をクリックします。
<img width="1400" alt="スクリーンショット 2018-11-22 3.07.49.png" src="https://qiita-image-store.s3.amazonaws.com/0/206741/30f074b8-6b4d-0380-f96e-6f8b5923e49b.png">

以下の項目を入力します。

| 項目                  | 値 |
|:---------------------|:------------|
| パラメータグループファミリー | aurora5.6 |
| タイプ  　　　　　　　　　　　　　　　　　　　　     | DB Cluster　Parameter Group |
| グループ名    　　　　　　　　　     | 任意 |
| 説明       　　　　　　　　　　　　　　　　　　  | 任意 |


タイプについて補足
タイプは、以下の2つを設定することが可能です。

- `DB Parameter Group`
- `DB Cluster　Parameter Group`

Aurora Serverlessの場合、自動的にクラスタが作成されます。
クラスタにパラメータを適用する`DB Cluster　Parameter Group`を選択します。

<img width="843" alt="スクリーンショット 2018-11-22 14.16.09.png" src="https://qiita-image-store.s3.amazonaws.com/0/206741/c7a85f91-4085-146f-299d-c3faf62deca6.png">

`作成`をクリックして、DBパラメータグループの作成が完了です。

### パラメータグループの設定
作成したパラメータグループを選択し、`パラメータの編集`をクリックします。
<img width="1136" alt="スクリーンショット 2018-11-25 15.19.54.png" src="https://qiita-image-store.s3.amazonaws.com/0/206741/c326bc95-f6d5-abd1-bf95-85ef791e09e6.png">

今回は、以下のパラメータを設定します。

| 名前                           | 値           | 説明                |
|:-------------------------------|:------------|:-------------------|
| character_set_client           | utf8mb4     |クライアントから送信する際の文字コード        |
| character_set_connection       | utf8mb4     |クライアントから送信した文字コードの変換先|
| character_set_database         | utf8mb4     |データベースの文字コード|
| character_set_filesystem       | utf8mb4     |ファイルシステムの文字コード|
| character_set_results          | utf8mb4     | サーバーがクライアントにクエリー結果を返信するときに使用する文字セット |
| character_set_server           | utf8mb4     | サーバーのデフォルト文字コード |
| collation_connection           | utf8mb4_bin | character_set_connectionに対する照合順序 |
| collation_server               | utf8mb4_bin | サーバーのデフォルトの照合順序 |
| character-set-client-handshake | 1           | クライアントから送信された文字コードを無視しない設定|
| time_zone                      | Asia/Tokyo  | 現在のタイムゾーン|

`変更のプレビュー`をクリックすると、修正したパラメータを確認できます。
修正内容に問題がなけれな、`変更の保存`をクリックします。

<img width="826" alt="スクリーンショット 2018-11-22 14.39.39.png" src="https://qiita-image-store.s3.amazonaws.com/0/206741/83f668ae-0014-f249-6fa2-b44415ba00ea.png">

パラメータグループの設定が完了しました。

### セキュリティグループの作成
`VPC` > `セキュリティグループ`を選択します。`Create security group`をクリックします。
<img width="390" alt="スクリーンショット 2018-11-25 16.29.58.png" src="https://qiita-image-store.s3.amazonaws.com/0/206741/536568e8-9706-68eb-3571-1c9b439c27b5.png">

項目を入力します。

| 項目 | 値 |
|:----|:------------|
| セキュリティグループ名 | 任意 |
| 説明 | 任意 |
| VPC | 作成済みのVPCを選択 |

![スクリーンショット 2018-11-25 16.33.55.png](https://qiita-image-store.s3.amazonaws.com/0/206741/81f43b09-b3c7-f277-d01b-bf0508f0c8db.png)
`Create`をクリックして作成完了です。

### セキュリティグループの設定
作成したセキュリティグリープを選択し、`Inbound Rules`タブを選択し`Edit rules`をクリックします。
![スクリーンショット 2018-11-25 16.39.24.png](https://qiita-image-store.s3.amazonaws.com/0/206741/1a69f1d3-2fe3-9361-aabe-d2fc0ade04cf.png)

以下の項目を設定します。

| 項目                  | 値 |
|:---------------------|:------------|
| タイプ    | MYSQL/Aurora |
| プロトコル | TCP |
| ポート範囲 |3306 |
| カスタム  | 接続を許可するインスタンスのセキュリティグループのグループID |

![スクリーンショット 2018-11-25 16.49.12.png](https://qiita-image-store.s3.amazonaws.com/0/206741/e7177211-61f2-0554-3447-8aa8b2b3f720.png)
`Save rules`をクリックして、セキュリティグループの作成が完了です。

### RDSの作成
`データベースの作成`をクリックします。
<img width="1408" alt="スクリーンショット 2018-11-25 17.00.36.png" src="https://qiita-image-store.s3.amazonaws.com/0/206741/7267e90b-082f-7d3a-ac8c-c8f17341eb4c.png">

エンジンのオプションで`Amazon Aurora`を選択します。
<img width="799" alt="スクリーンショット 2018-11-25 17.01.37.png" src="https://qiita-image-store.s3.amazonaws.com/0/206741/fe9493bd-d2fd-7f84-ecba-772289e96932.png">

今回は、`Aurora Serverless`を使用するので、エディションは`MySQL5.6との互換性`を選択します。
<img width="560" alt="スクリーンショット 2018-11-25 17.03.39.png" src="https://qiita-image-store.s3.amazonaws.com/0/206741/1602fa42-6944-1356-f211-aef76659d3f7.png">

`次へ`をクリックし、DB詳細を設定していきます。
Capacity typeは`Serverless`を選択します。
<img width="784" alt="スクリーンショット 2018-11-25 17.05.55.png" src="https://qiita-image-store.s3.amazonaws.com/0/206741/b1ec0e1d-7ff7-2b7b-edab-091336602335.png">

詳細設定を行います。
キャパシティの設定では、今回はデフォルトの値を使用します。
<img width="769" alt="スクリーンショット 2018-11-25 17.17.43.png" src="https://qiita-image-store.s3.amazonaws.com/0/206741/6ab917c4-543a-8bdd-78b5-8edcab16769e.png">

ネットワーク＆セキュリテの設定を行います。

- VPC : 作成済みのVPCを選択
- サブネットグループ : `サブネットグループの作成`で作成したサブネットグループを選択
- VPCセキュリティグループ : `セキュリティグループの作成`で作成したセキュリティグループを選択(デフォルトのVPCセキュリティグループは✖️ボタンで選択を解除)

![スクリーンショット 2018-11-25 17.21.06.png](https://qiita-image-store.s3.amazonaws.com/0/206741/f358f7b5-fdd9-a023-dbeb-78a7133f8e25.png)

追加設定を確認すると、`DBクラスターのパラメータグループ`には、`パラメータグループの作成`で作成したパラメータグループが設定されています。

![スクリーンショット 2018-11-25 17.28.07.png](https://qiita-image-store.s3.amazonaws.com/0/206741/989d4012-d1cd-9327-e7e3-d8b37199b47f.png)

以上で、設定は完了です。`データベースの作成`をクリックします。
しばらくすると、DBクラスターの作成が完了します。
<img width="1149" alt="スクリーンショット 2018-11-25 17.44.05.png" src="https://qiita-image-store.s3.amazonaws.com/0/206741/f7d76230-b2d4-0ff7-3a09-debc8972987e.png">

## DBへの接続を確認
WEBサーバーがあるEC２インスタンスに、SSHで接続します。

## MySQLをインストール
すでにMySQLがインストールしてある場合は、このステップはスキップしてください。

```
$ sudo yum install -y mysql
```

## DBに接続
DBへの接続コマンドは以下の通りです。

```
mysql -h {ENDPOINT} -P 3306 -u {Username} –p {Password}
```

DBクラスターの詳細より、データベースのエンドポイントを確認します。
![スクリーンショット 2018-11-25 18.00.02.png](https://qiita-image-store.s3.amazonaws.com/0/206741/2e42d019-0532-2708-d704-d12d704e1d9d.png)


MySQLに接続が成功すると、以下のようなメッセージが表示されます。
初回起動時は、20秒ほど時間がかかります。

```
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 5.6.10 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
```

以上で、DBへの接続確認が完了しました。

## 参考
- [Aurora Serverlessが一般利用可能になったので試してみた | クラスメソッド](https://dev.classmethod.jp/cloud/aws/aurora-serverless-mysql-generally-available/)