【AWS】RDS作成前の事前準備（Part１）

[**【TOPへ戻る】**](https://qiita.com/ponponpoko/items/4e1304bf3d9901d1eaf0)
　[**Part１：RDS作成前の事前準備**](https://qiita.com/ponponpoko/items/4b57170e5617f3259300)
　[**Part２：RDS MySQLの作成**](https://qiita.com/ponponpoko/items/2187f2eef73135a18a59)
　[**Part３：WebサーバーからRDS MySQLに接続**](https://qiita.com/ponponpoko/items/af684509bc553986d1ac)
# Part１：RDS作成前の事前準備
まず最初にRDSを作成するにあたって、下記を準備します。

##### 【セキュリティグループの作成（EC2からRDSにアクセスするため）】

EC2コンソールかVPCコンソールから、セキュリティグループの作成を行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2727351/e35eed79-40f6-b698-530b-0cdcdd4f9805.png)
セキュリティグループは下記の値で設定し、
設定後「セキュリティグループの作成」をクリックすることで作成できます。

【VPC】
　\- Webサーバーと同じVPCを選択

【インバウンドルール】
　\- タイプ：MYSQL/Aurora （<font color="Red">今回のRDSは、MySQLを使用します。</font>）
　\- ソース：カスタムを指定
　\- 虫眼鏡：Webサーバーにアタッチしているセキュリティグループを指定
　 <font color="Red">※WebサーバーのIPアドレスを指定して問題は無い。</font>


　\- その他は、お好みで！！
　　<font color="Red">※ アウトバンドルールは、デフォルト値のままです。</font>

:::note info
[・AWSのセキュリティグループにセキュリティグループを関連付けるとどうなるか？](https://ja.stackoverflow.com/questions/23604/aws%E3%81%AE%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97%E3%81%AB%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97%E3%82%92%E9%96%A2%E9%80%A3%E4%BB%98%E3%81%91%E3%82%8B%E3%81%A8%E3%81%A9%E3%81%86%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%E3%81%8B)
[・セキュリティグループついての資料](https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/VPC_SecurityGroups.html)
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2727351/3ad2928d-93df-e860-ce7d-bf843f147cd1.png)
##### 【２つ以上のAZに一つ以上のサブネットの作成（RDS作成するための必須事項）】

RDSを作成するには、シングル-AZ構成 / マルチ-AZ構成 関係なしに2つ以上の異なるAZでサブネットを作成し、それを基にサブネットグループを作成する必要があります。
<font color="Red">※ でなければ、RDSは作成できません。</font>
今回は、２つのAZにそれぞれプライベートサブネットを作成しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2727351/75f32d3d-8b89-0d73-9bf8-b708e39151dd.png)

##### 【サブネットグループの作成（RDS作成するための必須事項）】

サブネットグループは、RDSインスタンスが配置されるサブネットをグループ化したものです。サブネットは２つ以上必要で、また２つ以上の異なるAZに跨っている必要があります。

:::note info
[【AWSドキュメント】](https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html)
～ VPC 内の DB インスタンスの使用 ～
VPC では、少なくとも 2 つのサブネットを指定する必要があります。これらのサブネットは、DB インスタンスをデプロイする AWS リージョン 内の 2 つの異なるアベイラビリティーゾーンに存在している必要があります。

～ DB サブネットグループの使用 ～
各 DB サブネットグループには、特定の AWS リージョン 内の少なくとも 2 つのアベイラビリティーゾーンにサブネットが必要です。VPC に DB インスタンスを作成するときに、DB サブネットグループを選択する必要があります。
:::

まず最初にRDSコンソールから「サブネットグループ」クリックし、遷移した画面から「DBサブネットグループを作成」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2727351/41c16bec-a5c8-f4b9-a040-34706fb54824.png)
サブネットグループは下記の値で設定し、
設定後「作成」をクリックすることで作成できます。

【VPC】
　\- Webサーバーと同じVPCを選択

【サブネットを追加】
　\- アベイラビリティゾーン：異なる２つ以上のAZを選択
　\- サブネット：異なるAZのプライベートサブネットを２つ選択

　\- その他は、お好みで！！
　　<font color="Red">※ 全ての項目を入れないとエラーとなる。</font>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2727351/b5957393-d622-78b7-a9b5-f461830ccbd8.png)
##### 【パラメータグループの作成（DBパラメーターを変更する場合に必要となるため）】

パラメーターグループとは、１つ以上のインスタンスに適用される[DBエンジン](https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/Welcome.html)の設定値(パラメータ)を管理するコンテナ(管理するための箱)のことです。

<font color="Red">※ パラメータは、DBに割り当てるメモリやI/O制御などのリソース量のこと
</font><font color="Red">※ RDS作成時にデフォルトで作成されるパラメータグループは設定変更は不可</font>
<font color="Red">※ パラメータグループを変更(付替え)するにはRDSの再起動が必要</font>



:::note info
[パラメータグループを使用する（AWSドキュメント）](https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_WorkingWithParamGroups.html)

DB パラメータグループは、1 つ以上の DB インスタンスに適用されるエンジン設定値のコンテナとして機能します。DB クラスターパラメータグループが、マルチ AZ DB クラスターにのみ適用されます。マルチ AZ DB クラスターでは、DB クラスターパラメータグループの設定が、クラスター内のすべての DB インスタンスに使用されます。

DB パラメータグループを指定せずに DB インスタンスを作成すると、DB インスタンスはデフォルトの DB パラメータグループを使用します。同様に、DB クラスターパラメータグループを指定せずにマルチ AZ DB クラスターを作成すると、DB クラスターではデフォルトの DB クラスターパラメータグループが使用されます。デフォルトのパラメータグループのパラメータ設定は変更できません。

:::
まず最初にRDSコンソールから「パラメータグループ」クリックし、遷移した画面から「パラメーターグループを作成」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2727351/34a0c823-4d7e-20cb-e21a-7b9e1793b078.png)
今回はシングル-AZでRDSを作成するので、「DBパラメーターグループ」のみを作成します。

<font color="Red">※「DBクラスターパラメーターグループ」は、[Multi-AZ DB Cluster構成](https://dev.classmethod.jp/articles/rds-multi-az-db-cluster-ga/)に使用する。
　 ちなみにDBインスタンスのDBクラスターに関連付けられているパラメータグループです。
</font>
【パラメーターグループファミリー】
　\- mysql8.0（<font color="Red">今回のRDSは、MySQLを使用します。</font>）

【タイプ】
　\- DB Parameter Group

　\- その他は、お好みで！！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2727351/68beb789-c4d4-93e8-c925-0d9450d7ffc6.png)
作成後、下記の様にしてパラメーターを変更することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2727351/e454f8c2-ccfe-f754-7a75-42f3e176ae7d.png)

:::note info 
**【My SQL のパラメーターに関しては、下記の情報をどうぞ】**
- [MySQL のパラメータ（AWSドキュメント）](https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/Appendix.MySQL.Parameters.html)
- [5.1.9.2 動的システム変数（MySQL公式ドキュメント）](https://dev.mysql.com/doc/refman/8.0/en/dynamic-system-variables.html)
- [15.14 InnoDB の起動オプションとシステム変数（MySQL公式ドキュメント）](https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html)

:::

##### 【オプショングループの作成（DB追加機能を付与する場合に必要となるため）】

オプショングループとは、DBエンジンの拡張機能を設定することができるものである。
<font color="Red">※ デフォルトオプショングループは変更不可</font>

【[**MySQLの場合**](https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/Appendix.MySQL.Options.html)】
　\- MariaDB 監査プラグインのサポート
　\- MySQL の memcached サポート

:::note info
[オプショングループを使用する（AWSドキュメント）](https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_WorkingWithOptionGroups.html)

DB エンジンによっては、データおよびデータベースの管理を容易にしたり、データベースのセキュリティを強化する追加の機能が用意されている場合があります。Amazon RDS は、オプショングループを使用してこれらの機能の有効化と設定を行います。

オプショングループには、特定の Amazon RDS DB インスタンスに使用できる機能 (オプション) を指定できます。オプションの設定では、そのオプションの動作を指定できます。DB インスタンスをオプショングループに関連付けると、指定したオプションとそれらの設定がその DB インスタンスに対して有効になります。
:::
まず最初にRDSコンソールから「オプショングループ」クリックし、遷移した画面から「グループを作成」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2727351/3d1d4578-fcc2-f942-141e-dcaec4dbc693.png)
オプショングループは下記の値で設定し、設定後「作成」をクリックすることで作成できます。

【エンジン】
　\- mysql を選択 （<font color="Red">今回のRDSは、MySQLを使用します。</font>）

【メジェーエンジンバージョン】
　\- 8.0 を選択 （<font color="Red">使用するMySQLのバージョンは、8.0です。</font>）

　\- その他は、お好みで！！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2727351/196e5138-2588-5545-e1c1-8e6b4ace95ed.png)
作成すると、デフォルトのオプショングループも作成されます。
<font color="Red">※ デフォルトのオプショングループは、削除も修正もすることができません。</font>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2727351/890992da-7ff9-6e16-8453-ccdda7ad3f27.png)
[**Part２：RDS MySQLの作成 に続く・・・・。**](https://qiita.com/ponponpoko/items/2187f2eef73135a18a59)

# 備考
- [RDSパラメータグループに関して](https://smallit.co.jp/blog/632/)
- [[AWS] 0から理解するRDSメンテナンス入門](https://www.inomaso.com/post/2020/12/aws-rds-maintenance-introduction/)
- [AWS RDSのデフォルトのパラメータグループは使用しない！](https://it-ouji.com/2021/02/16/aws-rds%E3%81%AE%E3%83%87%E3%83%95%E3%82%A9%E3%83%AB%E3%83%88%E3%81%AE%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97%E3%81%AF%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%AA/#%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97%E3%81%AE%E4%BD%9C%E6%88%90)