
Aurora Serverless v2はACU 0に設定してもログを確認すると起動します
こんにちは。アノテーションの watabo です。
Aurora Serverless v2 には ACU の設定を変更することで、使用しない間 DB を一時停止状態にできる機能があります。
設定する際に遭遇した予期せぬ挙動について、ブログにします。
背景と目的
開発環境の Aurora Serverless v2 で、休眠中の DB の運用コストを削減するため、最小 ACU(Aurora Capacity Unit)を 0 に設定して自動一時停止機能を活用することにしました。
0 以外で設定できる最小の値は ACU 0.5 ですが、それでも月額数十ドルのコンピューティングコストがかかります。
そのため、使用していない時間帯のコストはなるべく減らしたいというケースです。
なお、一時停止中もストレージ費用は別途かかるので注意です。
設定と期待した動作
最小 ACU を0に設定することで、アイドル状態が一定時間続くとDBインスタンスが自動的に一時停止します。
ステータスとしては「利用可能 / Available」のままですが、接続要求があると自動的に起動する仕組みです。
Aurora Serverless v2 DB インスタンスは、一定期間ユーザー接続がない場合に自動的に一時停止し、接続リクエストが到着した場合に自動的に再開できます。
実際の設定方法は、以下の通り最小 ACU を 0 にするだけです。
最小ACU: 0
最大ACU: XXX
一時停止までの時間: 300秒(5分)

なぜか起動してくる Aurora
設定後DBクラスターのイベントを見ると、想定通り一時停止状態になることは確認できました。
しかし、しばらく様子を見ていると、再起動したり休眠したりを繰り返しています。
再起動時のログ(実際は改行されません)
Initiated resume for the DB instance:
auroraserverlessv2-testxxx due to user activity
事前に ACU 0 にならないケースに関する情報は把握していたので、内部的な読み取り動作が走っていることが原因と考え、監査ログも確認しました。
が、今回はDBにアクセスする要素は見当たりませんでした。
原因の特定
CloudTrail を調査したところ、どうやらインスタンスのログを確認する操作により DescribeDBLogFiles APIが実行され、そのたびにDBが起動しているようでした。
つまり Aurora / RDS コンソールで「ログとイベント」タブを表示するだけで DB を起動させてしまうことになります。

※インスタンスではなくクラスターの「ログとイベント」では起動しないようです。
これはAWSの公式ドキュメントに記載されていない仕様ですが、DBにアクセスするタイプのAPIであれば同様に起動してくると考えられます。
よもやコンソールからのアクセスも起動対象とは思いませんでした。
対策と回避策
不要なコンソールアクセス(特に「ログとイベント」タブ)や、CLI コマンドの実行を避けるよう周知しましょう。
どうしてもログが見たければ、ログをCloudWatch Logsにエクスポートする設定を有効化して CloudWatch Logs から見る運用にしておきましょう。
また、そもそもの話にはなりますが、長期で使わないのであればバックアップを取得した上で削除してしまうのも良いかと思います。
まとめ
オペレーションをしている側としては、DB がちゃんと止まったかどうか確認したくなるところです。
でも、ACU 0 にしたらそっとしておいてあげましょう。おやすみなさい…
本エントリがどなたかの役に立てば幸いです。
アノテーション株式会社について
アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新 IT テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。当社は様々な職種でメンバーを募集しています。「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイトをぜひご覧ください。






