【问题标题】:Not able to connect to AWS documentDb from Lambda无法从 Lambda 连接到 AWS documentDb
【发布时间】:2019-11-08 00:17:48
【问题描述】:

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

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

TLS is off 在 documentDB 集群上。我可以通过 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 之前得到了安慰。 如何识别或调试问题?

【问题讨论】:

    标签: amazon-web-services aws-lambda aws-documentdb aws-documentdb-mongoapi


    【解决方案1】:

    仅通过查看当前代码,我很确定您的函数在它能够完成之前就退出了。因此,您的回调没有被执行

    因为 MongoClient.connect 是异步运行的

    尝试查看一些关于 async/await/promise 和 Lambda 的资源

    https://medium.com/tensult/async-await-on-aws-lambda-function-for-nodejs-2783febbccd9

    How to wait for async actions inside AWS Lambda?

    【讨论】:

    • 是的,当我添加等待时,请求不断超时。似乎无法获得 documentDb 连接。他们有什么方法可以让我们找到错误的踪迹吗?
    • 现在这足以解决另一个问题,否则这里会变得复杂对我来说,你可以做的最好的追踪是:1/在互联网上创建一个公共 mongoDB 2/连接到该数据库通过您的 Lambda (确保您有一个 nat 实例以在 VPC 互联网访问中为您的 lambda 提供)3/然后您可以确保您的代码正常运行。 4/ 之后,再回头看一下 Lambda 和 DocumentDB 的连接性
    • 解决了!似乎 AWS documentDB 连接存在一些问题。即使TLS is disabled在集群上,你仍然需要提供sslCA来连接,这很奇怪。
    • @AtulSharma,这不是预期的。当您禁用 TLS 时,您是否重新启动了集群中的实例?如果您更改参数以禁用 TLS,则仅在重新启动后才会生效。欲了解更多信息:docs.aws.amazon.com/documentdb/latest/developerguide/…
    猜你喜欢
    • 1970-01-01
    • 2021-06-10
    • 1970-01-01
    • 1970-01-01
    • 2021-07-01
    • 1970-01-01
    • 2018-05-13
    • 2021-02-14
    • 2021-10-20
    相关资源
    最近更新 更多