当我尝试将 Amazon RDS 代理附加到 AWS Lambda 函数时,我收到以下错误消息:“Lambda 无法更新函数的执行角色”。如何解决此错误?
简短描述
由于以下原因,Lambda 可能会返回 Lambda 无法更新函数的执行角色错误:
- Lambda 执行角色有多个与其关联的受信任实体。
- Lambda 函数的执行角色附加了 10 个策略。
- 登录的 AWS Identity and Access Management (IAM) 用户没有**“CreatePolicy”和“AttachRolePolicy”**权限。
解决方法
验证 Lambda 函数的执行角色是否只有一个与之关联的受信任实体
审核函数的执行角色,并验证是否只有 Lambda 服务 (lambda.amazonaws.com) 可以代入此角色。
**注意:**要让其他服务代入相同的角色,请创建一个新角色并将这些服务配置为受信任的实体。
验证 Lambda 函数的执行角色没有附加 10 个策略
审核函数的执行角色,以确定其是否附加 10 个策略。如果该角色确实附加 10 个策略,则
创建一个自定义策略以替换现有策略。
注意: 如果执行角色附加了 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-arn> 没有在资源:策略 <policy-name> 上执行:iam:CreatePolicy 的权限”
- “用户 <user-arn> 没有在资源:角色 <role-name> 上执行:iam:AttachRolePolicy 的权限”