我的Lambda访问我的VPC上的资源,因此我在文档中指示我已经为Lambda提供了创建网络接口的角色。我假设ENI被重用但看起来每个调用都会创建一个新的ENI导致错误
Lambda was not able to create an ENI in the VPC of the Lambda function because the limit for Network Interfaces has been reached.
我搜索谷歌但找不到解决此问题的最佳方法。除了定期手动删除这些ENI之外还有更好的方法吗?
答案 0 :(得分:12)
正如Mark所说,问题是我的AWS Lambda没有在lambda设置的角色(Policy)中指定的DeleteNetworkInterface Action。通过给出适当的策略,Lambda现在可以在完成后分离并删除ENI。
{
"Effect": "Allow",
"Resource": "*",
"Action": [
"ec2:DescribeInstances",
"ec2:CreateNetworkInterface",
"ec2:AttachNetworkInterface",
"ec2:DescribeNetworkInterfaces",
"ec2:DeleteNetworkInterface",
"ec2:DetachNetworkInterface",
"ec2:ModifyNetworkInterfaceAttribute",
"ec2:ResetNetworkInterfaceAttribute",
"autoscaling:CompleteLifecycleAction"
]
}
答案 1 :(得分:6)
来自AWS的官方热线(通过their docs和支持服务单)将使用AWS管理的政策AWSLambdaVPCAccessExecutionRole
。
摘自私人支持票:
您在Lambda函数中使用的角色具有附加策略“AWSLambdaVPCAccessExecutionRole”,该策略是支持VPC的Lambda函数的AWS托管策略。此策略包含所有必需的权限,如果由于服务更新而需要新权限,将来可能会更新。
值得注意的是,有时需要花费数小时才能收获分离的ENI。