lambda可以同时进行多少次获取调用



我在AWS上有一个NodeJS14 Lambda,其目的是访问各种设备端点并获取数据。它按时间表运行。

我的想法是,我只需循环浏览我的需求,并为每个需求打一个"获取"电话。

类似(psudocode(:

for (device of deviceList) {
fetch(device.uri)
.then(resp => saveToS3(resp) )
.catch(err => notifyAdminOfError(err) ) 
}

我一次可以运行多少个这样的获取调用?我预计我的设备列表将长期达到10k左右,但可能会从1k左右开始。

如果有一个限制(在lambda、node.js中,或者只是一个实际的限制(,我可以用一个"master"将其分解,根据需要将100个设备(或任何限制(分配给多个次级lambda。。。但我不想让事情变得不必要的复杂。

Lambdas本质上是单核的,因此拥有多个线程可能不会带来任何好处(参考:AWS论坛响应(

还有15分钟的功能超时限制(Lambda限制(

你的问题的答案取决于你的提取电话需要多长时间。如果是几毫秒,那么你可以在15分钟内用一个Lambda处理1k个设备。如果时间较长,则需要分批处理。您可以使用相同的Lambda,并使用不同的批处理输入调用它来处理所有设备。

lambda函数内部有并发配额限制,但这是针对您对lambda函数Invocation Scaling的调用次数。

突发并发配额

  1. 3000–美国西部(俄勒冈州(、美国东部(北弗吉尼亚州(、欧洲(爱尔兰(
  2. 1000–亚太地区(东京(、欧洲(法兰克福(、美国东部(俄亥俄州(
  3. 500–其他地区

但如果我是对的,你的问题与lambda函数内部的并发调用有关。

在lambda中,有一种方法可以进行异步调用,事件队列处理所有传入的请求,这就是其中之一

但它也会遇到其他挫折,比如最终一致的事件队列调用异步

我能想到的另一个解决方案是将您的读取设备调用与AWS SQS"解耦",但这对您的用例来说可能有些过头了。

最新更新