Основные понятия триггеров и привязок в Функциях AzureAzure Functions triggers and bindings concepts

В этой статье вы узнаете о высокоуровневых концепциях, связанных с триггерами и привязками функций.In this article you learn the high-level concepts surrounding functions triggers and bindings.

Триггеры являются причиной выполнения функции.Triggers are what cause a function to run. Триггер определяет, как вызывается функция, а функция должна иметь только один триггер.A trigger defines how a function is invoked and a function must have exactly one trigger. С триггерами связаны данные, которые обычно являются полезными данными функции.Triggers have associated data, which is often provided as the payload of the function.

Привязка к функции — это способ декларативного подключения другого ресурса к функции; привязки могут быть подключены как входные привязки, выходные привязкиили и то, и другое.Binding to a function is a way of declaratively connecting another resource to the function; bindings may be connected as input bindings, output bindings, or both. Данные из привязок предоставляются в функцию в качестве параметров.Data from bindings is provided to the function as parameters.

Вы можете комбинировать и сопоставлять различные привязки в соответствии со своими потребностями.You can mix and match different bindings to suit your needs. Привязки необязательны, а у функции может быть одна или несколько входных и выходных привязок.Bindings are optional and a function might have one or multiple input and/or output bindings.

Триггеры и привязки позволяют избежать прописано доступа к другим службам.Triggers and bindings let you avoid hardcoding access to other services. Функция получает нужные данные (например, содержимое сообщения из очереди) в виде параметров.Your function receives data (for example, the content of a queue message) in function parameters. Вы отправляете данные (например, для создания в очереди сообщения) с использованием возвращаемого значения функции.You send data (for example, to create a queue message) by using the return value of the function.

Рассмотрим следующие примеры реализации различных функций.Consider the following examples of how you could implement different functions.

Пример сценарияExample scenario ТриггерTrigger Входная привязкаInput binding Выходная привязкаOutput binding
Поступает новое сообщение очереди, которое запускает функцию для записи в другую очередь.A new queue message arrives which runs a function to write to another queue. Очереди*Queue* NoneNone Очереди*Queue*
Запланированное задание считывает содержимое хранилища BLOB-объектов и создает новый документ Cosmos DB.A scheduled job reads Blob Storage contents and creates a new Cosmos DB document. ТаймерTimer Хранилище BLOB-объектовBlob Storage Cosmos DBCosmos DB
Сетка событий используется для чтения изображения из хранилища BLOB-объектов и документа из Cosmos DB для отправки сообщения электронной почты.The Event Grid is used to read an image from Blob Storage and a document from Cosmos DB to send an email. Сетка событий AzureEvent Grid Хранилище BLOB-объектов и Cosmos DBBlob Storage and Cosmos DB SendGridSendGrid
Веб-перехватчик, использующий Microsoft Graph для обновления листа Excel.A webhook that uses Microsoft Graph to update an Excel sheet. HTTPHTTP NoneNone Microsoft GraphMicrosoft Graph

* Представляет различные очереди* Represents different queues

Эти примеры не являются исчерпывающими, но предоставляются для иллюстрации того, как можно использовать триггеры и привязки вместе.These examples are not meant to be exhaustive, but are provided to illustrate how you can use triggers and bindings together.

Определения триггеров и привязокTrigger and binding definitions

Триггеры и привязки определяются по-разному в зависимости от подхода к разработке.Triggers and bindings are defined differently depending on the development approach.

ПлатформаPlatform Триггеры и привязки настраиваются...Triggers and bindings are configured by...
Библиотека классов C#C# class library      Наименование методов и параметров с помощью атрибутов C#     decorating methods and parameters with C# attributes
Все остальные (включая портал Azure)All others (including Azure portal)      Обновление function.jsв (схема)     updating function.json (schema)

Портал предоставляет пользовательский интерфейс для этой конфигурации, но вы можете изменить файл напрямую, открыв Расширенный редактор , доступный через вкладку Интеграция функции.The portal provides a UI for this configuration, but you can edit the file directly by opening the Advanced editor available via the Integrate tab of your function.

В .NET тип параметра определяет тип данных для входных данных.In .NET, the parameter type defines the data type for input data. Например, используйте string для привязки к тексту триггера очереди, массив байтов для чтения в двоичном виде и пользовательский тип для десериализации в объект.For instance, use string to bind to the text of a queue trigger, a byte array to read as binary and a custom type to de-serialize to an object.

В языках с динамическим типированием, таких как JavaScript, используйте свойство dataType в файле function.json.For languages that are dynamically typed such as JavaScript, use the dataType property in the function.json file. Например, задайте для dataType значение binary, чтобы прочитать содержимое HTTP-запроса в двоичном формате.For example, to read the content of an HTTP request in binary format, set dataType to binary:

{
    "dataType": "binary",
    "type": "httpTrigger",
    "name": "req",
    "direction": "in"
}

