Подключитесь к удаленному MongoDB из Serverless / Lambda - PullRequest
1 голос
/ 10 марта 2019

При использовании Serverless / Lambda и Node мне не удается подключиться к удаленной базе данных MongoDB. База данных размещена на отдельном сервере EC2.

Вот мой код функции без сервера:

module.exports.migrateMongoToCompose = async (event, context) => {
    const MongoClient = require('mongodb').MongoClient;
    const assert = require('assert');

    console.log(1)

    const mongoUrl = "mongodb://<username>:<password>@ec2-13-52-114-61.us-west-1.compute.amazonaws.com:27017/<dbname>";

    // Connect to source DB
    MongoClient.connect(mongoUrl, function(err, client) {
        console.log(2, err, client)

        assert.equal(null, err);

        console.log("Connected successfully to mongodb", mongoUrl, <dbname>);

        const db = client.db('<dbname>');

        client.close();
    });

};

Вот часть конфигурационного файла без сервера:

provider:
  name: aws
  runtime: nodejs8.10
  memorySize: 1024
  region: us-west-1

У меня было удивительное количество проблем с этим. Пробовал каждую комбинацию, которую я могу придумать для URI Монго, пытался использовать useNewUrlParser, пытался подключиться к другой удаленной базе данных, размещенной на Compose.com. Все, что я сделал, привело к ошибкам.

Когда я угадываю свои права доступа к серверу EC2 / MongoDB, я помню, что у меня нет проблем с подключением через командную строку на моем Mac с помощью этой команды:

mongo --host mongodb://<username>:<password>@<host>:27017/<dbname>

Я думаю, что у вас есть все, что вам нужно для воспроизведения. Какие-нибудь мысли? Любая подсказка может помочь.

...