Lambda 在与 DynamoDB 通信时开始随机超时
Lambda starts timing out randomly when communicating with DynamoDB
我有一个 Node.js Lambda 代码库,它与 DynamoDB 中的小数据集(每个少于 400 字节)对话。在向 DynamoDB 发出 get()
请求(通过 dynamoDbdAWS.DynamoDB.DocumentClient();
)时,函数有时会超时 5 分钟以上。
问题是这个问题什么时候会发生完全是随机的,但是当它起作用时,它从冷启动开始需要大约 2 秒,所以花 5 分钟到 运行 是没有意义的,而且是随机的.
- 这是一个开发环境,所以只有我自己在使用它,而且我每天可能处理 10 个请求
context.callbackWaitsForEmptyEventLoop = false;
已设置
- 内存分配从不超过45MB(128MB设置)
- 我直接在 Lambda 中测试
- 代码通过Serverless
部署
- 测试时,使用无服务器,在本地工作,而 Lambda 失败
我继承了这个项目,但对它周围的架构有很好的理解,它相当简单,但我之前没有用 Lambda 做过太多工作。
任何我应该寻找的想法或任何已知问题都将提供巨大的帮助。
听起来 Lambda 函数配置为 运行 的一个(或多个)VPC 子网没有到 NAT 网关的路由(或 AWS PrivateLink 配置)。因此,只要 Lambda 函数使用该子网,它就无法访问 AWS API。
如果 Lambda 函数实际上不需要访问 VPC 中的任何资源,那么最好不要将其配置为使用 VPC。
我有一个 Node.js Lambda 代码库,它与 DynamoDB 中的小数据集(每个少于 400 字节)对话。在向 DynamoDB 发出 get()
请求(通过 dynamoDbdAWS.DynamoDB.DocumentClient();
)时,函数有时会超时 5 分钟以上。
问题是这个问题什么时候会发生完全是随机的,但是当它起作用时,它从冷启动开始需要大约 2 秒,所以花 5 分钟到 运行 是没有意义的,而且是随机的.
- 这是一个开发环境,所以只有我自己在使用它,而且我每天可能处理 10 个请求
context.callbackWaitsForEmptyEventLoop = false;
已设置- 内存分配从不超过45MB(128MB设置)
- 我直接在 Lambda 中测试
- 代码通过Serverless 部署
- 测试时,使用无服务器,在本地工作,而 Lambda 失败
我继承了这个项目,但对它周围的架构有很好的理解,它相当简单,但我之前没有用 Lambda 做过太多工作。
任何我应该寻找的想法或任何已知问题都将提供巨大的帮助。
听起来 Lambda 函数配置为 运行 的一个(或多个)VPC 子网没有到 NAT 网关的路由(或 AWS PrivateLink 配置)。因此,只要 Lambda 函数使用该子网,它就无法访问 AWS API。
如果 Lambda 函数实际上不需要访问 VPC 中的任何资源,那么最好不要将其配置为使用 VPC。