Другие варианты для dataType — stream и string.Other options for dataType are stream and string.

Направление привязкиBinding direction

Все триггеры и привязки имеют свойство direction в файле function.json:All triggers and bindings have a direction property in the function.json file:

  • Для триггеров направление всегда входящее (in).For triggers, the direction is always in
  • Для входных и выходных привязок используется как входящее (in), так и исходящее (out) направление.Input and output bindings use in and out
  • Некоторые привязки поддерживают специальное направление inout.Some bindings support a special direction inout. При использовании inout вкладки Интеграция на портале доступен только Расширенный редактор .If you use inout, only the Advanced editor is available via the Integrate tab in the portal.

Если вы используете для настройки триггеров и привязок атрибуты в библиотеке классов, направление задается в конструкторе атрибута или вычисляется по типу параметра.When you use attributes in a class library to configure triggers and bindings, the direction is provided in an attribute constructor or inferred from the parameter type.

Добавление привязок к функцииAdd bindings to a function

Вы можете подключить функцию к другим службам с помощью входных или выходных привязок.You can connect your function to other services by using input or output bindings. Добавьте привязку, добавив определенные определения в функцию.Add a binding by adding its specific definitions to your function. Дополнительные сведения см. в разделе Добавление привязок в существующую функцию в функциях Azure.To learn how, see Add bindings to an existing function in Azure Functions.

Поддерживаемые привязкиSupported bindings

В этой таблице показаны привязки, которые поддерживаются в двух основных версиях среды выполнения Функций Azure.This table shows the bindings that are supported in the major versions of the Azure Functions runtime:

ТипType 1.x1.x 2.x и выше12.x and higher1 ТриггерTrigger Входные данныеInput Выходные данныеOutput
Хранилище BLOB-объектовBlob storage
Azure Cosmos DBAzure Cosmos DB
Dapr3Dapr3
Сетка событийEvent Grid
Центры событийEvent Hubs
HTTP и веб-перехватчикиHTTP & webhooks
Центр Интернета вещейIoT Hub
Kafka2Kafka2
Мобильные приложенияMobile Apps
Центры уведомленийNotification Hubs
Хранилище очередейQueue storage
RabbitMQ2RabbitMQ2
SendGridSendGrid
Служебная шинаService Bus
SignalRSignalR
Хранилище таблицTable storage
ТаймерTimer
TwilioTwilio

1 Начиная со среды выполнения версии 2.х, все привязки, кроме HTTP и Timer, должны быть зарегистрированы.1 Starting with the version 2.x runtime, all bindings except HTTP and Timer must be registered. Ознакомьтесь с разделом Регистрация расширений привязки.See Register binding extensions.

2 Триггеры не поддерживаются в плане потребления.2 Triggers aren't supported in the Consumption plan. Требуются триггеры, управляемые средой выполнения.Requires runtime-driven triggers.

3 Поддерживается только в Kubernetes, IoT Edge и других автономных режимах.3 Supported only in Kubernetes, IoT Edge, and other self-hosted modes only.

Сведения о том, какие привязки доступны в предварительной версии или утверждены для использования в рабочей среде, см. в статье Поддерживаемые языки в решении "Функции Azure".For information about which bindings are in preview or are approved for production use, see Supported languages.

Примеры кода привязокBindings code examples

Используйте следующую таблицу, чтобы найти примеры конкретных типов привязки, которые показывают, как работать с привязками в функциях.Use the following table to find examples of specific binding types that show you how to work with bindings in your functions. Сначала выберите вкладку Language (язык), соответствующую проекту.First, choose the language tab that corresponds to your project.

СлужбаService ПримерыExamples ПримерыSamples
Хранилище BLOB-объектовBlob storage ТриггерTrigger
ВводInput
Выходные данныеOutput
СсылкаLink
Azure Cosmos DBAzure Cosmos DB ТриггерTrigger
ВводInput
Выходные данныеOutput
СсылкаLink
Сетка событийEvent Grid ТриггерTrigger
Выходные данныеOutput
СсылкаLink
Центры событийEvent Hubs ТриггерTrigger
Выходные данныеOutput
Центр Интернета вещейIoT Hub ТриггерTrigger
Выходные данныеOutput
HTTPHTTP ТриггерTrigger СсылкаLink
Хранилище очередейQueue storage ТриггерTrigger
Выходные данныеOutput
СсылкаLink
SendGridSendGrid Выходные данныеOutput
Cлужебная шинаService Bus ТриггерTrigger
Выходные данныеOutput
СсылкаLink
SignalRSignalR ТриггерTrigger
ВводInput
Выходные данныеOutput
Хранилище таблицTable storage ВводInput
Выходные данныеOutput
ТаймерTimer ТриггерTrigger СсылкаLink
TwilioTwilio Выходные данныеOutput СсылкаLink

РесурсыResources

Дальнейшие шагиNext steps