我最近一直在玩Lambda,正在使用API Gateway和Lambda创建API。我有一个lambda函数,它返回一个JSON和一个调用该函数的API网关端点。这个简单的设置一切都很好。
我尝试使用loadtest npm模块加载测试API网关端点。虽然Lambda处理并发请求(虽然在执行过程中平均延迟增加),但当我每秒发送40个请求时,它会开始抛出错误,只是部分完成请求。
我在文档中读到,默认情况下,Lambda调用的类型为RequestResponse(这是API现在所做的),它本质上是同步的,看起来它是非阻塞的。对于异步调用,调用类型为Event。但lambda会丢弃异步调用的返回类型,而API不会返回任何内容。
对于AWS,我是否缺少与同步,异步或并发定义相关的内容?有没有更好的方法来解决这个问题?任何见解都有帮助。谢谢!
答案 0 :(得分:2)
如果要从API网关获取返回响应,则必须使用同步执行。在这种情况下使用异步执行没有意义。我认为你缺少的是,虽然每个Lambda执行都是阻塞的,单线程,但是在多个Lambda服务器环境中会运行多个函数实例。
出于安全原因,默认的并发Lambda执行次数相当低。这是为了防止你在你还在学习Lambda的时候意外地编写了一个耗费大量资金的逃逸Lambda进程。您需要在帐户的Lambda并发执行限制中request an increase。