【问题标题】:Invoking lambda from lambda: AWS Lambda concurrent execution limits从 lambda 调用 lambda:AWS Lambda 并发执行限制
【发布时间】:2016-06-07 10:25:45
【问题描述】:

我当前的 AWS Lambda 函数调用另一个 AWS Lambda 函数,但我想确保调用成功。在查看concurrent execution limits for AWS Lambda 之后,我试图弄清楚如果达到并发限制会发生什么,并且我试图从另一个 Lambda 调用 Lambda。 目前,我通过将消息放入 SNS 来解决这个问题,但我更喜欢直接调用 Lambda 来避免间接。

【问题讨论】:

    标签: amazon-web-services aws-lambda


    【解决方案1】:

    处理并发限制的最佳方法是使用 Kinesis 流而不是 SNS。 分片的数量将限制调用的 lambda 数量。如果它适合你,你可以一次接收多条消息,这是你不能用 SNS 做的,这可能会导致并发限制。

    【讨论】:

      【解决方案2】:

      你能详细说明一下吗?不确定我是否理解您想要实现的目标。

      可以在 AWS 控制台/EC2 页面下查看 Lambda 限制,左上角有一个名为 Limits 的菜单项,您应该在那里看到限制。 当你达到限制时,lambda 将停止被调用,如果我没记错的话,你会在日志中看到一个错误,说明达到了限制。

      【讨论】:

        【解决方案3】:

        来自AWS Lambda FAQs:

        问:如果我的帐户超过了并发执行的默认节流限制会怎样?

        超过油门限制时,将调用 AWS Lambda 函数 同步将返回一个限制错误(429 错误代码)。拉姆达 异步调用的函数可以吸收合理的突发 大约 15-30 分钟的流量,之后传入事件 将被拒绝为限制。如果 Lambda 函数正在 调用以响应 Amazon S3 事件、被 AWS Lambda 拒绝的事件 可能会被 S3 保留并重试 24 小时。来自亚马逊的活动 Kinesis 流和 Amazon DynamoDB 流被重试,直到 Lambda 函数成功或数据过期。亚马逊 Kinesis 和 Amazon DynamoDB Streams 将数据保留 24 小时。


        在 AWS 控制台中,您始终可以为 AWS Lambda 并发执行创建服务限制增加,无需额外费用。 This answer 更详细地解释了这一点。

        【讨论】:

        • 您有这方面的经验吗?有上限吗?
        • 我添加了一个指向我的另一个答案的链接,我在其中更详细地解释了这一点。理论上没有上限,但他们不会盲目跟从每一个增加请求。
        【解决方案4】:

        我相信您目前正在正确处理它。我刚刚阅读了一篇文章,该文章解释了您不应如何从另一个 lambda 调用 lambda,因为:

        “如果你这样做了,第一个将一直运行,直到第二个完成执行,并且你自己会加倍计费。相反,使用 SNS 或 SQS 向另一个 Lambda 发送消息。”

        http://web.archive.org/web/20160713113906/http://www.appliedsoftwaredesign.com/archives/aws-lambda-pro-tips/

        【讨论】:

        • 好吧,您可以通过将“Event”值传递给调用方法的“InvocationType”参数,从另一个 lambda 函数内部异步调用 lambda 函数,调用 lambda 函数完成其执行并且不会等待接收 lambda 函数的完整执行。
        猜你喜欢
        • 1970-01-01
        • 2018-11-30
        • 1970-01-01
        • 2017-10-22
        • 2017-06-21
        • 2018-01-12
        • 1970-01-01
        • 2022-06-30
        • 2020-07-21
        相关资源
        最近更新 更多