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


Общие сведения о привязке хранилища BLOB-объектов Azure для службы "Функции Azure"

Служба "Функции Azure" интегрируются со службой хранилища Azure с помощью триггеров и привязок. Интеграция с хранилищем BLOB-объектов позволяет создавать функции, реагирующие на изменения в данных BLOB-объектов, а также в значениях чтения и записи.

Действие Тип
Выполнение функции при внесении изменений в данные хранилища BLOB-объектов Триггер
Чтение данных из хранилища BLOB-объектов в функции Входная привязка
Разрешить функции записи данных хранилища BLOB-объектов Выходная привязка

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

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

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

Функциональные возможности расширения отличаются в зависимости от версии расширения:

В этой версии появляется возможность подключения с использованием удостоверения, а не секрета. Руководство по настройке приложений-функций с помощью управляемых удостоверений см. в руководстве по созданию приложения-функции с подключениями на основе удостоверений.

Эта версия позволяет выполнить привязку к типам из Azure.Storage.Blobs. Дополнительные сведения об отличиях этих новых типов WindowsAzure.Storage и Microsoft.Azure.Storage способах их миграции в Руководстве по их миграции из Руководства по миграции Azure.Storage.Blobs.

Добавьте расширение в проект, установив пакет NuGet Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs NuGet версии 5.x или более поздней версии.

С использованием .NET CLI:

dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs

Примечание.

Большие двоичные объекты Azure, очереди Azure и таблицы Azure теперь используют отдельные расширения и ссылаются по отдельности. Например, чтобы использовать триггеры и привязки для всех трех служб в приложении изолированного процесса .NET, необходимо добавить в проект следующие пакеты:

Ранее расширения, отправленные вместе как Microsoft.Azure.Functions.Worker.Extensions.Storage версии 4.x. Этот же пакет также имеет версию 5.x, которая ссылается на разделенные пакеты только для BLOB-объектов и очередей. При обновлении ссылок на пакет из более старых версий может потребоваться дополнительно ссылаться на новый пакет NuGet Microsoft.Azure.Functions.Worker.Extensions.Tables . Кроме того, при ссылке на эти более новые разделенные пакеты убедитесь, что вы не ссылаетесь на более старую версию объединенного пакета хранилища, так как это приведет к конфликтам из-за двух определений одних и тех же привязок.

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

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

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

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

В этой версии появляется возможность подключения с использованием удостоверения, а не секрета. Руководство по настройке приложений-функций с помощью управляемых удостоверений см. в руководстве по созданию приложения-функции с подключениями на основе удостоверений.

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

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

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

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

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

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

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

Изолированный рабочий процесс поддерживает типы параметров в соответствии с таблицами ниже.

триггер большого двоичного объекта;

Триггер большого двоичного объекта может привязаться к следующим типам:

Тип Описание
string Содержимое большого двоичного объекта в виде строки. Используется, когда содержимое большого двоичного объекта является простым текстом.
byte[] Байты содержимого большого двоичного объекта.
Сериализуемые в JSON типы Если большой двоичный объект содержит данные JSON, функции пытаются десериализировать данные JSON в обычный тип объекта CLR (POCO).
Поток1 Входной поток содержимого большого двоичного объекта.
BlobClient1,
BlockBlobClient1,
PageBlobClient1,
AppendBlobClient1,
BlobBaseClient1
Клиент, подключенный к большому двоичному объекту. Этот набор типов обеспечивает большую часть управления обработкой большого двоичного объекта и может использоваться для записи обратно в большой двоичный объект, если подключение имеет достаточно разрешений.

1 Для использования этих типов необходимо ссылаться на Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs 6.0.0 или более поздней версии , а также общие зависимости для привязок типов ПАКЕТА SDK.

входная привязка большого двоичного объекта;

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

Тип Описание
string Содержимое большого двоичного объекта в виде строки. Используется, когда содержимое большого двоичного объекта является простым текстом.
byte[] Байты содержимого большого двоичного объекта.
Сериализуемые в JSON типы Если большой двоичный объект содержит данные JSON, функции пытаются десериализировать данные JSON в обычный тип объекта CLR (POCO).
Поток1 Входной поток содержимого большого двоичного объекта.
BlobClient1,
BlockBlobClient1,
PageBlobClient1,
AppendBlobClient1,
BlobBaseClient1
Клиент, подключенный к большому двоичному объекту. Этот набор типов предлагает большую часть управления для обработки БОЛЬШОго двоичного объекта и может использоваться для записи обратно в него, если подключение имеет достаточно разрешений.

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

Тип Описание
T[] или List<T> где T находится один из типов входных привязок большого двоичного объекта Массив или список нескольких больших двоичных объектов. Каждая запись представляет один большой двоичный объект из контейнера. Вы также можете привязаться к любым интерфейсам, реализованным этими типами, например IEnumerable<T>.
BlobContainerClient1 Клиент, подключенный к контейнеру. Этот тип предоставляет большую часть управления для обработки контейнера и может использоваться для записи в него, если подключение имеет достаточно разрешений.

1 Для использования этих типов необходимо ссылаться на Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs 6.0.0 или более поздней версии , а также общие зависимости для привязок типов ПАКЕТА SDK.

выходная привязка большого двоичного объекта.

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

Тип Описание
string Содержимое большого двоичного объекта в виде строки. Используется, когда содержимое большого двоичного объекта является простым текстом.
byte[] Байты содержимого большого двоичного объекта.
Сериализуемые в JSON типы Объект, представляющий содержимое БОЛЬШОго двоичного объекта JSON. Функции пытаются сериализовать обычный тип объекта CLR (POCO) в данные JSON.

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

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

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

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

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

Примечание.

Этот раздел не применяется к версиям расширений до версии 5.0.0. Для этих более ранних версий нет параметров конфигурации приложения-функции для BLOB-объектов.

{
    "version": "2.0",
    "extensions": {
        "blobs": {
            "maxDegreeOfParallelism": 4,
            "poisonBlobThreshold": 1
        }
    }
}
Свойство По умолчанию Description
maxDegreeOfParallelism 8 * (количество доступных ядер) Целочисленное число одновременных вызовов, разрешенное для всех функций, активированных большим двоичным объектом, в данном приложении-функции. Минимальное допустимое значение — 1.
poisonBlobThreshold 5 Целое число раз, чтобы попытаться обработать сообщение, прежде чем переместить его в очередь яда. Минимальное допустимое значение — 1.

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