我正在使用在VPC内运行的一些AWS Lambda函数,这些函数需要连接到后端Mongo Atlas数据库以进行数据存储/检索。
我使用Javascript进行编码,因此我自然使用了官方的MongoDB Node JS客户端来建立连接。我面临的问题是,每当我进行一些并发的lambda调用时,其中一些将无法成功建立连接,并且基本上会挂起,直到Lambda超时。例如,如果要调用5个不同的功能,则2个连接尝试可能会挂起,直到Lamdba超时。该连接保存在处理程序函数之外,以在以后的函数调用中重用,并且代码基于此处指定的最佳实践:https://docs.atlas.mongodb.com/best-practices-connecting-to-aws-lambda/
我已经阅读了所有可用的在线资源和mongo文档,但找不到任何解决方案。是否有人在与Mongo的VPC连接中遇到Lambda这样的问题,并且超时?您是如何解决的?谢谢。
最佳答案
我遇到了完全相同的问题。
通过明确地不遵循最佳实践来解决此问题,而是为每个需要一个的lambda请求打开(和关闭)一个新连接。
在我的设置中,connect()
方法需要20到70毫秒才能完成,我想比起间歇性和不可复制的挂起连接,我会更加痛苦。
为了达到良好的效果,我将{ poolSize: 1 }
添加到了MongoClient连接选项中。
关于node.js - AWS Lambda无法(间歇地)连接到AWS VPC内的MongoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56669596/