Поделиться через


Общие сведения о триггере Azure Cosmos DB и привязках в службе "Функции Azure" 2.x и более поздних версий

В этой серии статей описано, как использовать привязки Azure Cosmos DB в службе "Функции Azure" 2.x и более поздних версий. Служба "Функции Azure" поддерживает привязки триггера, а также входные и выходные привязки для Azure Cosmos DB.

Действие Тип
Выполнение функции при создании или изменении документа Azure Cosmos DB Триггер
Чтение документа Azure Cosmos DB Входная привязка
Сохранение изменений в документе Azure Cosmos DB Выходная привязка

Примечание.

Эта информация относится к службе "Функции Azure" 2.x и более поздних версий. Для получения дополнительных сведений об использовании Функций версии 1.x см. раздел Функции 1.х.

Эта привязка называлась DocumentDB. В Функции Azure версии 2.x и выше триггер, привязки и пакет называются Azure Cosmos DB.

Поддерживаемые API

Привязки Azure Cosmos DB поддерживаются только для использования с Azure Cosmos DB для NoSQL. Поддержка Azure Cosmos DB для таблицы предоставляется с помощью привязок хранилища таблиц, начиная с расширения 5.x. Для всех других API Azure Cosmos DB необходимо получить доступ к базе данных из функции с помощью статического клиента для API, включая Azure Cosmos DB для MongoDB, Azure Cosmos DB для Cassandra и Azure Cosmos DB для Apache Gremlin.

Установка расширения

Устанавливаемый пакет расширения NuGet зависит от режима C#, который используется в приложении-функции:

Функции выполняются в изолированном рабочем процессе C#. Дополнительные сведения см. в руководстве по запуску Функции Azure C# в изолированном рабочем процессе.

Процесс установки расширения зависит от версии расширения:

Эта версия расширения привязок Azure Cosmos DB представляет возможность подключения с помощью удостоверения вместо секрета. Руководство по настройке приложений-функций с помощью управляемых удостоверений см. в руководстве по созданию приложения-функции с подключениями на основе удостоверений.

Добавьте расширение в проект, установив пакет NuGet версии 4.x.

Если вы пишете приложение с помощью F#, необходимо также настроить это расширение в рамках конфигурации запуска приложения. В вызове ConfigureFunctionsWorkerDefaults() или ConfigureFunctionsWebApplication()добавьте делегат, принимающее IFunctionsWorkerApplication параметр. Затем в теле этого делегата вызовите ConfigureCosmosDBExtension() объект:

let hostBuilder = new HostBuilder()
hostBuilder.ConfigureFunctionsWorkerDefaults(fun (context: HostBuilderContext) (appBuilder: IFunctionsWorkerApplicationBuilder) ->
    appBuilder.ConfigureCosmosDBExtension() |> ignore
) |> ignore

Установка пакета

Расширение привязок Azure Cosmos DB является частью пакета расширений, который указан в файле проекта host.json . Возможно, потребуется изменить этот пакет, чтобы изменить версию привязки, а также в том случае если пакеты еще не установлены. Дополнительные сведения см. в разделе Пакет расширений.

Из-за изменений схемы в пакете SDK для Azure Cosmos DB версии 4.x расширения Azure Cosmos DB требуется azure-functions-java-library версии 3.0.0 для функций Java.

Эта версия пакета содержит версию 4.x расширения привязок Azure Cosmos DB, которая представляет возможность подключения с помощью удостоверения вместо секрета. Руководство по настройке приложений-функций с помощью управляемых удостоверений см. в руководстве по созданию приложения-функции с подключениями на основе удостоверений.

Эту версию расширения можно добавить из предварительной версии пакета расширений 4. Для этого необходимо добавить или заменить следующий код в файле host.json:

{
  "version": "2.0",
  "extensionBundle": {
    "id": "Microsoft.Azure.Functions.ExtensionBundle.Preview",
    "version": "[4.0.0, 5.0.0)"
  }
}

Для получения дополнительных сведений см. раздел Обновление расширений.

Типы привязки

Типы привязки, поддерживаемые для .NET, зависят от версии расширения и режима выполнения C#, что может быть одним из следующих типов:

