【问题标题】:Lambda creating ENI everytime it is invoked: Hitting limitLambda 每次调用时都会创建 ENI:达到限制
【发布时间】:2016-06-29 16:20:18
【问题描述】:

我的 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 有没有更好的方法?

【问题讨论】:

  • Lambda 角色是否有权删除 ENI 或只有创建权限?
  • @MarkB:有趣,还没想过。它没有删除权限。让我尝试授予该权限,看看会发生什么
  • @blueskin 我正在调查一个类似的问题。你在哪里得到你在问题中提到的错误?

标签: amazon-web-services aws-lambda


【解决方案1】:

正如 Mark 所建议的,问题是我的 AWS Lambda 没有在 lambda 设置的角色(策略)中指定 DeleteNetworkInterface 操作。通过提供适当的策略,Lambda 现在会在完成时分离并删除 ENI。

        {
            "Effect": "Allow",
            "Resource": "*",
            "Action": [
                "ec2:DescribeInstances",
                "ec2:CreateNetworkInterface",
                "ec2:AttachNetworkInterface",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DeleteNetworkInterface",
                "ec2:DetachNetworkInterface",
                "ec2:ModifyNetworkInterfaceAttribute",
                "ec2:ResetNetworkInterfaceAttribute",
                "autoscaling:CompleteLifecycleAction"
            ]
        }

【讨论】:

    【解决方案2】:

    来自 AWS 的官方线路(通过 their docs 和支持票证)是使用 AWS 托管策略 AWSLambdaVPCAccessExecutionRole

    摘自私人支持票:

    您在 Lambda 函数中使用的角色有一个附加的策略“AWSLambdaVPCAccessExecutionRole”,这是针对启用了 VPC 的 Lambda 函数的 AWS 托管策略。此策略包含所有需要的权限,如果由于服务更新而需要新权限,将来可能会更新。

    还值得注意的是,有时可能需要几个小时才能收获分离的 ENI。

    【讨论】:

    • 如果有一些方法可以更快地清理这些 ENI,那就太好了。完成一个必须清理 ENI 的 CF 回滚需要相当长的时间。当你在管道上工作时,速度会慢一点。
    • 现在有一种不同的设置可以显着缓解这种情况并且通常更好,如下所述:aws.amazon.com/blogs/compute/…
    • 这很有用!似乎它肯定需要一些努力来重新配置它以这种方式工作(而不是更“传统”的方法)。不过,我会在以后的工作中记住这一点!
    猜你喜欢
    • 2019-02-28
    • 1970-01-01
    • 2011-08-27
    • 1970-01-01
    • 1970-01-01
    • 2020-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-15
    相关资源
    最近更新 更多