AWS Lambda - 同步与异步

AWS Lambda - sync vs async

我最近一直在玩 Lambda,正在努力使用 API 网关和 Lambda 创建一个 API。我有一个 lambda 函数,它 return 是一个 JSON 和一个调用该函数的 API 网关端点。这个简单的设置一切都很好。

我尝试使用 loadtest npm 模块对 API 网关端点进行负载测试。当 Lambda 处理并发请求时(尽管在执行过程中平均延迟有所增加),当我每秒向它发送 40 个左右的请求时,它开始抛出错误,只完成了部分请求。

我在文档中读到,默认情况下,Lambda 调用是 RequestResponse 类型(API 现在所做的),它本质上是同步的,看起来它是非阻塞的。对于异步调用,调用类型为Event。但是 lambda 丢弃了异步调用的 return 类型和 API return 什么都没有。

关于 AWS 的同步、异步或并发定义,我是否遗漏了什么?有没有更好的方法来解决这个问题?任何见解都是有帮助的。谢谢!

如果您想从 API 网关获得 return 响应,则必须使用同步执行。在这种情况下使用异步执行没有意义。我认为您缺少的是,虽然每个 Lambda 执行都是阻塞的、单线程的,但在多个 Lambda 服务器环境中会有多个函数实例 运行ning。

出于安全原因,并发 Lambda 执行的默认数量相当低。这是为了防止您在学习 Lambda 时不小心编写了 运行-away Lambda 过程,这会花费很多钱。您需要request an increase您账户的 Lambda 并发执行限制。