Изолированная библиотека классов рабочих процессов, скомпилированная функция C# выполняется в процессе, изолированном от среды выполнения.

Выберите версию, чтобы просмотреть сведения о типе привязки для режима и версии.

Изолированный рабочий процесс поддерживает типы параметров в соответствии с таблицами ниже. Поддержка привязки к типам из Microsoft.Azure.Cosmosдоступна в предварительной версии.

Триггер Cosmos DB

Если требуется, чтобы функция обрабатывала один документ, триггер Cosmos DB может привязаться к следующим типам:

Тип Описание
Сериализуемые в JSON типы Функции пытаются десериализировать данные JSON документа из канала изменений Cosmos DB в обычный тип объекта CLR (POCO).

Если требуется, чтобы функция обрабатывала пакет документов, триггер Cosmos DB может привязаться к следующим типам:

Тип Описание
IEnumerable<T>где T является сериализуемым типом JSON Перечисление сущностей, включенных в пакет. Каждая запись представляет один документ из канала изменений Cosmos DB.

Входная привязка Cosmos DB

Если требуется, чтобы функция обрабатывала один документ, входная привязка Cosmos DB может привязаться к следующим типам:

Тип Описание
Сериализуемые в JSON типы Функции пытаются десериализировать данные JSON документа в обычный тип объекта CLR (POCO).

Если требуется, чтобы функция обрабатывала несколько документов из запроса, входная привязка Cosmos DB может привязаться к следующим типам:

Тип Описание
IEnumerable<T>где T является сериализуемым типом JSON Перечисление сущностей, возвращаемых запросом. Каждая запись представляет один документ.
CosmosClient1 Клиент, подключенный к учетной записи Cosmos DB.
База данных1 Клиент, подключенный к базе данных Cosmos DB.
Контейнер1 Клиент, подключенный к контейнеру Cosmos DB.

1 Для использования этих типов необходимо ссылаться на Microsoft.Azure.Functions.Worker.Extensions.CosmosDB 4.4.0 или более поздней версии , а также общие зависимости для привязок типов SDK.

Выходная привязка Cosmos DB

Если требуется, чтобы функция записывала в один документ, выходная привязка Cosmos DB может привязаться к следующим типам:

Тип Описание
Сериализуемые в JSON типы Объект, представляющий содержимое JSON документа. Функции пытаются сериализовать обычный тип объекта CLR (POCO) в данные JSON.

Если требуется выполнить запись функции в несколько документов, выходная привязка Cosmos DB может привязаться к следующим типам:

Тип Описание
T[] где T сериализуемый тип JSON Массив, содержащий несколько документов. Каждая запись представляет один документ.

Для других сценариев вывода создайте и используйте CosmosClient с другими типами из Microsoft.Azure.Cosmos напрямую. Пример использования внедрения зависимостей для создания типа клиента из пакета SDK Azure см. в статье "Регистрация клиентов Azure".

Исключения и коды возврата

Привязка Справочные материалы
Azure Cosmos DB Коды состояния HTTP для Azure Cosmos DB

Параметры файла host.json

В этом разделе описываются параметры конфигурации, доступные для этой привязки в версии 2.x или новее. Параметры в файле host.json применяются ко всем функциям в экземпляре приложения-функции. В приведенном ниже примере файла host.json содержатся только параметры этой привязки для версии 2.x или новее. Дополнительные сведения о параметрах конфигурации приложения-функции в версии 2.x или более поздней см. в статье Справочник по файлу host.json для Функций Azure.

{
    "version": "2.0",
    "extensions": {
        "cosmosDB": {
            "connectionMode": "Gateway",
            "userAgentSuffix": "MyDesiredUserAgentStamp"
        }
    }
}
Свойство По умолчанию Description
connectionMode Gateway Режим подключения, используемый функцией при подключении к службе Azure Cosmos DB. Возможные значения: Direct и Gateway.
userAgentSuffix Н/Д Добавляет указанное строковое значение ко всем запросам, выполняемым триггером или привязкой к службе. Это упрощает отслеживание действий в Azure Monitor на основе конкретного приложения-функции, а также фильтрацию по User Agent.

Следующие шаги