如何解决将 Amazon RDS 代理附加到 Lambda 函数时“Lambda 无法更新函数的执行角色”错误?

上次更新日期:2021 年 12 月 8 日

当我尝试将 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 的权限”

 


这篇文章对您有帮助吗?


您是否需要账单或技术支持?