【问题标题】:lambda calling another lambda and hitting concurrency threshold of 1000lambda 调用另一个 lambda 并达到 1000 的并发阈值
【发布时间】:2017-09-21 02:09:10
【问题描述】:

场景 - 有一个主 lambda,他正在拆分工作并将其分配给多个其他 lambda(工人)。第一个 lambda 迭代并异步调用其他 lambdas

如果生成的 lambda 数量超过 1000,它会失败吗?

两个 lambda 之间是否应该有一个 SNS...以便 SNS 重试?

或者更复杂的方法将消息放入队列,然后发送“X”个工作 lambda 的通知以开始轮询队列?

有没有更好的办法?

【问题讨论】:

    标签: amazon-web-services aws-lambda amazon-sqs amazon-sns serverless-architecture


    【解决方案1】:

    是的,生产者和消费者之间应该有某种解耦。最明显的方法是让生产者在一个 SNS 主题上创建 1000 条消息,并让 AWS 处理需要多少消费者(也许它可以重用消费者 lambda)。其他方式包括从插入到 DynamoDB 中的记录触发。

    如果您希望侦听器从 SQS 队列中提取消息,您需要自己触发它们,您可以使用 CloudWatch 执行此操作(每分钟最多 1 个触发器)

    【讨论】:

      【解决方案2】:

      如果生成的 lambda 数量超过 1000 Qn:会失败吗?

      是的,它会失败。但您可以通过请求 AWS 客户支持将默认限制 (1000) 增加到 n 个基于区域的数字。

      http://docs.aws.amazon.com/lambda/latest/dg/limits.html

      http://docs.aws.amazon.com/lambda/latest/dg/concurrent-executions.html

      我不确定您的确切要求。根据您的要求,您需要确保在您的设计中生成 1000 个 lambda

      我的建议如下

      建议一:-

      AWS Step Functions

      通过 AWS Step Functions,您可以使用状态机语言从 master 调用您的子 lambda。基于您的主 lambda 调用方式。(例如:Cloudwatch 规则、触发器)。欲了解更多信息,请转到:-

      https://aws.amazon.com/step-functions/

      https://states-language.net/spec.html

      建议2:-

      AWS ECS 容器

      从主 Lambda 向 SQS 发送消息。启动您的子程序作为 ECS 容器服务。在 Program 中,您可以使用您的 SQS 消息并解决您的业务逻辑。

      http://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html

      【讨论】:

        猜你喜欢
        • 2018-07-19
        • 1970-01-01
        • 2022-10-14
        • 2021-01-17
        • 2020-04-22
        • 1970-01-01
        • 2021-05-12
        • 2019-02-12
        • 2016-06-07
        相关资源
        最近更新 更多