概要
AWS Secrets Manager内でキーローテーションの設定をしてうまくいかなかった際に下記画像のように
シークレットをローテーションできませんでした
としか表示されずに困ったのでその原因と対処法について解説します
原因
結論から言うとリソースベース(今回だとSecerts Manager)のポリシーステートメントが足りてなくてローテーションができませんでした
リソースベースのポリシーステートメントについては下記の通りです
関数は、その実行ロールから AWS リソースに対する許可を受け取ります。AWS SDK を使用して AWS のサービスを呼び出すには、そのサービスの API オペレーションへのアクセスを許可するポリシーをロールに追加します。
Lambda コンソールが作成するデフォルトの実行ロールには、Amazon CloudWatch ログにログを保存するアクセス許可しかありません。X-Ray トレースなどの一部の機能では、追加のアクセス許可が必要です。コンソールで関数を設定すると、コンソールは必要なアクセス許可を追加しようとします。
要するに何かしらのマネージドサービスをトリガーにLambdaを実行するにはトリガーとなるマネージドサービスのアクセスを許可する必要がある、ということです
対処法
ポリシーステートメントの設定
Lambdaの設定タブを選択し、アクセス権限を追加をクリックします
AWSのサービスを選択し、今回はSecrets Managerを選択します
ローテーションで設定した時間に実行させたいのでアクションはlambda:invokefunctionにします
Secrets Managerの設定
Secrets Managerにローテーションの設定を行います
以下のように正常にローテーションの設定ができていたら成功です
参考