如何解决将 RDS 代理附加到 Lambda 函数时“Lambda 无法更新函数的执行角色”错误?
上次更新时间:2020 年 10 月 21 日
将 Amazon RDS 代理附加到 AWS Lambda 函数时,出现“Lambda 无法更新函数的执行角色”错误。如何解决此问题?
简短描述
出现“Lambda 无法更新函数的执行角色”错误可能有三个原因:
- Lambda 执行角色有多个与其关联的受信任实体。
- Lambda 函数的执行角色附加了 10 个策略。
- 登录的 AWS Identity and Access Management (IAM) 用户没有“CreatePolicy”和“AttachRolePolicy”权限。
解决方法
Lambda 执行角色有多个与其关联的受信任实体
验证是否只有 Lambda 服务 (lambda.amazonaws.com) 可以代入 Lambda 函数的执行角色。
注意:要让其他服务代入相同的角色,请创建一个新角色并将这些服务配置为受信任的实体。
Lambda 函数的执行角色附加了 10 个策略
创建单个自定义策略以替换现有策略。
注意: 如果执行角色附加了 10 个策略,则 Lambda 函数无法创建所需的 RDS 代理策略并将其附加到角色。
示例 RDS 代理策略{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "rds-db:connect",
"Resource": "Proxy ARN"
}
]
}
登录的 IAM 用户没有“CreatePolicy”和“AttachRolePolicy”权限
向登录的 IAM 用户授予“CreatePolicy”和“AttachRolePolicy”权限。
注意:如果登录的 IAM 用户没有所需的权限,Lambda 控制台将显示以下一个或两个错误:
- “用户 <user-arn> 没有在资源:策略 <policy-name> 上执行:iam:CreatePolicy 的权限”
- “用户 <user-arn> 没有在资源:角色 <role-name> 上执行:iam:AttachRolePolicy 的权限”