При использовании 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>
Я думаю, что у вас есть все, что вам нужно для воспроизведения. Какие-нибудь мысли? Любая подсказка может помочь.