Назад | Перейти на главную страницу

MongoDB размещен на проблеме подключения EC2

Я фронтенд-программист, пытаюсь изучить больше серверных технологий.

Я устанавливаю базу данных Mongo на сервере EC2, и у меня есть лямбда-функция, которую я пытаюсь подключить к моей базе данных mongo.

import * as mongoose from "mongoose";

mongoose.Promise = global.Promise;
let isConnected: boolean = false;

export const connectToDatabase = () => {
  if (isConnected) {
    console.log('using existing database connection');
    return Promise.resolve();
  } else {
    console.log('using new database connection', { isConnected });
    console.log(process.env.MONGODB_URL);
    return mongoose.connect(encodeURI(process.env.MONGODB_URL), {
      auth: {
        user: process.env.MONGODB_USER,
        password: process.env.MONGODB_PASSWORD
      }
    }).then(db => {
      isConnected = true;
    });
  }
};

Вот мой журнал ошибок при тестировании функции:

2018-05-30T20:51:41.977Z    40fb5cd7-644b-11e8-b6d8-f74282cd6db5    using new database connection { isConnected: false }
2018-05-30T20:51:41.978Z    40fb5cd7-644b-11e8-b6d8-f74282cd6db5    mongodb://PRIVATE_IP:27017/myDeck
2018-05-30T20:51:42.041Z    40fb5cd7-644b-11e8-b6d8-f74282cd6db5    (node:1) UnhandledPromiseRejectionWarning: MongoNetworkError: failed to connect to server [PRIVATE_IP:27017] on first connect [MongoNetworkError: getaddrinfo ENOTFOUND PRIVATE_IP PRIVATE_IP:27017]

Это адрес, к которому я пытаюсь подключиться из своей функции: mongodb://PRIVATE_IP:27017/myDeck

Сервер EC2 находится в том же VPC, и я создаю правило для входящего трафика в своей группе безопасности EC2.

Я нашел ответ на свой вопрос, мой сервер mongodb запускался с bind_ip, равным localhost, и, следовательно, не мог получить соединение от лямбда.

Я использовал bind_ip_all для тестирования, и он работал нормально.