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 个虚拟资源并且仍然是相同的问题只能通过添加上面的权限来解决)
干杯,
我想为我的 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 个虚拟资源并且仍然是相同的问题只能通过添加上面的权限来解决)
干杯,