読者対象
RDSの作成やログ設定をしたことがない方。
ログの種類やbassionを用いたローカルからRDSへの接続方法まで解説します。
新卒エンジニアがプライベートや業務で得た知見をまとめた内容になっています。
RDSの基本的な構成
RDSには作成前やること
RDSサブネットグループを作成
RDSサブネットグループとは、RDS作成時にどのネットワークに割り当てるか決める時に必要になる。
まずRDSを配置するVPCを選択する、そのVPCに割り当てられたサブネットを選択する。
その時に、2種以上のAZに割り当てられたサブネットを割り当てないといけない。
例えばこんな感じ。。
ap-northeast-1c. 10.0.2.0/24
ap-northeast-1a 10.0.1.0/24
補足:CIDRとAZに関して。
CIDRとAZは分けて考えた方が良いかと思いました。
VPCの中にCIDRを分けてサブネットを作る、そのサブネットを様々なAZに置けるよって感じ。そう考えるとスッキリ考えれる気がします。
RDSのためのセキュリティーグループ作成
セキュリティーグループはインスタンスに設定するもの。
RDSはプライベートサブネットに置き、EC2やlambdaからの接続のみ許可することが多い
RDS作成
DBエンジンやネットワーク、ログ設定などを行って作成します。
ちなみにRDSの内容を変更する際は、メンテナンス日に適用するか、すぐに適用するかの二択が選べる。
ログ設定
ログには大きく分けて4種類ある。一般ログ、スロークエリログ、エラーログ、監査ログである。
一般ログ
sqlのクエリの実行内容が出力される。接続元の情報は出力されないのでそれがしたければ監査ログを設定する。
https://weblabo.oscasierra.net/mysql-log-1/
設定する際にはパラメーターの変更が必要になり、RDSに紐づいているパラメーターグループのパラメータを変更する必要がある。
https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_LogAccess.Concepts.MySQL.html#w607aac21c26c35c23b9:~:text=general_log%20%3D%201
スロークエリログ
遅いsqlのクエリの実行内容が出力される。
https://weblabo.oscasierra.net/mysql-log-1/
設定する際にはパラメーターの変更が必要になり、RDSに紐づいているパラメーターグループのパラメータを変更する必要がある。
https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_LogAccess.Concepts.MySQL.html#w607aac21c26c35c23b9:~:text=slow_query_log%20%3D%201
エラーログ
RDSの接続などに失敗したときなどのエラーを出力する。パラメータの変更は不要。
監査ログ
RDSへの接続に関するログを出力。
https://weblabo.oscasierra.net/mysql-log-1/#text-ad1:~:text=%E7%9B%A3%E6%9F%BB%E3%83%AD%E3%82%B0,-(MySQL
4つめの出力パラメーターで接続元のhostがわかったりする。
https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Auditing.html#AuroraMySQL.Auditing.Logs
設定するのにオプションの値を変更しなければいけない。
https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/Appendix.MySQL.Options.AuditPlugin.html
これに関しては、オプショングループのオプション値を変えて設定する場合やパラメータグループのパラメータを設定する場合などがある。詳しくはわからない。
補足
今のRDSの接続元の情報をログ出力ではなく、SQL文で知りたい場合は以下のSQLを実行するとわかる。
以下に挙げている二つのうちどちらかを実行すると、わかる
SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST;
show processlist;
ローカルからRDSに接続する方法
基本的にRDSはプライベートサブネットに配置するので、ローカルから直接接続することはできない。
なのでその仲介サーバとしてbassionをEC2で立てて接続してあげる。
https://dev.classmethod.jp/articles/rds-portforward/
https://harmful-spam.link/fcf8a825-40a9-4d94-8c00-e49698633e64/
https://qiita.com/nago3/items/1cd6daa5ad6377e325ed
注意
ポートフォワーディングをしてローカルからEC2を介してRDSにいく設定をしてあげないといけない。それをローカルでバックグラウンド実行(-f)でやってあげるのを忘れない