主题:从EC2实例连接到Mongo Atlas M10集群。
问题:我需要EC2实例来简单地连接到数据库并编写一些内容。为了测试这一点,我在node.js中有一个脚本,该脚本打开与数据库的连接,然后关闭:
var MongoClient = require('mongodb').MongoClient
... // have checked that I am using correct URI.
client = await mongodb.connect(uri, { useUnifiedTopology: true }); // timing out
... // and close
然后的问题是,这超时了:
(node:10080) UnhandledPromiseRejectionWarning: MongoTimeoutError: Server selection timed out after 30000 ms
at Timeout.setTimeout [as _onTimeout] (/home/ubuntu/scripts/node_modules/mongodb/lib/core/sdam/server_selection.js:309:9)
at ontimeout (timers.js:498:11)
at tryOnTimeout (timers.js:323:5)
at Timer.listOnTimeout (timers.js:290:5)
(节点:10080)UnhandledPromiseRejectionWarning:未处理的承诺拒绝。该错误是由于在没有catch块的情况下抛出异步函数而引起的,或者是由于拒绝了未经.catch()处理的诺言而引起的。 (拒绝ID:1) (节点:10080)[DEP0018] DeprecationWarning:已弃用未处理的承诺拒绝。将来,未处理的承诺拒绝将以非零退出代码终止Node.js进程。
我所做的事情: -我尝试使用其他版本的mongodb软件包。 -从另一台具有白名单IP的计算机连接到数据库。 -将EC2的IP列入白名单,然后仔细检查该地址。 -同时在两者之间设置VPC对等。 VPC允许lambda函数访问数据库,但不能访问实例。
问题: 在将IP地址列入白名单之后,您是否遇到过连接问题,或者对我可以尝试的事情有其他想法?