В настоящее время я могу создать источник данных и индекс с помощью HTTP-запросов через Postman. И мой Azure AI Search, и мой CosmosDB для Mongo отключены для общего доступа.
POST-запрос для моего источника данных, который работает:
POST https://example-mongo.search.windows.net/datasources?api-version=2024-07-01
Content-Type: application/json
api-key: [my key for azure search]
{
"name" : "collection-datasource",
"description" : "Anything you want, or nothing at all",
"type" : "cosmosdb",
"credentials" : {
"connectionString" : "AccountEndpoint=https://example-mongo.documents.azure.com:443/;AccountKey=abcd==;Database=DB;ApiKind=MongoDB"
},
"container": {
"name": "collection"
}
}
POST-запрос для индексатора, который не работает и выдает ошибку 403:
POST https://example-mongo.search.windows.net/indexers?api-version=2024-07-01
Content-Type: application/json
api-key: [my key for azure search]
{
"name": "collection-indexer",
"description": null,
"dataSourceName": "collection-datasource",
"targetIndexName": "collection-index", #Created previously through postman as well
"parameters": {
"batchSize": null,
"maxFailedItems": null,
"maxFailedItemsPerBatch": null
},
"fieldMappings": [
{
"sourceFieldName": "productDescription",
"targetFieldName": "productDescriptionCustom",
"mappingFunction": null
}
]
}
Ошибка 403:
Error with data source: Response status code does not indicate success: Forbidden (403);
Substatus: 0; ActivityId: 1ffa970a-5bb7-42fa-8ace-968fc329bae1;
Reason: (Request originated from IP --- through public internet.
This is blocked by your Cosmos DB account firewall settings.
More info: https://aka.ms/cosmosdb-tsg-forbidden\r\nActivityId: --,
Microsoft.Azure.Documents.Common/2.14.0, Windows/10.0.20348 cosmos-netstandard-sdk/3.30.20);
Please adjust your data source definition in order to proceed
Та же ошибка возникает, когда я пытаюсь создать индексатор через портал с существующим индексом и источником данных.
Я не понимаю, что означает фраза «Пожалуйста, измените определение источника данных». Могу ли я каким-то образом добавить строку подключения для моего CosmosDB в свой запрос на создание индексатора? Или есть еще одна проблема, которую мне нужно исправить?
Сначала настройте параметры брандмауэра учетной записи Cosmos DB, чтобы разрешить доступ из Когнитивного поиска Azure. Благодаря этому мы можем добавить диапазон IP-адресов или тег службы Когнитивного поиска Azure в брандмауэр Cosmos DB.
Согласно этому ресурсу, индексаторы Azure AI Search не могут устанавливать исходящие соединения через частные конечные точки Cosmos DB для MongoDB, только через ограничение IP, поэтому я ответил на свой собственный комментарий здесь. (Learn.microsoft.com/en-us/azure/search/…)
В версии RU, особенно при использовании API MongoDB, можно ограничивать доступ через брандмауэры и виртуальные сети. он по своей сути не поддерживает исходящие соединения через частные конечные точки
Индексаторы Cognitive Search не могут использовать частные конечные точки для прямого доступа к CosmoDB для MongoDB. Это означает, что когда общедоступный доступ полностью отключен в Cosmos DB, служба поиска Azure не сможет подключиться к источнику данных, если только это не будет осуществляться через разрешенный IP-адрес или тег службы.
Первый скриншот доступен только с MongoDB (виртуальное ядро)? Я использую RU-версию и не уверен, что вижу эту опцию на своей странице «Сеть». Кроме того, это вообще невозможно, когда в CosmosDB полностью отключен публичный доступ? Я просто не понимаю, почему добавление источника данных было простым, а добавление индексатора — нет.