Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье вы узнаете о высокоуровневых понятиях, связанных с триггерами и привязками для функций.
Триггеры вызывают запуск функции. Триггер определяет, как вызывается функция, и функция должна иметь ровно один триггер. Триггеры также могут передавать данные в вашу функцию, аналогично вызовам методов.
Привязка к функции — это способ декларативного подключения функций к другим ресурсам. Привязки либо передают данные в функцию ( входную привязку), либо позволяют записывать данные из функции ( выходная привязка) с помощью параметров привязки. Триггер функции по сути является особым типом входной привязки.
Вы можете комбинировать привязки для достижения оптимального результата в конкретном сценарии функции. Привязки являются необязательными, а функция может иметь одну или несколько входных и/или выходных привязок.
Триггеры и привязки позволяют избежать жестко запрограммированного доступа к другим службам. Функция получает нужные данные (например, содержимое сообщения из очереди) в виде параметров. Вы отправляете данные (например, для создания в очереди сообщения) с использованием возвращаемого значения функции.
Рассмотрим следующие примеры реализации функций:
| Пример сценария | Триггер | Входные привязки | Выходные привязки |
|---|---|---|---|
| В очередь поступает новое сообщение, которое запускает функцию для записи в другую очередь. | Очередь* | Нет | Очередь* |
| Запланированное задание считывает содержимое объектов Azure Blob Storage и создает новый документ в Azure Cosmos DB. | Таймер | Хранилище блобов | Azure Cosmos DB (облачная база данных) |
| Сетка событий Azure используется для чтения изображения из хранилища BLOB-объектов и документа из Azure Cosmos DB для отправки сообщения электронной почты. | Сетка событий | Хранилище BLOB-объектов и Azure Cosmos DB | SendGrid |
* Представляет разные очереди.
Эти примеры не должны быть исчерпывающими, но они показывают, как можно использовать триггеры и привязки вместе. Более полный набор сценариев см. в сценариях Функций Azure.
Подсказка
Функции Azure не требуют использования входных и выходных привязок для подключения к службам Azure. Вы всегда можете создать клиент Azure SDK в коде и использовать его вместо передачи данных. Дополнительные сведения см. в разделе "Подключение к службам".
Определения триггеров и привязок
В следующем примере показана функция с триггером HTTP с выходной привязкой, которая записывает сообщение в очередь службы хранилища Azure.
Для функций библиотеки классов C# можно настроить триггеры и привязки путем декорирования методов и параметров атрибутами C#. Конкретный атрибут, который вы применяете, может зависеть от модели среды выполнения C#:
Триггер HTTP (HttpTrigger) определен в методе Run для функции с именем HttpExample , возвращающей MultiResponse объект:
[Function("HttpExample")]
public static MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequestData req,
FunctionContext executionContext)
{
В этом примере показано MultiResponse определение объекта. Определение объекта возвращает HttpResponse в HTTP-запросе и записывает сообщение в очередь хранилища с помощью привязки QueueOutput.
public class MultiResponse
{
[QueueOutput("outqueue",Connection = "AzureWebJobsStorage")]
public string[] Messages { get; set; }
public HttpResponseData HttpResponse { get; set; }
}
Дополнительные сведения см. в руководстве по C# для изолированных рабочих моделей.
Устаревшие функции скрипта C# используют function.json файл определения. Дополнительные сведения см. в справочнике разработчика по скрипту C# Функции Azure (CSX).
Для функций Java можно настроить триггеры и привязки путем аннотирования определенных методов и параметров. HTTP-триггер @HttpTrigger определяется на методе run для функции с именем HttpTriggerQueueOutput. Функция записывает в очередь хранилища, которую аннотация @QueueOutput определяет для параметра message.
@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:
В Node.js для Функций Azure версии 4 вы настраиваете триггеры и привязки с помощью объектов, экспортированных из @azure/functions модуля. Дополнительные сведения см. в руководстве разработчика поNode.js.
Метод http экспортированного app объекта определяет триггер HTTP. Метод storageQueue определяет выходную привязку на этом триггере в output.
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.' };
},
});
Метод http экспортированного app объекта определяет триггер HTTP. Метод storageQueue определяет выходную привязку на этом триггере в output.
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,
});
Этот пример function.json файла определяет функцию:
{
"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:
В 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:
| Тип | 1.x1 | 2.x и более позднихверсий 2 | Триггер | Ввод | Выходные данные |
|---|---|---|---|---|---|
| Хранилище блобов | ✔ | ✔ | ✔ | ✔ | ✔ |
| Azure Cosmos DB | ✔ | ✔ | ✔ | ✔ | ✔ |
| Обозреватель данных Azure | ✔ | ✔ | ✔ | ||
| Azure SQL | ✔ | ✔ | ✔ | ✔ | |
| Dapr4 | ✔ | ✔ | ✔ | ✔ | |
| Сетка событий | ✔ | ✔ | ✔ | ✔ | |
| Центры событий | ✔ | ✔ | ✔ | ✔ | |
| HTTP и веб-перехватчики | ✔ | ✔ | ✔ | ✔ | |
| Центр IoT | ✔ | ✔ | ✔ | ||
| Kafka3 | ✔ | ✔ | ✔ | ||
| Мобильные приложения | ✔ | ✔ | ✔ | ||
| Протокол контекста модели | ✔ | ✔ | |||
| Центры уведомлений | ✔ | ✔ | |||
| Хранилище очередей | ✔ | ✔ | ✔ | ✔ | |
| Редис | ✔ | ✔ | ✔ | ✔ | |
| RabbitMQ3 | ✔ | ✔ | ✔ | ||
| SendGrid | ✔ | ✔ | ✔ | ||
| Служебная шина | ✔ | ✔ | ✔ | ✔ | |
| Служба SignalR Azure | ✔ | ✔ | ✔ | ✔ | |
| Хранилище таблиц | ✔ | ✔ | ✔ | ✔ | |
| Таймер | ✔ | ✔ | ✔ | ||
| Twilio | ✔ | ✔ | ✔ |
1Поддержка завершится для среды выполнения Функций Azure версии 1.x 14 сентября 2026 г. Настоятельно рекомендуется перенести приложения в версию 4.x для полной поддержки.
2 Начиная с среды выполнения 2.x, все привязки, кроме HTTP и таймера, должны быть зарегистрированы. См. раздел "Регистрация расширений привязки функций Azure".
3 триггера не поддерживаются в плане потребления. Для этого типа привязки требуются триггеры, управляемые средой выполнения.
4 Этот тип привязки поддерживается только в Kubernetes, Azure IoT Edge и других автономных режимах.
Сведения о том, какие привязки находятся в предварительной версии или утверждены для использования в рабочей среде, см. поддерживаемые языки.
Определенные версии расширений привязки поддерживаются только в то время как поддерживается базовый пакет SDK службы. Изменения в поддержке в базовой версии пакета SDK службы влияют на поддержку используемого расширения.
Примеры кода для привязок
В следующей таблице приведены дополнительные примеры конкретных типов привязки, которые показывают, как работать с привязками в функциях. Сначала выберите вкладку языка, соответствующую проекту.
Код привязки для C# зависит от конкретной модели процесса.
| Услуга | Примеры | Образцы |
|---|---|---|
| Хранилище блобов |
Триггер Входные данные Выходные данные |
Ссылка |
| Azure Cosmos DB (облачная база данных) |
Триггер Входные данные Выходные данные |
Ссылка |
| Анализатор данных Azure |
Входные данные Выходные данные |
Ссылка |
| Azure SQL |
Триггер Входные данные Выходные данные |
Ссылка |
| Сетка событий |
Триггер Выходные данные |
Ссылка |
| Центры событий |
Триггер Выходные данные |
|
| Центр Интернета вещей |
Триггер Выходные данные |
|
| HTTP | Триггер | Ссылка |
| Хранилище очередей |
Триггер Выходные данные |
Ссылка |
| RabbitMQ |
Триггер Выходные данные |
|
| SendGrid | Выходные данные | |
| Сервис Бус |
Триггер Выходные данные |
Ссылка |
| Служба Azure SignalR |
Триггер Входные данные Выходные данные |
|
| Хранилище таблиц |
Входные данные Выходные данные |
|
| Таймер | Триггер | Ссылка |
| Twilio | Выходные данные | Ссылка |
| Услуга | Примеры | Образцы |
|---|---|---|
| Хранилище блобов |
Триггер Входные данные Выходные данные |
Ссылка |
| Azure Cosmos DB (облачная база данных) |
Триггер Входные данные Выходные данные |
Ссылка |
| Анализатор данных Azure |
Входные данные Выходные данные |
Ссылка |
| Azure SQL |
Триггер Входные данные Выходные данные |
|
| Сетка событий |
Триггер Выходные данные |
Ссылка |
| Центры событий |
Триггер Выходные данные |
|
| Центр Интернета вещей |
Триггер Выходные данные |
|
| HTTP | Триггер | Ссылка |
| Хранилище очередей |
Триггер Выходные данные |
Ссылка |
| RabbitMQ |
Триггер Выходные данные |
|
| SendGrid | Выходные данные | |
| Сервис Бус |
Триггер Выходные данные |
Ссылка |
| Служба Azure SignalR |
Триггер Входные данные Выходные данные |
|
| Хранилище таблиц |
Входные данные Выходные данные |
|
| Таймер | Триггер | Ссылка |
| Twilio | Выходные данные |
| Услуга | Примеры | Образцы |
|---|---|---|
| Хранилище блобов |
Триггер Входные данные Выходные данные |
Ссылка |
| Azure Cosmos DB (облачная база данных) |
Триггер Входные данные Выходные данные |
Ссылка |
| Анализатор данных Azure |
Входные данные Выходные данные |
|
| Azure SQL |
Триггер Входные данные Выходные данные |
Ссылка |
| Сетка событий |
Триггер Выходные данные |
|
| Центры событий |
Триггер Выходные данные |
|
| Центр Интернета вещей |
Триггер Выходные данные |
|
| HTTP | Триггер | Ссылка |
| Хранилище очередей |
Триггер Выходные данные |
Ссылка |
| RabbitMQ |
Триггер Выходные данные |
|
| SendGrid | Выходные данные | |
| Сервис Бус |
Триггер Выходные данные |
Ссылка |
| Служба Azure SignalR |
Триггер Входные данные Выходные данные |
|
| Хранилище таблиц |
Входные данные Выходные данные |
|
| Таймер | Триггер | |
| Twilio | Выходные данные |
| Услуга | Примеры | Образцы |
|---|---|---|
| Хранилище блобов |
Триггер Входные данные Выходные данные |
|
| Azure Cosmos DB (облачная база данных) |
Триггер Входные данные Выходные данные |
|
| Azure SQL |
Триггер Входные данные Выходные данные |
|
| Сетка событий |
Триггер Выходные данные |
|
| Центры событий |
Триггер Выходные данные |
|
| Центр Интернета вещей |
Триггер Выходные данные |
|
| HTTP | Триггер | Ссылка |
| Хранилище очередей |
Триггер Выходные данные |
|
| RabbitMQ |
Триггер Выходные данные |
|
| SendGrid | Выходные данные | |
| Сервис Бус |
Триггер Выходные данные |
|
| Служба Azure SignalR |
Триггер Входные данные Выходные данные |
|
| Хранилище таблиц |
Входные данные Выходные данные |
|
| Таймер | Триггер | |
| Twilio | Выходные данные |
Код привязки для Python зависит от версии модели Python.
| Услуга | Примеры | Образцы |
|---|---|---|
| Хранилище блобов |
Триггер Входные данные Выходные данные |
Ссылка |
| Azure Cosmos DB (облачная база данных) |
Триггер Входные данные Выходные данные |
Ссылка |
| Анализатор данных Azure |
Входные данные Выходные данные |
|
| Azure SQL |
Триггер Входные данные Выходные данные |
Ссылка |
| Сетка событий |
Триггер Выходные данные |
|
| Центры событий |
Триггер Выходные данные |
|
| Центр Интернета вещей |
Триггер Выходные данные |
|
| HTTP | Триггер | Ссылка |
| Хранилище очередей |
Триггер Выходные данные |
|
| RabbitMQ |
Триггер Выходные данные |
|
| SendGrid | Выходные данные | |
| Сервис Бус |
Триггер Выходные данные |
Ссылка |
| Служба Azure SignalR |
Триггер Входные данные Выходные данные |
|
| Хранилище таблиц |
Входные данные Выходные данные |
|
| Таймер | Триггер | |
| Twilio | Выходные данные |
Пользовательские привязки
Вы можете создавать пользовательские входные и выходные привязки. Привязки должны создаваться в .NET, но их можно использовать на любом поддерживаемом языке. Дополнительные сведения о создании пользовательских привязок см. в разделе "Создание пользовательских входных и выходных привязок".