Aurora ServerlessでWordPressのセットアップできた

# はじめに
`Aurora Serverless`をWordPressのデータベースとして使用できるかな？

## 結果として

EC2と同じVPC,サブネットグループに設定できれば、`Aurora Serverless` 問題なく使えました。

## ようやくリリースされたAurora Serverless

2017年のAws re:Inventで、2018年の早いうちにリリースされると言われてたAurora Serverlessが2018年8月にリリースされました。すごく待ってました。S3 Selectがもしかして`Aurora Serverless`なのかな？と思ったもののS3 SelectはどちらかといえばDynamoDB風だったので、RDBとしてはちょっと心もとない。

# AWS設定
## VPCとSubnetとセキュリティグループ

あらかじめ設定をしておいたほうがよいです。`Aurora Serverless`のクラスタ設定ウィザード中でも登録できるのですが若干ハマりポイントがあります。

## Aurora Serverless

1. Create database
    - エンジンのオプション：Amazon Aurora
    - エディション：MySQL 5.6 との互換性
        - `Aurora Serverless capacity is only available with this edition.`  
  Serverlessはこっちを選んでねとのことなので、MySQL5.6を選択。

2. DB 詳細の指定 > 設定
    - Capacity type: Serverless
        - `必要なリソースの最小量を最大量を指定すると、Aurora によってデータベースの負荷に基づきキャパシティーがスケールされます。`   
        具体的なキャパシティー(主に使用メモリ量)を次のステップで設定します。
    - DB クラスター識別子 …… DBクラスターの名前
    - マスターユーザの名前 …… rootユーザーとするID
    - マスターパスワード, パスワードの確認 …… そのパスワード

3. [詳細設定] の設定 > キャパシティーの設定
    - 最小 Aurora キャパシティーユニット, 最大 Aurora キャパシティーユニット
        - キャパシティーユニット:`2` …… 4GBのメモリを持つDBインスタンス・コンテナ。今回はWordPressがインストールできるか？が検証目標なので最小値の`2`を設定しています。（キャパシティーユニットによってコネクション数などが変わってくるのかな？）
    - スケーリングの追加設定
        - 初期設定：5分（最大24時間）

4. ネットワーク & セキュリティ
    - Virtual Private Cloud (VPC)
    - サブネットグループ
    - VPC セキュリティグループ
        - 毎度おなじみのAWS内ネットワーク設定です。自動で作ることもできるのですが、その場合、1VPCで3サブネットグループ(各AZに1つずつ)と1つのVPCセキュリティグループが生成され、VPCセキュリティグループには`MySQL/Aurora(3306)`の接続元IPが、ユーザー設定してるときのIPアドレスが自動的に設定されます。

5. Database endpointをメモする
    6. `[[DB クラスター識別子]].cluster-1q2w3e4r5t6y7u8i.ap-northeast-1.rds.amazonaws.com` みたいな文字列があります。後で使います。



以上でAurora Serverlessの設定が完了です。

## EC2インスタンス

1. Aurora Serverlessで設定した`ネットワーク & セキュリティ`と同じVPC,サブネットグループにインスタンスを割り当て。

2. phpとMySQLクライアントが使えるように設定

```sh
$ sudo yum install php72 php72-mysql 
$ sudo yum install mysql
```

3. Apache/nginxのhttpdをインストール
4. WordPressをダウンロード＆展開
5. httpdでWordPressを表示できるように設定

6. MySQLクライアントからDBクラスターに接続、そしてデータベースの作成

```sh
$ mysql -u [[マスターユーザの名前]] -p -h [[DB クラスター識別子]].cluster-1q2w3e4r5t6y7u8i.ap-northeast-1.rds.amazonaws.com 
```

データベースを作ります。そしてDB用ユーザーIDも。
完了。

### その他
`Aurora Serverless`の作成ウィザード内でVPCを作成した場合、`MySQL/Aurora(3306)`の接続元IPが制限された状態で登録されています。同じVPC,サブネットでもつながらないときは、セキュリティグループの該当サブネットのIP範囲がインバウンドルールに含まれていることを確認したほうが良いです。

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

## 設置したWordPressの設定

1. いつもの設定。
    - DB名 …… 作成したデータベース
    - ユーザー名 …… DB用ユーザーID
    - パスワード …… DB用ユーザーのパスワード
    - 接続先 …… `[[DB クラスター識別子]].cluster-1q2w3e4r5t6y7u8i.ap-northeast-1.rds.amazonaws.com `
    - 接頭語 …… `wp_`

完了。

 
# WordPress設定

## 一般公開するなら気にしたいこと
- できる限りWordPressからデーターベースに接続させないようにする。
    - ディスクキャッシュ系プラグインを導入 & CDNの活用
    - 検索をしないでも使いやすいメニュー構成や各種サイト内リンク

# 料金
## ログ
- WordPressをインストール＆日本語テーマのテストデータをインポート。
- 東京リージョンで5分間を3回、動かした感じです。

```
Sat Aug 11 22:32:40 GMT+900 2018	The DB cluster is paused.
Sat Aug 11 22:31:32 GMT+900 2018	The DB cluster is being paused.
Sat Aug 11 22:17:33 GMT+900 2018	The DB cluster is resumed.
Sat Aug 11 22:17:29 GMT+900 2018	DB instance restarted
Sat Aug 11 22:17:10 GMT+900 2018	The DB cluster is being resumed.
Sat Aug 11 21:41:56 GMT+900 2018	The DB cluster is paused.
Sat Aug 11 21:40:48 GMT+900 2018	The DB cluster is being paused.
Sat Aug 11 21:35:12 GMT+900 2018	DB instance restarted
```

3時間のスケールで表示しています。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/38845/0080fa69-b875-b7e5-25c0-1595725c8309.png)

## かかったコスト
料金に反映されたので掲載。お安い。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/38845/720a5458-2c69-8230-e74f-bbcfdfe29a51.png)

# 終わりに

チューニングされた高スペックなMySQLが従量課金で使えるのはスゴイです。日次に集めたデータを週末にまとめて集計する用途には使えそう。IoTでリアルタイムでは必要のないデータとかS3を格納して、バッチ処理してデータ登録・集計、DUMPを出力して参照用DBに登録するとか面白そうです。