はじめに
Terraformで構築したAurora環境に対して、
コスト最適化を目的に Lambdaから停止処理を自動化しようとしたところ、
いくつかのポイントでハマりました。
具体的には以下のような問題です:
クラスター識別子が見つからない(DBClusterNotFound)
Lambdaの修正が反映されない
IAM権限不足によるAccessDenied
停止済みクラスターへの実行エラー
一見シンプルな処理ですが、
RDS(Aurora)の仕様・IAM・Lambdaの挙動が絡むため、
実際にやってみると意外と詰まりやすいポイントが多いです。
本記事では、実装方法だけでなく
実際にハマったポイントとその解決方法を整理してまとめます。
👍 こんな人におすすめ
- LambdaからRDSを操作したい人
- Auroraの自動停止をやりたい人
- AWSでハマりポイントを事前に知りたい人
やりたいこと
- LambdaからAuroraクラスターを停止したい
- 状態に応じて安全に制御したい(冪等性)
実装コード
import boto3
region = 'ap-northeast-3'
db = 'iseaw20260224-1559-drive-tfe-dev-auroracluster-ap-northeast-3'
def lambda_handler(event, context):
rds = boto3.client('rds', region_name=region)
response = rds.describe_db_clusters(DBClusterIdentifier=db)
status = response['DBClusters'][0]['Status']
print(f"current status: {status}")
if status == 'available':
rds.stop_db_cluster(DBClusterIdentifier=db)
print('stopped cluster')
else:
print('already stopped or not available')
ハマったポイントと解決方法
❌ ① DBClusterNotFoundFault
DBCluster xxx not found
原因
クラスター識別子が間違っている
解決
- AWSコンソールの「DB cluster identifier」をそのまま使用する
👉 よくあるミス
- Terraformのリソース名と一致しない
- DBインスタンス名とクラスター名を混同
❌ ② Lambdaのコードが反映されない
症状
- 修正したはずのコードで動かない
原因
- Deployしていない
解決
コード編集 → Deploy → Test
LambdaはDeployしないと変更が反映されない
❌ ③ AccessDenied(StopDBCluster)
not authorized to perform: rds:StopDBCluster
原因
- IAM権限不足
解決
{
"Effect": "Allow",
"Action": "rds:StopDBCluster",
"Resource": "*"
}
❌ ④ AccessDenied(DescribeDBClusters)
原因
- 状態確認の権限不足
解決
{
"Effect": "Allow",
"Action": [
"rds:StopDBCluster",
"rds:DescribeDBClusters"
],
"Resource": "*"
}
操作系だけでなく参照系も必要
❌ ⑤ InvalidDBClusterStateFault
is in stopped state but expected available
原因
- すでに停止済みのクラスターに対して停止処理を実行
解決
状態チェックを実装
if status == 'available':
冪等性を担保できる
最終結果
- LambdaからAuroraクラスターの状態取得および停止処理が正常に実行可能
- エラーなく安全に再実行可能な構成に改善
学び
- LambdaはDeployしないと変更が反映されない
- Auroraは「cluster」と「instance」でAPIが異なる
- IAMは操作だけでなく参照権限も必要
- エラーから原因を切り分けることが重要
おまけ(おすすめ)
EventBridgeと組み合わせることで、
夜:stop
朝:start
Auroraの自動ON/OFFによるコスト削減が可能
まとめ
Aurora制御はシンプルに見えて、
- クラスター識別子
- IAM権限
- 状態管理
といったポイントでハマりやすいです。
本記事が同じように詰まった方の参考になれば嬉しいです!