Amazon web services 无法从Lambda连接到AWS documentDb

Amazon web services 无法从Lambda连接到AWS documentDb,amazon-web-services,aws-lambda,aws-documentdb,aws-documentdb-mongoapi,Amazon Web Services,Aws Lambda,Aws Documentdb,Aws Documentdb Mongoapi,我正试图从Lambda函数连接到AWS documentDB,但无法连接 MongoClient.connect从不调用已连接的回调函数 documentDB群集上的TLS已关闭。我可以通过mongo shell连接 Lambda和documentDB位于同一VPC和安全组中 'use strict'; module.exports.search = async (event, context, callback) => { const MongoClient = require('m

我正试图从Lambda函数连接到AWS documentDB,但无法连接

MongoClient.connect
从不调用已连接的回调函数

documentDB群集上的TLS已关闭。我可以通过mongo shell连接

Lambda和documentDB位于同一VPC和安全组中

'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' };
        });

    });

};
输出仅打印
启动
,调用
Mongo.Connect
之前对其进行了控制台操作。
如何识别或调试该问题?

仅从当前代码来看,我确信您的函数在完成之前就退出了。因此,不会执行回调

因为MongoClient.connect是异步运行的

试着看看async/await/promise和Lambda的相关资源


是的,当我添加wait时,请求一直超时。似乎无法获得documentDb连接。他们有什么方法可以让我们得到错误的痕迹吗?现在这就足够通过另一个问题了,否则这里会变得复杂。对我来说,你能做的最好的追踪是:1/在互联网上创建一个公共mongoDB 2/通过Lambda连接到该DB(请确保您有一个nat实例,使您的lambda能够访问VPC内部的互联网)3/然后您可以确保您的代码正常运行。4/之后,回顾Lambda和DocumentDbResolved之间的连接!AWS documentDB连接似乎存在一些问题。即使在群集上禁用了
TLS
,您仍然需要提供
sslCA
来连接,这很奇怪。@AtulSharma,这不是e预期。禁用TLS时,是否重新启动群集中的实例?如果将参数更改为禁用TLS,则仅在重新启动后才会生效。有关详细信息: