我正在尝试从Lambda函数连接到AWS documentDB,但无法连接。
MongoClient.connect
从不调用连接的回调函数。
TLS is off
on documentDB Cluster。我可以通过mongo shell进行连接。
Lambda和documentDB位于same VPC & Security group
中。
'use strict';
module.exports.search = async (event, context, callback) => {
const MongoClient = require('mongodb').MongoClient;
const url = "mongodb://xxx:xxxx@xxx-db.cluster-xxx.us-east-2.docdb.amazonaws.com:27017";
console.log("Starting");
MongoClient.connect(url,
{
useNewUrlParser: true
},
function(err, client) {
if(err)
throw err;
console.log("Connected");
db = client.db('mydb');
col = db.collection('mycollection');
col.find({}).toArray().then(result => {
console.log(result);
return { statusCode: 200, body: result };
}).catch(err => {
console.log('=> an error occurred: ', err);
return { statusCode: 500, body: 'error' };
});
});
};
输出仅打印starting
,该图形在调用Mongo.Connect
之前已被控制台控制。
如何识别或调试问题?
答案 0 :(得分:3)
仅通过查看当前代码,我就可以确定您的函数在完成之前退出。因此,您的回调未执行
因为MongoClient.connect异步运行
尝试看看有关async / await / promise和Lambda的一些资源
https://medium.com/tensult/async-await-on-aws-lambda-function-for-nodejs-2783febbccd9