我想为我的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角色和用户的完全访问权限。但仍然收到同样的错误
任何人都可以建议我还能尝试什么?
您的用户IAM策略需要进一步的权限。
例如ec2:CreateSecurityGroup等。查看this文档以添加需要的权限。
诀窍是添加正在部署lambda函数的管道/工作者角色/用户)可以访问与网络相关的策略。 lambda函数本身就足以满足托管策略 - AWSLambdaVPCAccessExecutionRole
阿尔恩:AWS:IAM :: AWS:政策/服务角色/ AWSLambdaVPCAccessExecutionRole
我遇到了同样的问题。尽管具有所需权限的用户的IAM策略,我无法使用aws cli来创建具有VPC配置的lambda函数(aws lambda create-function)或修改现有函数以添加VPC配置(aws lambda update-功能构型)。
我能让它工作的唯一方法是在没有VPC配置的情况下创建lambda函数。然后,我修改了该功能,以通过AWS控制台添加VPC配置信息(vpc,子网和安全组)(在Lambda> Fucntions>我的功能>网络中)。我只能使用控制台执行此操作,在完全自动化的过程中引入手动步骤。
回答上面关于哪个用户需要ec2:DescribeSecurityGroups和相关权限的一些问题。用户正在运行cli命令或登录到控制台。该功能不需要提供这些权限的策略。具有VPC配置的功能所需的唯一特殊权限是: