Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье вы узнаете о высокоуровневых понятиях, связанных с триггерами и привязками для функций.
Триггеры вызывают запуск функции. Триггер определяет, как вызывается функция, и функция должна иметь ровно один триггер. Триггеры также могут передавать данные в вашу функцию, аналогично вызовам методов.
Привязка к функции — это способ декларативного подключения функций к другим ресурсам. Привязки либо передают данные в функцию ( входную привязку), либо позволяют записывать данные из функции ( выходная привязка) с помощью параметров привязки. Триггер функции по сути является особым типом входной привязки.
Вы можете комбинировать привязки для достижения оптимального результата в конкретном сценарии функции. Привязки являются необязательными, а функция может иметь одну или несколько входных и/или выходных привязок.
Триггеры и привязки позволяют избежать жестко запрограммированного доступа к другим службам. Функция получает данные (например, содержимое сообщения из очереди) в параметрах функции. Вы отправляете данные (например, для создания сообщения в очереди) с помощью возвращаемого значения функции.
Рассмотрим следующие примеры реализации функций:
| Пример сценария | Триггер | Входные привязки | Выходные привязки |
|---|---|---|---|
| В очередь поступает новое сообщение, которое запускает функцию для записи в другую очередь. | Очередь | Нет | Очередь |
| Запланированное задание считывает содержимое Хранилище BLOB-объектов Azure и создает новый документ Azure Cosmos DB. | Таймер | Хранилище Blob (Хранилище BLOB-объектов) | Azure Cosmos DB |
| Сетка событий Azure используется для чтения изображения из Хранилище BLOB-объектов и документа из Azure Cosmos DB для отправки сообщения электронной почты. | Сетка событий | Хранилище BLOB-объектов и Azure Cosmos DB | SendGrid |
Представляет разные очереди.
Эти примеры не должны быть исчерпывающими, но они показывают, как можно использовать триггеры и привязки вместе. Для более полного набора сценариев см. раздел Сценарии Функции Azure.
Подсказка
Функции Azure не требует использования входных и выходных привязок для подключения к службам #REF!. Вы всегда можете создать в коде #REF! клиента и использовать его для передачи данных. Дополнительные сведения см. в разделе "Подключение к службам".
Определения триггеров и привязок
В следующем примере показана функция с триггером HTTP с выходной привязкой, которая записывает сообщение в очередь служба хранилища Azure.
Для функций библиотеки классов C# можно настроить триггеры и привязки путем декорирования методов и параметров атрибутами C#. Конкретный атрибут, который вы применяете, может зависеть от модели среды выполнения C#:
- Изолированная рабочая модель
- Модель внутрипроцессного процесса
Триггер HTTP () определен в методе для функции с именем , возвращающей объект:
[Function("HttpExample")]
public MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequest req)
В этом примере показано определение объекта. Определение объекта возвращает в HTTP-запросе и записывает сообщение в очередь хранилища с помощью привязки .
public class MultiResponse
{
[QueueOutput("outqueue", Connection = "AzureWebJobsStorage")]
public string[] Messages { get; set; }
public IActionResult HttpResponse { get; set; }
}
Дополнительные сведения см. в руководстве по C# для изолированных рабочих моделей.
Устаревшие функции скрипта C# используют файл определения. См. дополнительные сведения в руководстве разработчика по Функции Azure скриптам C# (.csx).
Для функций Java можно настроить триггеры и привязки путем аннотирования определенных методов и параметров. HTTP-триггер определяется на методе для функции с именем . Функция записывает в очередь хранилища с именем , которая определяется аннотацией на параметре :
@FunctionName("HttpExample")
public HttpResponseMessage run(
@HttpTrigger(name = "req", methods = {HttpMethod.GET, HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS)
HttpRequestMessage<Optional<String>> request,
@QueueOutput(name = "msg", queueName = "outqueue",
connection = "AzureWebJobsStorage") OutputBinding<String> msg,
final ExecutionContext context) {
context.getLogger().info("Java HTTP trigger processed a request.");
Дополнительные сведения см. в руководстве разработчика Java.
Способ определения триггеров и привязок для функций Node.js зависит от конкретной версии Node.js для Функции Azure:
- версия 4
- версия 3
В Node.js для Функции Azure версии 4 можно настроить триггеры и привязки с помощью объектов, экспортированных из модуля @azure/functions. Дополнительные сведения см. в руководстве разработчика поNode.js.
- версия 4
- версия 3
Метод экспортированного объекта определяет триггер HTTP. Метод определяет выходную привязку на этом триггере в .
const { app, output } = require('@azure/functions');
const queueOutput = output.storageQueue({
queueName: 'outqueue',
connection: 'MyStorageConnectionAppSetting',
});
app.http('httpTrigger1', {
methods: ['GET', 'POST'],
authLevel: 'anonymous',
extraOutputs: [queueOutput],
handler: async (request, context) => {
const body = await request.text();
context.extraOutputs.set(queueOutput, body);
return { body: 'Created queue item.' };
},
});
- версия 4
- версия 3
Метод экспортированного объекта определяет триггер HTTP. Метод определяет выходную привязку на этом триггере в .
import { app, HttpRequest, HttpResponseInit, InvocationContext, output } from '@azure/functions';
const queueOutput = output.storageQueue({
queueName: 'outqueue',
connection: 'MyStorageConnectionAppSetting',
});
export async function httpTrigger1(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> {
const body = await request.text();
context.extraOutputs.set(queueOutput, body);
return { body: 'Created queue item.' };
}
app.http('httpTrigger1', {
methods: ['GET', 'POST'],
authLevel: 'anonymous',
extraOutputs: [queueOutput],
handler: httpTrigger1,
});
Этот пример файла определяет функцию:
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "Request",
"methods": [
"get",
"post"
]
},
{
"type": "http",
"direction": "out",
"name": "Response"
},
{
"type": "queue",
"direction": "out",
"name": "msg",
"queueName": "outqueue",
"connection": "AzureWebJobsStorage"
}
]
}
Дополнительные сведения см. в руководстве разработчика PowerShell.
Способ определения функции зависит от версии Python для Функции Azure:
- версия 2
- версия 1
В Python для Функции Azure версии 2 вы определяете функцию непосредственно в коде с помощью декораторов:
app = func.FunctionApp(http_auth_level=func.AuthLevel.ANONYMOUS)
@app.route(route="HttpExample")
@app.queue_output(arg_name="msg", queue_name="outqueue", connection="AzureWebJobsStorage")
def HttpExample(req: func.HttpRequest, msg: func.Out [func.QueueMessage]) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
Рекомендации по привязке
Не все службы поддерживают входные и выходные привязки. Ознакомьтесь с конкретным расширением привязки для конкретных примеров кода для привязок.
Триггеры и привязки определяются по-разному в зависимости от языка разработки. Выберите язык в верхней части этой статьи.
Имена триггеров и привязки ограничены буквенно-цифровыми символами и символами подчеркивания.
Задача добавления привязок в функцию
Функцию можно подключить к другим службам с помощью входных или выходных привязок. Добавьте привязку, добавив в функцию определенные определения. Дополнительные сведения см. в статье Добавление привязок к существующей функции в Функции Azure.
Функции Azure поддерживает несколько привязок, которые должны быть настроены правильно. Например, функция может считывать данные из очереди (входная привязка) и записывать данные в базу данных (выходную привязку).
Поддерживаемые привязки
В этой таблице показаны привязки, поддерживаемые в основных версиях среды выполнения Функции Azure:
| Тип | 4.x1 | 1.x2 | Триггер | Ввод | Выходные данные |
|---|---|---|---|---|---|
| Хранилище BLOB-объектов | ✔ | ✔ | ✔ | ✔ | ✔ |
| Azure Cosmos DB | ✔ | ✔ | ✔ | ✔ | ✔ |
| Azure Data Explorer | ✔ | ✔ | ✔ | ||
| Azure SQL | ✔ | ✔ | ✔ | ✔ | |
| Dapr4 | ✔ | ✔ | ✔ | ✔ | |
| Сетка событий | ✔ | ✔ | ✔ | ✔ | |
| Центры событий | ✔ | ✔ | ✔ | ✔ | |
| HTTP и веб-перехватчики | ✔ | ✔ | ✔ | ✔ | |
| Центр Интернета вещей | ✔ | ✔ | ✔ | ||
| Kafka3 | ✔ | ✔ | ✔ | ||
| Мобильные приложения | ✔ | ✔ | ✔ | ||
| Протокол контекста модели | ✔ | ✔ | |||
| Центры уведомлений | ✔ | ✔ | |||
| Хранилище очередей | ✔ | ✔ | ✔ | ✔ | |
| Редис | ✔ | ✔ | ✔ | ✔ | |
| RabbitMQ3 | ✔ | ✔ | ✔ | ||
| SendGrid | ✔ | ✔ | ✔ | ||
| служебная шина | ✔ | ✔ | ✔ | ✔ | |
| Служба Azure SignalR | ✔ | ✔ | ✔ | ✔ | |
| Хранилище таблиц | ✔ | ✔ | ✔ | ✔ | |
| Таймер | ✔ | ✔ | ✔ | ||
| Twilio | ✔ | ✔ | ✔ |
- Зарегистрируйте все привязки, кроме HTTP и таймера. См. раздел Регистрация расширений привязки Функции Azure. Этот шаг не требуется при использовании среды выполнения Функций версии 1.x.
- Support заканчивается для версии 1.x среды выполнения Функции Azure 14 сентября 2026. Перенос приложений в версию 4.x для полной поддержки.
- Триггеры не поддерживаются в тарифном плане Consumption. Для этого типа привязки требуются триггеры, управляемые средой выполнения.
- Этот тип привязки поддерживается только в Kubernetes, Azure IoT Edge и других автономных режимах.
Сведения о том, какие привязки находятся в предварительной версии или утверждены для использования в рабочей среде, см. поддерживаемые языки.
Определенные версии расширений привязки поддерживаются только в то время как поддерживается базовый пакет SDK службы. Изменения в поддержке в базовой версии пакета SDK службы влияют на поддержку используемого расширения.
Типы пакетов SDK
Расширения привязки Функции Azure используют SDK службы #REF! для подключения к службам #REF!. Определенные типы пакетов SDK, используемые привязками, могут повлиять на работу с данными в функциях. Некоторые привязки поддерживают типы пакета SDK, обеспечивающие более широкие функциональные возможности и лучшую интеграцию со службой, а другие используют более универсальные типы, такие как строки или массивы байтов. Если они доступны, использование типов, специфичных для SDK, может обеспечить такие преимущества, как лучшая безопасность типов, более простая обработка данных и доступ к функциям, специфичным для службы.
В этой таблице указаны расширения привязки, которые в настоящее время поддерживают типы пакетов SDK:
| Extension | Типы | Уровень поддержки |
|---|---|---|
| Хранилище BLOB-объектов Azure | BlobClientBlobContainerClientBlockBlobClientPageBlobClientAppendBlobClient |
Триггер: GA Входные данные: GA (общедоступная версия) |
| Azure Cosmos DB | CosmosClientDatabaseContainer |
Входные данные: GA (общедоступная версия) |
| Сетка событий Azure | CloudEventEventGridEvent |
Триггер: GA |
| Центры событий Azure | EventDataEventHubProducerClient |
Триггер: GA |
| Хранилище очередей Azure | QueueClientQueueMessage |
Триггер: GA |
| Служебная шина Azure | ServiceBusClientServiceBusReceiverServiceBusSenderServiceBusMessage |
Триггер: GA |
| #REF! | TableClientTableEntity |
Входные данные: GA (общедоступная версия) |
Рекомендации по типам пакета SDK:
- При использовании выражений привязки, использующих данные триггера , нельзя использовать типы пакетов SDK для самого триггера.
- В сценариях вывода, в которых можно использовать тип SDK, создайте и работайте с клиентами SDK напрямую, а не с помощью выходной привязки.
- Триггер Azure Cosmos DB использует канал изменений Azure Cosmos DB и предоставляет элементы канала изменений как типы, которые могут быть сериализованы в формате JSON. В результате типы SDK не поддерживаются этим триггером.
Дополнительные сведения см. в руководстве разработчика по пакетам SDK для C#.
| Extension | Типы | Уровень поддержки | Образцы |
|---|---|---|---|
| Хранилище BLOB-объектов Azure | BlobClientContainerClientStorageStreamDownloader |
Триггер: GA Входные данные: GA (общедоступная версия) |
QuickstartBlobClientContainerClientStorageStreamDownloader |
| Azure Cosmos DB | CosmosClientDatabaseProxyContainerProxy |
Ввод: предварительный просмотр |
QuickstartContainerProxyCosmosClientDatabaseProxy |
| Центры событий Azure | EventData |
Триггер: предварительная версия |
QuickstartEventData |
| Служебная шина Azure | ServiceBusReceivedMessage |
Триггер: предварительная версия |
QuickstartServiceBusReceivedMessage |
Рекомендации по типам пакета SDK:
- В сценариях вывода, в которых можно использовать тип SDK, создайте и работайте с клиентами SDK напрямую, а не с помощью выходной привязки.
- Триггер Azure Cosmos DB использует канал изменений Azure Cosmos DB и предоставляет элементы канала изменений в виде сериализуемых в формате JSON. В результате типы SDK не поддерживаются этим триггером.
Типы SDK поддерживаются только при использовании модели программирования Python версии 2. Дополнительные сведения см. в разделе SDK type bindings в руководстве разработчика Python.
| Extension | Типы | Уровень поддержки |
|---|---|---|
| Хранилище BLOB-объектов Azure | BlobClientContainerClientReadableStream |
Preview |
| Служебная шина Azure | ServiceBusClientServiceBusReceiverServiceBusSenderServiceBusMessage |
Preview |
Типы SDK поддерживаются только при использовании модели программирования Node версии 4. Дополнительные сведения см. в руководстве разработчика по пакету SDK Node.js.
| Extension | Типы | Уровень поддержки |
|---|---|---|
| Хранилище BLOB-объектов Azure | BlobClientBlobContainerClient |
Preview |
Дополнительные сведения см. в разделе типов SDK в руководстве разработчика Java.
Это важно
Типы пакетов SDK в настоящее время не поддерживаются для приложений PowerShell.
Примеры кода для привязок
В следующей таблице приведены дополнительные примеры конкретных типов привязки, которые показывают, как работать с привязками в функциях. Сначала выберите вкладку языка, соответствующую проекту.
Код привязки для C# зависит от конкретной модели процесса.
- Изолированный процесс
- В процессе
| Услуга | Примеры | Образцы |
|---|---|---|
| Хранилище Blob (Хранилище BLOB-объектов) | Триггер Входные данные Выходные данные |
Link |
| Azure Cosmos DB | Триггер Входные данные Выходные данные |
Link |
| Azure Data Explorer (инструмент для исследования данных) | Входные данные Выходные данные |
Link |
| Azure SQL | Триггер Входные данные Выходные данные |
Ссылка |
| Сетка событий | Триггер Выходные данные |
Link |
| Центры событий | Триггер Выходные данные |
|
| Центр Интернета вещей | Триггер Выходные данные |
|
| HTTP | Триггер | Link |
| Хранилище очередей | Триггер Выходные данные |
Link |
| RabbitMQ | Триггер Выходные данные |
|
| SendGrid | Выходные данные | |
| служебная шина | Триггер Выходные данные |
Link |
| Служба Azure SignalR | Триггер Входные данные Выходные данные |
|
| Хранилище таблиц | Входные данные Выходные данные |
|
| Таймер | Триггер | Link |
| Twilio | Выходные данные | Link |
| Услуга | Примеры | Образцы |
|---|---|---|
| Хранилище Blob (Хранилище BLOB-объектов) | Триггер Входные данные Выходные данные |
Link |
| Azure Cosmos DB | Триггер Входные данные Выходные данные |
Link |
| Azure Data Explorer (инструмент для исследования данных) | Входные данные Выходные данные |
Link |
| Azure SQL | Триггер Входные данные Выходные данные |
|
| Сетка событий | Триггер Выходные данные |
Link |
| Центры событий | Триггер Выходные данные |
|
| Центр Интернета вещей | Триггер Выходные данные |
|
| HTTP | Триггер | Link |
| Хранилище очередей | Триггер Выходные данные |
Link |
| RabbitMQ | Триггер Выходные данные |
|
| SendGrid | Выходные данные | |
| служебная шина | Триггер Выходные данные |
Link |
| Служба Azure SignalR | Триггер Входные данные Выходные данные |
|
| Хранилище таблиц | Входные данные Выходные данные |
|
| Таймер | Триггер | Link |
| Twilio | Выходные данные |
| Услуга | Примеры | Образцы |
|---|---|---|
| Хранилище Blob (Хранилище BLOB-объектов) | Триггер Входные данные Выходные данные |
Link |
| Azure Cosmos DB | Триггер Входные данные Выходные данные |
Link |
| Azure Data Explorer (инструмент для исследования данных) | Входные данные Выходные данные |
|
| Azure SQL | Триггер Входные данные Выходные данные |
Link |
| Сетка событий | Триггер Выходные данные |
|
| Центры событий | Триггер Выходные данные |
|
| Центр Интернета вещей | Триггер Выходные данные |
|
| HTTP | Триггер | Link |
| Хранилище очередей | Триггер Выходные данные |
Link |
| RabbitMQ | Триггер Выходные данные |
|
| SendGrid | Выходные данные | |
| служебная шина | Триггер Выходные данные |
Link |
| Служба Azure SignalR | Триггер Входные данные Выходные данные |
|
| Хранилище таблиц | Входные данные Выходные данные |
|
| Таймер | Триггер | |
| Twilio | Выходные данные |
| Услуга | Примеры | Образцы |
|---|---|---|
| Хранилище Blob (Хранилище BLOB-объектов) | Триггер Входные данные Выходные данные |
|
| Azure Cosmos DB | Триггер Входные данные Выходные данные |
|
| Azure SQL | Триггер Входные данные Выходные данные |
|
| Сетка событий | Триггер Выходные данные |
|
| Центры событий | Триггер Выходные данные |
|
| Центр Интернета вещей | Триггер Выходные данные |
|
| HTTP | Триггер | Link |
| Хранилище очередей | Триггер Выходные данные |
|
| RabbitMQ | Триггер Выходные данные |
|
| SendGrid | Выходные данные | |
| служебная шина | Триггер Выходные данные |
|
| Служба Azure SignalR | Триггер Входные данные Выходные данные |
|
| Хранилище таблиц | Входные данные Выходные данные |
|
| Таймер | Триггер | |
| Twilio | Выходные данные |
Код привязки для Python зависит от версии модели Python.
- версия 2
- версия 1
| Услуга | Примеры | Образцы |
|---|---|---|
| Хранилище Blob (Хранилище BLOB-объектов) | Триггер Входные данные Выходные данные |
Link |
| Azure Cosmos DB | Триггер Входные данные Выходные данные |
Link |
| Azure Data Explorer (инструмент для исследования данных) | Входные данные Выходные данные |
|
| Azure SQL | Триггер Входные данные Выходные данные |
Link |
| Сетка событий | Триггер Выходные данные |
|
| Центры событий | Триггер Выходные данные |
|
| Центр Интернета вещей | Триггер Выходные данные |
|
| HTTP | Триггер | Link |
| Хранилище очередей | Триггер Выходные данные |
|
| RabbitMQ | Триггер Выходные данные |
|
| SendGrid | Выходные данные | |
| служебная шина | Триггер Выходные данные |
Link |
| Служба Azure SignalR | Триггер Входные данные Выходные данные |
|
| Хранилище таблиц | Входные данные Выходные данные |
|
| Таймер | Триггер | |
| Twilio | Выходные данные |
Пользовательские привязки
Вы можете создавать пользовательские входные и выходные привязки. Привязки должны создаваться в .NET, но их можно использовать на любом поддерживаемом языке. Дополнительные сведения о создании пользовательских привязок см. в разделе Создание пользовательских входных и выходных привязок.
Связанный контент
- Выражения привязки и шаблоны
- Регистрируйте расширения привязки для Функции Azure
- Вручную запустите функцию, не активированную по протоколу HTTP
- Обработка ошибок привязки