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


Основные понятия. Триггеры и привязки в функциях Azure

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

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

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

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

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

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

Пример сценария Триггер Входные привязки Выходные привязки
Поступает новое сообщение очереди, которое запускает функцию для записи в другую очередь. Очередь* Не допускается Очередь*
Запланированное задание считывает содержимое хранилища BLOB-объектов и создает новый документ Azure Cosmos DB. Таймер Хранилище BLOB-объектов Azure Cosmos DB
Сетка событий используется для чтения изображения из хранилища BLOB-объектов и документа из Azure Cosmos DB для отправки сообщения электронной почты. Сетка событий Хранилище BLOB-объектов и Azure Cosmos DB SendGrid

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

Эти примеры не являются исчерпывающими, но позволяют показать, как можно использовать триггеры и привязки вместе. Более полный набор сценариев см. в Функции 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 определение объекта, которое возвращает http-запрос HttpResponse , а также записывает сообщение в очередь хранилища с помощью привязки 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 для функций:

В Node.js для функций версии 4 вы настраиваете триггеры и привязки с помощью объектов, экспортированных из @azure/functions модуля. Дополнительные сведения см. в руководстве разработчика по Node.js.

Этот пример представляет собой функцию, активированную HTTP, которая создает элемент очереди для каждого полученного HTTP-запроса.

Метод 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 для функций:

В Python for Functions версии 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 Триггер Входные данные Выходные данные
Хранилище 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 Выходные данные Ссылка

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

Service Примеры Примеры
Хранилище BLOB-объектов Триггер
Входные данные
Выходные данные
Ссылка
Azure Cosmos DB Триггер
Входные данные
Выходные данные
Ссылка
Azure Data Explorer Входные данные
Выходные данные
Azure SQL Триггер
Входные данные
Выходные данные
Ссылка
Сетка событий Триггер
Выходные данные
Ссылка
Event Hubs Триггер
Выходные данные
Центр Интернета вещей Триггер
Выходные данные
HTTP Триггер Ссылка
Хранилище очередей Триггер
Выходные данные
Ссылка
RabbitMQ Триггер
Выходные данные
SendGrid Выходные данные
Cлужебная шина Триггер
Выходные данные
Ссылка
SignalR Триггер
Входные данные
Выходные данные
Хранилище таблиц Входные данные
Выходные данные
Таймер Триггер Ссылка
Twilio Выходные данные Ссылка

Настраиваемые привязки

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