結論
ファイルサイズによるローテーション
- いずれのバージョンも100MBごとにローテーションされる
時間によるローテーション
- Aurora MySQL 3.03.0: 時間によるローテーションは行われない
- Aurora MySQL 3.04.0: 1 時間ごとにローテーションされる
- Aurora MySQL 3.05.2: 1 時間ごとにローテーションされる
- 他バージョン:未検証
きっかけ
Auroraの監査ログのCW出力費用が高い!!!
CW出力をやめてS3へ出力する方法を検討するために、まずは監査ログの仕様について調査を行った。
公式ドキュメントには以下の通り記載が。
監査ログは、各 Aurora MySQL DB インスタンスのローカルストレージに個別に保存されます。各インスタンスは、一度に 4 つのログファイルに書き込みを分散します。ログファイルの最大サイズは 100 MB です。この設定不可能な制限に達すると、Aurora はファイルを回転し、新しいファイルを生成します。
https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Auditing.html
実機確認したところ、以下の通り1時間ごとにファイルがローテーションされているように見える...。
調査
DBに負荷をかけて監査ログをたくさん出してもらったところ、公式ドキュメント通り100MBでローテーションされている。
DBクラスターパラメータグループなど調査してみたが結局分からず、こちらの状況と調査結果をもとに素直にAWSへ問い合わせした。
その結果AWS側で検証していただき、「監査ログのローテーションのルールは、バージョンにより差異があることが確認できました。」とのこと。
問い合わせの結論としては以下の通り
ファイルサイズによるローテーション
- いずれのバージョンも100MBごとにローテーションされる
時間によるローテーション
- バージョンにより差異がある
時間によるローテーションの差分確認を実施したところ以下の通りだった。
※MySQL3.03.0は2024/11/07時点でEOLのため作成できなくなっている
- Aurora MySQL 3.03.0: 時間によるローテーションは行われない
- Aurora MySQL 3.04.0: 1 時間ごとにローテーションされる
- Aurora MySQL 3.05.2: 1 時間ごとにローテーションされる
以上より冒頭の結論へと至る。
今後公式ドキュメントの記載が修正されるのか、ローテーション動作が修正されるのか、どちらの対応を取るのかはAWS次第だが、次回はどちらに転んでもS3へ監査ログを出力できるような仕組みを考える。