【发布时间】:2017-01-04 01:28:34
【问题描述】:
目前,我正在实施基于 S3、Lambda 和 DynamoDB 的解决方案。 我的用例是,当在 S3 上上传新对象时,会调用第一个 Lambda 函数,下载新文件,将其拆分为大约 100 个(或更多)部分,并为每个部分添加额外信息。下一步,每个部分将由第二个 Lambda 函数处理,在某些情况下,将在 DynamoDB 中执行插入。
我的问题只是关于调用“第二个 lambda”的最佳方式。我的意思是,更快的方法。我想同时执行 100 个 Lambda 函数(如果我要处理 100 个零件)。
我知道有不同的可能性:
1) 我的第一个 Lambda 函数可以将每个部分作为一个项目推送到 Kinesis 流中,而我的第二个 Lambda 函数将做出反应、检索一个项目并对其进行处理。在这种情况下,我不知道 AWS 是否会在每次流中有剩余项目时启动一个新的 Lambda 函数。也许有一些限制......
2) 我的第一个 Lambda 函数可以推送 SNS 主题中的每个部分,然后我的第二个 Lambda 将对每条新消息做出反应。在这种情况下,我对延迟(通过 SNS 主题发送消息的操作与要执行的第二个 Lambda 函数之间的时间)有一些疑问。
3) 我的第一个 Lambda 函数可以通过执行 API 调用和传递信息直接启动第二个。在这种情况下,我不知道是否可以同时启动 100 个 Lambda 函数。我想我会被 AWS API 的速率限制所困(我说过,我想!)
有人有关于我的用例的反馈和建议吗?还有一次,对我来说最重要的是拥有更快的处理方式。
谢谢
【问题讨论】:
-
...或者您可以使用与第一个 Lambda 相同的方法。将您的片段放在另一个 S3 存储桶中,将附加信息保存在对象元数据中,并将第二个 Lambda 附加到第二个存储桶。
-
这是另一种解决方案,但我不确定它是否更快......
标签: amazon-web-services aws-lambda