场景 - 有一个主 lambda,他正在拆分工作并将其分配给多个其他 lambda(工人)。第一个 lambda 迭代并异步调用其他 lambda
如果生成的 lambda 数量超过 1000,它会失败吗?
两个 lambda 之间是否应该有一个 SNS...以便 SNS 重试?
或者更复杂的方法将消息放入队列,然后发送“X”个工作 lambda 的通知以开始轮询队列?
有没有更好的办法?
场景 - 有一个主 lambda,他正在拆分工作并将其分配给多个其他 lambda(工人)。第一个 lambda 迭代并异步调用其他 lambda
如果生成的 lambda 数量超过 1000,它会失败吗?
两个 lambda 之间是否应该有一个 SNS...以便 SNS 重试?
或者更复杂的方法将消息放入队列,然后发送“X”个工作 lambda 的通知以开始轮询队列?
有没有更好的办法?
如果生成的 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
是的,生产者和消费者之间应该有某种脱钩。最明显的方法是让生产者在一个 SNS 主题上创建 1000 条消息,并让 AWS 处理需要多少消费者(也许它可以重用消费者 lambda)。其他方式包括从插入 DynamoDB 的记录触发。
如果您希望侦听器从 SQS 队列中提取消息,您需要自己触发它们,您可以使用 CloudWatch 执行此操作(每分钟最多 1 个触发器)