Основные понятия. Триггеры и привязки в функциях Azure
В этой статье вы узнаете о высокоуровневых понятиях, связанных с триггерами и привязками функций.
Триггеры — это причина запуска функции. Триггер определяет способ вызова функции, при этом функция должна иметь только один триггер. С триггерами связаны данные, которые обычно являются полезными данными функции.
Привязка к функции — это способ декларативного подключения другого ресурса к функции. Привязки могут быть подключены как входные привязки, выходные привязки или и то, и другое. Данные привязок предоставляются функции в качестве параметров.
Вы можете комбинировать и сопоставлять различные привязки в соответствии со своими потребностями. Привязки необязательны, а у функции может быть одна или несколько входных и выходных привязок.
Триггеры и привязки позволяют избежать жестко запрограммированного доступа к другим службам. Функция получает нужные данные (например, содержимое сообщения из очереди) в виде параметров. Вы отправляете данные (например, для создания в очереди сообщения) с использованием возвращаемого значения функции.
Рассмотрим следующие примеры реализации различных функций.
Пример сценария | Триггер | Входные привязки | Выходные привязки |
---|---|---|---|
Поступает новое сообщение очереди, которое запускает функцию для записи в другую очередь. | Очередь* | Не допускается | Очередь* |
Запланированное задание считывает содержимое хранилища BLOB-объектов и создает новый документ Azure Cosmos DB. | Таймер | Хранилище BLOB-объектов | Azure Cosmos DB |
Сетка событий используется для чтения изображения из хранилища BLOB-объектов и документа из Azure Cosmos DB для отправки сообщения электронной почты. | Сетка событий | Хранилище BLOB-объектов и Azure Cosmos DB | SendGrid |
Веб-перехватчик использует Microsoft Graph для обновления листа Excel. | HTTP | Не допускается | Microsoft Graph |
* Представляет разные очереди
Эти примеры не являются исчерпывающими, но позволяют показать, как можно использовать триггеры и привязки вместе.
Определения триггеров и привязок
Триггеры и привязки определяются по-разному в зависимости от языка разработки.
Язык | Триггеры и привязки настраиваются путем... |
---|---|
Библиотека классов C# | присвоения методов и параметров с помощью атрибутов C# |
Java | присвоения методов и параметров с помощью примечаний Java |
JavaScript/PowerShell/Python/TypeScript | обновление function.json (схема) |
Для языков, которые используют function.json, портал предоставляет пользовательский интерфейс для добавления привязок на вкладке Интеграция. Вы также можете изменить файл непосредственно на портале на вкладке Код + тест функции. Visual Studio Code позволяет легко добавить привязку а файл function.json с помощью удобного набора запросов.
В .NET и Java тип параметра определяет тип входных данных. Например, используйте string
для привязки к тексту триггера очереди, массив байтов — для чтения в двоичном формате и настраиваемый тип — для десериализации объекта. Так как функции библиотеки классов .NET и функции Java не используют function.json для определений привязки, их нельзя создать и изменить на портале. Функции редактирования C# на портале работают на основе скрипта C#, который использует файл function.json вместо атрибутов.
Подробнее о добавлении привязок к существующим функциям см. в статье Подключение функций к службам Azure с помощью привязок.
В языках с динамическим типизированием, таких как JavaScript, используйте свойство dataType
в файле function.json. Например, задайте для dataType
значение binary
, чтобы прочитать содержимое HTTP-запроса в двоичном формате.
{
"dataType": "binary",
"type": "httpTrigger",
"name": "req",
"direction": "in"
}
Другие варианты для dataType
— stream
и string
.
Направление привязки
Все триггеры и привязки имеют свойство direction
в файле function.json:
- Для триггеров направление всегда входящее (
in
). - Для входных и выходных привязок используется как входящее (
in
), так и исходящее (out
) направление. - Некоторые привязки поддерживают специальное направление
inout
. При использованииinout
доступен только Расширенный редактор на вкладке портала Интеграция.
Если вы используете для настройки триггеров и привязок атрибуты в библиотеке классов, направление задается в конструкторе атрибута или вычисляется по типу параметра.
Добавление привязок к функции
Функцию можно подключить к другим службам, добавив входные и выходные привязки. Добавьте привязку, включив в функцию соответствующие ей определения. Инструкции приведены в разделе Добавление привязок к существующей функции в Функциях Azure.
Поддерживаемые привязки
В этой таблице показаны привязки, которые поддерживаются в двух основных версиях среды выполнения Функций Azure.
Тип | 1.x1 | 2.x и выше2 | Триггер | Входные данные | Выходные данные |
---|---|---|---|---|---|
Хранилище BLOB-объектов | ✔ | ✔ | ✔ | ✔ | ✔ |
Azure Cosmos DB | ✔ | ✔ | ✔ | ✔ | ✔ |
Обозреватель данных Azure | ✔ | ✔ | ✔ | ||
Azure SQL | ✔ | ✔ | ✔ | ✔ | |
Dapr4 | ✔ | ✔ | ✔ | ✔ | |
Сетка событий | ✔ | ✔ | ✔ | ✔ | |
Центры событий | ✔ | ✔ | ✔ | ✔ | |
HTTP и веб-перехватчики | ✔ | ✔ | ✔ | ✔ | |
Центр IoT | ✔ | ✔ | ✔ | ||
Kafka3 | ✔ | ✔ | ✔ | ||
Мобильные приложения | ✔ | ✔ | ✔ | ||
Центры уведомлений | ✔ | ✔ | |||
Хранилище очередей | ✔ | ✔ | ✔ | ✔ | |
Redis | ✔ | ✔ | |||
RabbitMQ3 | ✔ | ✔ | ✔ | ||
SendGrid | ✔ | ✔ | ✔ | ||
Служебная шина | ✔ | ✔ | ✔ | ✔ | |
SignalR | ✔ | ✔ | ✔ | ✔ | |
Хранилище таблиц | ✔ | ✔ | ✔ | ✔ | |
Таймер | ✔ | ✔ | ✔ | ||
Twilio | ✔ | ✔ | ✔ |
1 Поддержка завершится для среды выполнения Функции Azure версии 1.x 14 сентября 2026 г. Настоятельно рекомендуется перенести приложения в версию 4.x для полной поддержки.
2 Начиная с среды выполнения 2.x, все привязки, кроме HTTP и таймера, должны быть зарегистрированы. Ознакомьтесь с разделом Регистрация расширений привязки.
3 триггера не поддерживаются в плане потребления. Требуются триггеры, управляемые средой выполнения.
4 Поддерживается только в Kubernetes, IoT Edge и других автономных режимах.
Сведения о том, какие привязки доступны в предварительной версии или утверждены для использования в рабочей среде, см. в статье Поддерживаемые языки в решении "Функции Azure".
Конкретные версии расширения привязки поддерживаются только в то время как поддерживается базовый пакет SDK службы. Изменения в поддержке в базовой версии пакета SDK службы влияют на поддержку используемого расширения.
Примеры кода привязок
Используйте следующую таблицу, чтобы найти примеры конкретных типов привязки, которые показывают, как работать с привязками в функциях. Сначала выберите вкладку языка, соответствующего проекту.
Код привязки для C# зависит от конкретной модели процесса.
Service | Примеры | Примеры |
---|---|---|
Хранилище BLOB-объектов | Триггер Входные данные Выходные данные |
Ссылка |
Azure Cosmos DB | Триггер Входные данные Выходные данные |
Ссылка |
Azure Data Explorer | Входные данные Выходные данные |
Ссылка |
Azure SQL | Триггер Входные данные Выходные данные |
Ссылка |
Сетка событий | Триггер Выходные данные |
Ссылка |
Event Hubs | Триггер Выходные данные |
|
Центр Интернета вещей | Триггер Выходные данные |
|
HTTP | Триггер | Ссылка |
Хранилище очередей | Триггер Выходные данные |
Ссылка |
RabbitMQ | Триггер Выходные данные |
|
SendGrid | Выходные данные | |
Cлужебная шина | Триггер Выходные данные |
Ссылка |
SignalR | Триггер Входные данные Выходные данные |
|
Хранилище таблиц | Входные данные Выходные данные |
|
Таймер | Триггер | Ссылка |
Twilio | Выходные данные | Ссылка |
Service | Примеры | Примеры |
---|---|---|
Хранилище BLOB-объектов | Триггер Входные данные Выходные данные |
Ссылка |
Azure Cosmos DB | Триггер Входные данные Выходные данные |
Ссылка |
Azure Data Explorer | Входные данные Выходные данные |
Ссылка |
Azure SQL | Триггер Входные данные Выходные данные |
|
Сетка событий | Триггер Выходные данные |
Ссылка |
Event Hubs | Триггер Выходные данные |
|
Центр Интернета вещей | Триггер Выходные данные |
|
HTTP | Триггер | Ссылка |
Хранилище очередей | Триггер Выходные данные |
Ссылка |
RabbitMQ | Триггер Выходные данные |
|
SendGrid | Выходные данные | |
Cлужебная шина | Триггер Выходные данные |
Ссылка |
SignalR | Триггер Входные данные Выходные данные |
|
Хранилище таблиц | Входные данные Выходные данные |
|
Таймер | Триггер | Ссылка |
Twilio | Выходные данные | Ссылка |
Service | Примеры | Примеры |
---|---|---|
Хранилище BLOB-объектов | Триггер Входные данные Выходные данные |
Ссылка |
Azure Cosmos DB | Триггер Входные данные Выходные данные |
Ссылка |
Azure Data Explorer | Входные данные Выходные данные |
|
Azure SQL | Триггер Входные данные Выходные данные |
Ссылка |
Сетка событий | Триггер Выходные данные |
Ссылка |
Event Hubs | Триггер Выходные данные |
|
Центр Интернета вещей | Триггер Выходные данные |
|
HTTP | Триггер | Ссылка |
Хранилище очередей | Триггер Выходные данные |
Ссылка |
RabbitMQ | Триггер Выходные данные |
|
SendGrid | Выходные данные | |
Cлужебная шина | Триггер Выходные данные |
Ссылка |
SignalR | Триггер Входные данные Выходные данные |
|
Хранилище таблиц | Входные данные Выходные данные |
|
Таймер | Триггер | Ссылка |
Twilio | Выходные данные | Ссылка |
Service | Примеры | Примеры |
---|---|---|
Хранилище BLOB-объектов | Триггер Входные данные Выходные данные |
Ссылка |
Azure Cosmos DB | Триггер Входные данные Выходные данные |
Ссылка |
Azure SQL | Триггер Входные данные Выходные данные |
|
Сетка событий | Триггер Выходные данные |
Ссылка |
Event Hubs | Триггер Выходные данные |
|
Центр Интернета вещей | Триггер Выходные данные |
|
HTTP | Триггер | Ссылка |
Хранилище очередей | Триггер Выходные данные |
Ссылка |
RabbitMQ | Триггер Выходные данные |
|
SendGrid | Выходные данные | |
Cлужебная шина | Триггер Выходные данные |
Ссылка |
SignalR | Триггер Входные данные Выходные данные |
|
Хранилище таблиц | Входные данные Выходные данные |
|
Таймер | Триггер | Ссылка |
Twilio | Выходные данные | Ссылка |
Код привязки для Python зависит от версии модели Python.
Service | Примеры | Примеры |
---|---|---|
Хранилище BLOB-объектов | Триггер Входные данные Выходные данные |
Ссылка |
Azure Cosmos DB | Триггер Входные данные Выходные данные |
Ссылка |
Azure Data Explorer | Входные данные Выходные данные |
|
Azure SQL | Триггер Входные данные Выходные данные |
Ссылка |
Сетка событий | Триггер Выходные данные |
Ссылка |
Event Hubs | Триггер Выходные данные |
|
Центр Интернета вещей | Триггер Выходные данные |
|
HTTP | Триггер | Ссылка |
Хранилище очередей | Триггер Выходные данные |
Ссылка |
RabbitMQ | Триггер Выходные данные |
|
SendGrid | Выходные данные | |
Cлужебная шина | Триггер Выходные данные |
Ссылка |
SignalR | Триггер Входные данные Выходные данные |
|
Хранилище таблиц | Входные данные Выходные данные |
|
Таймер | Триггер | Ссылка |
Twilio | Выходные данные | Ссылка |
Настраиваемые привязки
Вы можете создавать входные и выходные привязки. Привязки должны создаваться в .NET, но их можно использовать на любом поддерживаемом языке. Подробнее о создании настраиваемых привязок см. в разделе Создание настраиваемых входных и выходных привязок.
Ресурсы
- Выражения привязки и шаблоны
- Использование возвращаемого значения Функции Azure
- Как зарегистрировать выражение привязки
- Тестирование:
- Обработка ошибок привязки