aws lambda update-function-configuration接收AccessDeniedException

问题描述 投票:0回答:3

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

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

但是我收到以下错误:

调用UpdateFunctionConfiguration操作时发生错误(AccessDeniedException):您的访问权限已被EC2拒绝,请确保您的请求凭据具有针对sg-xxxx的DescribeSecurityGroups的权限。 EC2错误代码:UnauthorizedOperation。 EC2错误消息:您无权执行此操作。

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

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

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

任何人都可以建议我还能尝试什么?

amazon-web-services lambda vpc
3个回答
0
投票

您的用户IAM策略需要进一步的权限。

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


2
投票

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

阿尔恩:AWS:IAM :: AWS:政策/服务角色/ AWSLambdaVPCAccessExecutionRole

  • 行动: EC2:DescribeSecurityGroups EC2:DescribeSubnets ec2:DescribeVpcs效果:允许资源:'*'

0
投票

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

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

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

  • EC2:CreateNetworkInterface
  • EC2:DescribeNetworkInterfaces
  • EC2:DeleteNetworkInterface

这些允许该函数使用您提供的子网和安全组(如ENIs所述)在您的VPC中创建here

© www.soinside.com 2019 - 2024. All rights reserved.