Amazon web services AWS Lambda快速处理方法

Amazon web services AWS Lambda快速处理方法,amazon-web-services,aws-lambda,Amazon Web Services,Aws Lambda,目前,我正在实现一个基于S3、Lambda和DynamoDB的解决方案。 我的用例是,当一个新对象上传到S3上时,调用第一个Lambda函数,下载新文件,将其拆分为大约100个(或更多)部分,并为每个部分添加额外的信息。下一步,每个零件将由第二个Lambda函数处理,在某些情况下,将在DynamoDB中执行插入 我的问题只是关于称之为“第二个lambda”的最佳方式。我是说,更快的方法。我想同时执行100个Lambda函数(如果我想处理100个部件的话) 我知道有不同的可能性: 1) 我的第一个

目前,我正在实现一个基于S3、Lambda和DynamoDB的解决方案。 我的用例是,当一个新对象上传到S3上时,调用第一个Lambda函数,下载新文件,将其拆分为大约100个(或更多)部分,并为每个部分添加额外的信息。下一步,每个零件将由第二个Lambda函数处理,在某些情况下,将在DynamoDB中执行插入

我的问题只是关于称之为“第二个lambda”的最佳方式。我是说,更快的方法。我想同时执行100个Lambda函数(如果我想处理100个部件的话)

我知道有不同的可能性:

1) 我的第一个Lambda函数可以将每个部分作为运动流中的一个项目推送,而我的第二个Lambda函数将做出反应,检索一个项目并对其进行处理。在这种情况下,我不知道AWS是否会在每次流中有剩余项时启动新的Lambda函数。也许有一些限制

2) 我的第一个Lambda函数可以推送SNS主题中的每个部分,然后我的第二个Lambda将对每个新消息做出反应。在这种情况下,我对延迟(通过SNS主题发送消息的操作与执行第二个Lambda函数之间的时间)有一些疑问

3) 我的第一个Lambda函数可以通过执行API调用并传递信息直接启动第二个Lambda函数。在这种情况下,我不知道是否可以同时启动100个Lambdas函数。我想我会被针对AWSAPI的速率限制所困扰(我说过,我想!)

有人对我的用例有反馈和建议吗?还有一次,对我来说最重要的是有更快的处理方式


感谢

Lambda限制已经到位,可以提供一些正常的默认值,但许多工作负载很快就会超过它们。您可以请求增加,这样就不会成为您用例的瓶颈。本文件描述了以下过程:

我不确定您的用例可以容忍多少延迟,但我经常使用SNS来分散,并且延迟通常是下一次调用的次秒(除非是Java/coldstart)

如果延迟非常敏感,那么您可能希望使用直接调用Lambdas。这将在
调用
100次时最小化阻塞。如果要进行超级优化,还可以在主Lambda函数中执行这些
Invoke
调用,以进一步提高并行性


冷容器有时会导致调用延迟。如果以毫秒计,这可能会变得棘手。试图超优化Lambda处理时间的人有时会使用立即返回的“心跳”事件来安排Lambda函数的执行(因此处理时间很便宜)。这些容器将在一小段时间内保持“温暖”,这使它们能够接收您的事件,而不会产生“冷启动”时间。Java容器在冷启动时比节点容器慢得多(我假设Python可能和节点容器一样快,尽管我还没有测试过)。

Lambda限制已经到位,可以提供一些合理的默认值,但许多工作负载很快就超过了它们。您可以请求增加,这样就不会成为您用例的瓶颈。本文件描述了以下过程:

我不确定您的用例可以容忍多少延迟,但我经常使用SNS来分散,并且延迟通常是下一次调用的次秒(除非是Java/coldstart)

如果延迟非常敏感,那么您可能希望使用直接调用Lambdas。这将在
调用
100次时最小化阻塞。如果要进行超级优化,还可以在主Lambda函数中执行这些
Invoke
调用,以进一步提高并行性


冷容器有时会导致调用延迟。如果以毫秒计,这可能会变得棘手。试图超优化Lambda处理时间的人有时会使用立即返回的“心跳”事件来安排Lambda函数的执行(因此处理时间很便宜)。这些容器将在一小段时间内保持“温暖”,这使它们能够接收您的事件,而不会产生“冷启动”时间。Java容器在冷启动时比节点容器慢得多(我假设Python可能与节点容器一样快,尽管我没有测试过)。

…或者您可以使用与第一个Lambda相同的方法。将您的片段放在另一个S3存储桶中,将其他信息保存在对象元数据中,并将第二个Lambda附加到第二个存储桶。这是另一个解决方案,但我不确定这是更快的方法……或者您可以使用与第一个Lambda相同的方法。将您的片段放在另一个S3存储桶中,将其他信息保存在对象元数据中,并将第二个Lambda附加到第二个存储桶。这是另一个解决方案,但我不确定这是否是更快的方法……感谢您的回答Dave,最后我将通过调用第一个Lambda直接启动我的Lambda。它工作得很好。谢谢你的回答Dave,最后我通过调用第一个lambda直接启动了我的lambda。它工作得很好。谢谢