1

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

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

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

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

有没有更好的办法?

4

2 回答 2

0

如果生成的 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

我的建议如下

建议1:-

AWS 步骤函数

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

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

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

建议2:-

AWS ECS 容器

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

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

于 2017-09-21T07:21:04.637 回答
0

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

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

于 2017-09-21T03:41:16.723 回答