You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

以IAM用户创建Lambda函数遇iam:CreatePolicy权限错误,缺少什么配置?

解决IAM用户创建Lambda时的iam:CreatePolicy权限错误

这个问题我之前帮同事排查过,本质是Lambda控制台自动创建执行角色时,你的IAM用户没有足够的IAM权限来完成策略和角色的创建流程。下面给你几种可行的解决思路:


1. 给IAM用户添加必要的IAM权限(推荐最小权限)

当你在Lambda控制台选择"创建新角色"时,Lambda会自动帮你完成三件事:创建IAM角色、创建对应的执行策略(就是你报错里的AWSLambdaBasicExecutionRole系列)、把策略附加到角色上。所以你的用户需要这几个关键权限:iam:CreatePolicyiam:CreateRoleiam:AttachRolePolicy,还有后续Lambda调用需要的iam:PassRole

你可以创建一个自定义IAM策略,然后附加到这个用户(或者所属用户组),示例策略如下(记得替换你的AWS账号ID):

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iam:CreatePolicy",
                "iam:CreateRole",
                "iam:AttachRolePolicy",
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::123334324324234:policy/AWSLambdaBasicExecutionRole*",
                "arn:aws:iam::123334324324234:role/AWSLambdaBasicExecutionRole*"
            ]
        }
    ]
}

*通配符是因为Lambda如果发现基础名称的策略已存在,会自动加UUID后缀(就是你报错里的e3e28520-4b65-439e-a006-24de73479562),这样能覆盖两种情况。

2. 提前手动创建好Lambda执行角色(无需修改用户权限)

如果你的权限管控比较严格,不想给用户IAM创建权限,可以提前在IAM控制台手动建好执行角色:

  • 进入IAM控制台,点击"角色" > "创建角色"
  • 信任实体类型选择"AWS服务",然后选"Lambda",点击下一步
  • 搜索并附加AWS托管的AWSLambdaBasicExecutionRole策略(这个是AWS预定义的,不用自己创建)
  • 完成角色创建,记住角色名称
  • 回到Lambda创建页面,选择"使用现有角色",选中你刚创建的角色即可

3. 注意权限的最小化原则

如果是企业环境,尽量避免给用户*资源范围的权限,比如上面的示例里只限定了AWSLambdaBasicExecutionRole前缀的策略和角色,这样用户只能创建Lambda相关的执行策略,不会有过度授权的风险。

内容的提问来源于stack exchange,提问作者Pand005

火山引擎 最新活动