Я следовал этому руководству по созданию статического исходящего IP-адреса и прикреплению его к экземпляру. Я подтвердил, что исходящий IP-адрес настроен правильно и что исходящие запросы отправляются с этого IP-адреса, используя этот быстрый фрагмент:
const response = await axios.get('https://ipinfo.io/ip');
const externalIP = response.data.trim();
console.info(`Outbound External IP Address: ${externalIP}`);
Я также подтвердил, что зарегистрированный IP-адрес точно такой же, как IP-адрес, внесенный в белый список для базы данных. Однако я все еще не могу подключиться. Как и в случае с Mongoose, ошибок подключения не так уж и много, поэтому я просто получаю сообщение об ошибке сбоя установления связи SSL. Есть идеи?
РЕДАКТИРОВАТЬ 1:
Вот как я подключаюсь к кластеру:
const mongoose = require('mongoose');
const uri = process.env.MONGODB_URI;
let connection;
const connect = async () => {
try {
connection = await mongoose.connect(uri, {
bufferCommands: false, // Disable mongoose buffering
});
return connection;
} catch (e) {
console.error("Could not connect to MongoDB...");
throw e;
}
};
function getConnection() {
return connection;
}
module.exports = { connect, getConnection };
И вот ошибка:
MongooseServerSelectionError: Could not connect to any servers in your MongoDB Atlas cluster. One common reason is that you're trying to access the database from an IP that isn't whitelisted. Make sure your current IP address is on your Atlas cluster's IP whitelist
error: MongoNetworkError: 08123BD0DA3E0000:error:0A000438:SSL routines:ssl3_read_bytes:tlsv1 alert internal error:../deps/openssl/openssl/ssl/record/rec_layer_s3.c:1590:SSL alert number 80
Можете ли вы рассказать, как вы строите свой контейнер? Вы установили на него двоичные файлы SSL?
@JohnHanley Конфигурация MongoDB довольно проста. Я могу нормально подключиться, когда разрешаю все IP-адреса, но не тогда, когда разрешаю только статический исходящий IP-адрес. Я предполагаю, что в конфигурации сети мне чего-то не хватает, что и вызывает это. Возможно, мне придется пойти по другому маршруту вместо статического исходящего IP-адреса.
@guillaumeblaquiere В сборке контейнера нет ничего особенного, просто простой файл Docker. Как отмечалось в моем предыдущем комментарии, это определенно связано с сетью, поскольку изображение работает нормально, и соединение работает нормально, если разрешить все IP-адреса.
Рассматривали ли вы возможность использования сертификатов для аутентификации пользователей вместо внесения в белый список IP-адресов? mongodb.com/docs/manual/tutorial/…
Вы также можете использовать PSC (или пиринг VPC) и внутреннее подключение без внесения в белый список.
Похоже, что у вас может быть ошибка протокола TLS или сбой выделения памяти. На чем работает код? Что такое MONGODB_URI? Вы можете немного изменить URI, чтобы замаскировать его, но я хочу убедиться, что строка подключения верна. Если вы внесете в белый список все IP-адреса, соединение будет работать? В вашей системе мало свободной памяти? Другая возможность заключается в том, что ваше приложение подключается к версии протокола TLS, которую MongoDB не поддерживает. Например, подключение с помощью TLS 1.0, который по умолчанию отключен в MongoDB.
@JohnHanley Спасибо за предложение. Обычно в дополнение к белому списку IP-адресов для аутентификации вместо учетных данных используются сертификаты, так что это не идеальное решение. MONGODB_URI правильный. Разрешив все IP-адреса, я могу подключиться к кластеру. Вместо этого я попробую использовать пиринг VPC.
Пиринг VPC не поможет вам, если экземпляр является общедоступным.

Привет, это просто еще одно предложение.
Вы можете попытаться установить соединение, используя частный IP-доступ из Cloud Run к кластеру MongoDB Atlas. Эта конфигурация гарантирует, что MongoDB подключается исключительно через частные IP-адреса. Эта конфигурация будет использовать пиринг VPC.
Сначала вам необходимо создать соединитель бессерверного доступа VPC. При его создании убедитесь, что ваш регион соответствует бессерверной службе. Используйте собственный диапазон IP-адресов и настройте частный диапазон IP-адресов с маской /28.
Обратите внимание, что эта конфигурация в кластере MongoDB Atlas использует выделенный кластер для пиринга сетей VPC. В списке доступа к атласу MongoDB в разделе безопасности нажмите «Доступ к сети», затем добавьте IP-адрес. В записи списка доступа вы можете ввести частный IP-адрес /28, который вы создали в соединителе доступа к VPC.
Далее необходимо настроить пиринг MongoDB Atlas VPC. Вы можете использовать эту документацию в качестве руководства.
Для пиринга следующим шагом является создание пиринга VPC на GCP. Введите идентификатор проекта и имя сети VPC, которые были предоставлены для настройки пиринга MongoDB Atlas VPC.
Ниже приведен скриншот следующего шага, который необходимо сделать. Подробную инструкцию по этому предложению вы можете найти по этой ссылке

Кому интересно, это работало намного лучше, чем статический исходящий IP-адрес.
Отредактируйте свой вопрос и покажите, как вы подключаетесь, конфигурацию MongoDB и точную ошибку. Как правило, ошибка подтверждения SSL означает, что вы подключились к чему-то, но не обязательно к правильному хосту. Кроме того, IP-адрес вашего экземпляра не вызывает эту ошибку.