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


Триггеры и привязки Функций Azure

В этой статье вы узнаете о высокоуровневых понятиях, связанных с триггерами и привязками для функций.

Триггеры вызывают запуск функции. Триггер определяет, как вызывается функция, и функция должна иметь ровно один триггер. Триггеры также могут передавать данные в вашу функцию, аналогично вызовам методов.

Привязка к функции — это способ декларативного подключения функций к другим ресурсам. Привязки либо передают данные в функцию ( входную привязку), либо позволяют записывать данные из функции ( выходная привязка) с помощью параметров привязки. Триггер функции по сути является особым типом входной привязки.

Вы можете комбинировать привязки для достижения оптимального результата в конкретном сценарии функции. Привязки являются необязательными, а функция может иметь одну или несколько входных и/или выходных привязок.

Триггеры и привязки позволяют избежать жестко запрограммированного доступа к другим службам. Функция получает нужные данные (например, содержимое сообщения из очереди) в виде параметров. Вы отправляете данные (например, для создания в очереди сообщения) с использованием возвращаемого значения функции.

Рассмотрим следующие примеры реализации функций:

Пример сценария Триггер Входные привязки Выходные привязки
В очередь поступает новое сообщение, которое запускает функцию для записи в другую очередь. Очередь* Нет Очередь*
Запланированное задание считывает содержимое объектов 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 Выходные данные Ссылка

Код привязки для Python зависит от версии модели Python.

Услуга Примеры Образцы
Хранилище блобов Триггер
Входные данные
Выходные данные
Ссылка
Azure Cosmos DB (облачная база данных) Триггер
Входные данные
Выходные данные
Ссылка
Анализатор данных Azure Входные данные
Выходные данные
Azure SQL Триггер
Входные данные
Выходные данные
Ссылка
Сетка событий Триггер
Выходные данные
Центры событий Триггер
Выходные данные
Центр Интернета вещей Триггер
Выходные данные
HTTP Триггер Ссылка
Хранилище очередей Триггер
Выходные данные
RabbitMQ Триггер
Выходные данные
SendGrid Выходные данные
Сервис Бус Триггер
Выходные данные
Ссылка
Служба Azure SignalR Триггер
Входные данные
Выходные данные
Хранилище таблиц Входные данные
Выходные данные
Таймер Триггер
Twilio Выходные данные

Пользовательские привязки

Вы можете создавать пользовательские входные и выходные привязки. Привязки должны создаваться в .NET, но их можно использовать на любом поддерживаемом языке. Дополнительные сведения о создании пользовательских привязок см. в разделе "Создание пользовательских входных и выходных привязок".