Amazon RDS Proxy を AWS Lambda 関数にアタッチしようとすると、「Lambda could not update the function's execution role」(Lambda が関数の実行ロールを更新できませんでした) というエラーメッセージが表示されます。どうすればこのエラーを解決できますか?
簡単な説明
次の理由により、Lambda から**「Lambda could not update the function's execution role」(Lambda が関数の実行ロールを更新できませんでした)** というエラーが返されることがあります。
- Lambda の実行ロールに、複数の信頼されたエンティティが関連付けられている。
- Lambda 関数の実行ロールに、10 個のポリシーがアタッチされている。
- ログインしている AWS Identity and Access Management (IAM) ユーザーに、**「CreatePolicy」および「AttachRolePolicy」**アクセス許可がない。
解決方法
Lambda 関数の実行ロールに、信頼されたエンティティが 1 つだけ関連付けられていることを確認する
関数の実行ロールを見直し、Lambda サービス (lambda.amazonaws.com) だけがロールを引き受けることができることを確認します。
注: 他のサービスで同ロールを引き受けるには、新しいロールを作成し、そのサービスを信頼されたエンティティとして設定します。
Lambda 関数の実行ロールに 10 個のポリシーがアタッチされていないことを確認する
関数の実行ロールを確認して、10 個のポリシーがアタッチされているかどうかを判断します。ロールに 10 個のポリシーがアタッチされている場合は、
既存のポリシーを置き換えるカスタムポリシーを 1 つ作成します。
注: 実行ロールに 10 個のポリシーがアタッチされている場合、Lambda 関数は必要な RDS プロキシポリシーを作成してロールにアタッチすることができません。
RDS プロキシポリシーの例
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "rds-db:connect",
"Resource": "Proxy ARN"
}
]
}
ログインしている IAM ユーザーに「CreatePolicy」および「AttachRolePolicy」アクセス許可があることを確認する
ログインしている IAM ユーザーの IAM ポリシーを確認し、ポリシーに**「CreatePolicy」と「AttachRolePolicy」**のアクセス許可が含まれていることを確認します。ユーザーのポリシーに必要なアクセス許可が含まれていない場合は、ユーザーに「CreatePolicy」と「AttachRolePolicy」のアクセス許可を付与します。
注: ログインしている IAM ユーザーに必要なアクセス許可がない場合、Lambda コンソールには次のエラーのいずれかまたは両方が表示されます。
- 「User <user-arn> is not authorized to perform: iam:CreatePolicy on resource: policy <policy-name>」
- 「User <user-arn> is not authorized to perform: iam:AttachRolePolicy on resource: role <role-name>」