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


Привязки таблиц Azure для службы "Функции Azure"

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

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

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

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

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

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

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

Эта версия позволяет привязать к типам из Azure.Data.Tables. В ней также представлена возможность использования Azure Cosmos DB для таблицы.

Это расширение доступно путем установки пакета NuGet Microsoft.Azure.Functions.Worker.Extensions.Tables в проект с помощью версии 5.x или более поздней версии расширений для больших двоичных объектов и очередей.

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

# Install the Azure Tables extension
dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Tables --version 1.0.0

# Update the combined Azure Storage extension (to a version which no longer includes Azure Tables)
dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Storage --version 5.0.0

Примечание.

Большие двоичные объекты 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 параметр. Затем в теле этого делегата вызовите ConfigureTablesExtension() объект:

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

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

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

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

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

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

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

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

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

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

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

Входная привязка таблиц Azure

При работе с одной сущностью таблицы входная привязка "Таблицы Azure" может привязаться к следующим типам:

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

При работе с несколькими сущностями из запроса входная привязка таблиц Azure может привязаться к следующим типам:

Тип Описание
IEnumerable<T> где T реализуется ITableEntity Перечисление сущностей, возвращаемых запросом. Каждая запись представляет одну сущность. Тип T должен реализовать ITableEntity или иметь строковое свойство и строковое RowKey PartitionKey свойство.
TableClient1 Клиент, подключенный к таблице. Это обеспечивает большую часть управления для обработки таблицы и может использоваться для записи в нее, если подключение имеет достаточно разрешений.

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

Выходная привязка таблиц Azure

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

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

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

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

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

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