aws lambda 更新功能配置收到 AccessDeniedException

aws lambda update-function-configuration receives AccessDeniedException

我想为我的 lambda 函数授予 vpc 访问权限。我使用以下 aws cli 命令。

aws lambda update-function-configuration \
--function-name SampleFunction \
--vpc-config SubnetIds=subnet-xxxx,SecurityGroupIds=sg-xxxx

但我收到以下错误:

An error occurred (AccessDeniedException) when calling the UpdateFunctionConfiguration operation: Your access has been denied by EC2, please make sure your request credentials have permission to DescribeSecurityGroups for sg-xxxx. EC2 Error Code: UnauthorizedOperation. EC2 Error Message: You are not authorized to perform this operation.

我已将以下权限授予我的 lambda 角色和执行 aws 命令的用户。

    - "ec2:CreateNetworkInterface"
    - "ec2:DescribeNetworkInterfaces"
    - "ec2:DeleteNetworkInterface"
    - "ec2:DescribeSecurityGroups"

我进一步尝试授予对 lambda 角色和用户的完全访问权限。但是仍然收到同样的错误

谁能建议我还能尝试什么?

您的用户 IAM 策略需要更多权限。

例如 ec2:CreateSecurityGroup 等。查看 this 文档以添加所需的权限。

我遇到了同样的问题。尽管针对具有所需权限的用户的 IAM 策略,我无法使用 aws cli 使用 VPC 配置创建 lambda 函数(aws lambda create-function)修改现有函数添加 VPC 配置 (aws lambda update-function-configuration)。

我能让它工作的唯一方法是在没有 VPC 配置的情况下创建 lambda 函数。然后我修改了函数以通过 AWS 控制台(在 Lambda > Fucntions > My Function > Network 中)添加 VPC 配置信息(vpc、子网和安全组)。我只能使用控制台来执行此操作,在完全自动化的过程中引入手动步骤。

回答上面关于哪些用户需要 ec2:DescribeSecurityGroups 和相关权限的一些问题。是用户运行 cli 命令或登录到控制台。该函数不需要提供这些权限的策略。具有 VPC 配置的函数所需的唯一特殊权限是:

  • ec2:创建网络接口
  • ec2:DescribeNetworkInterfaces
  • ec2:删除网络接口

这些允许函数创建 ENIs within your VPC using the subnet and security group you provide as described here

诀窍是添加正在部署 lambda 函数的管道/工作者角色/用户)可以访问网络相关策略。 lambda 函数本身应该满足托管策略 - AWSLambdaVPCAccessExecutionRole

arn:aws:iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole

  • 行动:
    • ec2:DescribeSecurityGroups
    • ec2:描述子网
    • ec2:DescribeVpcs 效果:允许 资源:'*'

Lambda 函数的角色和用户角色(cloudformation 或 cmline 用户)都必须具有:

          - ec2:CreateNetworkInterface
          - ec2:DescribeNetworkInterfaces
          - ec2:DeleteNetworkInterface
          - ec2:DescribeSecurityGroups
          - ec2:DescribeSubnets

或 ec2:* 如果您的用例安全

我在使用 SAM/cloudformation 部署带有 VPC 配置的 lambda 时遇到了同样的问题,并通过在上面添加这个解决了它。

关于 github 问题有人说这是因为 cloudformation order creation 它不是(或者可能不再是因为我测试了添加 20 个虚拟资源并且仍然是相同的问题只能通过添加上面的权限来解决)

干杯,