Ошибка закрытия соединения Mongodb в функции azure - PullRequest
0 голосов
/ 05 мая 2020

Я запускаю с функцией azure и azure cosmosdb (mongodb). Я пытаюсь получить данные из cosmosdb при условии и записать в cosmosdb, если данные для данного условия недоступны, а после этого выполнить некоторую пост-операцию. Поток моей функции azure выглядит следующим образом:

  1. пользовательский ввод
  2. входные данные предварительной обработки
  3. выборка из cosmosdb (mongodb) на основе предварительно обработанных данных
  4. if condition true вставить в db
  5. постобработка

На 3-м шаге у меня есть код для подключения к cosmosdb с использованием pymon go.

uri = "Mongodb connection string after creating cosmosdb" 
client = pymongo.MongoClient(uri)

Это дает ошибку

ServerSelectionTimeoutError: соединение закрыто

Нужно ли мне добавить какое-то разрешение на чтение, запись базы данных или какой-либо другой параметр, разрешающий соединение между function app и cosmos db.

Нужна помощь

1 Ответ

0 голосов
/ 06 мая 2020

Судя по комментариям, вы используете брандмауэр.

Проблема в том, что Azure Functions имеет выделенные IP-адреса только в определенных моделях хостинга, см. https://docs.microsoft.com/en-us/azure/azure-functions/functions-scale для получения полной информации.

Если у вас есть брандмауэр, вам необходимо убедиться, что IP-адрес, на котором выполняется код, находится в белом списке. Некоторые модели хостинга не предоставляют статический c IP, поэтому это невозможно.

Azure Cosmos DB предоставляет настройку брандмауэра для разрешения всех служб Azure: Firewall settings

Другой альтернативой являются виртуальные сети, но виртуальные сети тоже недоступно для всех планов хостинга Functions.

Похоже, вам могут потребоваться функции на плане Premium для поддержки этой функции, если вы не хотите открывать все услуги Azure.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...