node.js - Lambda 在与 DynamoDB 通信时开始随机超时
问题描述
我有一个 Node.js Lambda 代码库,可以与 DynamoDB 中的小数据集(每个小于 400 字节)进行通信。get()
在向 DynamoDB(通过 )发出请求时,该函数时不时会超时 5 分钟dynamoDbdAWS.DynamoDB.DocumentClient();
。
问题是这个问题何时发生是完全随机的,但是当它工作时,从冷启动开始大约需要 2 秒,所以运行超过 5 分钟是没有意义的,而且在随机点上运行是没有意义的。
- 这是一个开发环境,所以只有我自己在使用它,我每天可能会做 10 个请求
context.callbackWaitsForEmptyEventLoop = false;
已经设置好了- 内存分配永远不会超过 45MB(128MB 集)
- 我直接在 Lambda 中测试
- 代码通过Serverless部署
- 在使用无服务器进行测试时,它在本地工作,而 Lambda 失败
我继承了这个项目,但对它周围的架构有很好的理解,而且它相当简单,但我之前没有用 Lambda 做过很多工作。
任何我应该寻找的想法或任何已知问题都将是一个巨大的帮助。
解决方案
听起来 Lambda 函数配置为在其中运行的一个(或多个)VPC 子网没有到 NAT 网关(或AWS PrivateLink配置)的路由。因此,只要 Lambda 函数使用该子网,它就无法访问 AWS API。
如果 Lambda 函数实际上不需要访问 VPC 中的任何资源,那么最好不要将其配置为使用 VPC。
推荐阅读
- python - 从 API [Python] 下载数据
- amcharts - 从世界时区地图 AmCharts v4 中删除南极洲
- ruby - 在 rake 任务中调用类方法,没有任何反应
- javascript - 如何在 javascript 嵌套对象数组中使用另一个属性值设置特定属性值?
- django - 如何在 Django 中禁用自动 URL 参数解码?
- sql - 一次计算最小值、中值和最大值
- html - 向表格行添加“段落”html
- swift - Image SwiftUI 和 WidgetKit 上的叠加文本
- python - 如何通过Python查找进程的pid?
- c# - Unity 中的脚本响应不正确的值