如何解决将 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 的权限”

这篇文章对您有帮助吗?


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