amazon-web-services – AWS Lambda – sync vs async

我最近一直在玩Lambda,正在使用API​​ Gateway和Lambda创建API.我有一个lambda函数,它返回一个
JSON和一个调用该函数的API网关端点.这个简单的设置一切都很好.

我尝试使用loadtest npm模块加载测试API网关端点.虽然Lambda处理并发请求(虽然在执行过程中平均延迟增加),但当我每秒发送40个请求时,它会开始抛出错误,只是部分完成请求.

我在文档中读到,默认情况下,Lambda调用的类型为RequestResponse(这是API现在所做的),它本质上是同步的,看起来它是非阻塞的.对于异步调用,调用类型为Event.但lambda会丢弃异步调用的返回类型,而API则不返回任何内容.

有关AWS的同步,异步或并发定义是否缺少某些内容?有没有更好的方法来解决这个问题?任何见解都有帮助.谢谢!

最佳答案 如果要从API网关获得返回响应,则必须使用同步执行.在此方案中使用异步执行没有意义.我认为你缺少的是,虽然每个Lambda执行都是阻塞的,单线程,但是在多个Lambda服务器环境中会运行多个函数实例.

出于安全原因,默认的并发Lambda执行次数相当低.这是为了防止你在你还在学习Lambda的时候意外地编写了一个耗费大量资金的逃逸Lambda进程.您的帐户的Lambda并发执行限制需要为request an increase.

点赞