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


Подключение функций к службам Azure с помощью привязок

При создании функции код триггера для конкретного языка добавляется в project из набора шаблонов триггеров. Если вы хотите подключить функцию к другим службам с помощью входных или выходных привязок, необходимо добавить в функцию определенные определения привязки. Дополнительные сведения о привязках см. в разделе концепции триггеров и привязок в Azure Functions.

Локальная разработка

При локальной разработке функций необходимо обновить код функции, чтобы добавить привязки. Для языков, использующих function.json, Visual Studio Code предоставляет средства для добавления привязок в функцию.

Добавление привязок вручную на основе примеров

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

При добавлении привязки к существующей функции необходимо добавить заметки, относящиеся к привязке, в определение функции в коде.

При добавлении привязки к существующей функции необходимо обновить код функции и добавить определение в файл конфигурации function.json.

При добавлении привязки к существующей функции необходимо обновить определение функции в зависимости от модели:

Необходимо добавить заметки, относящиеся к привязке, в определение функции в коде.

В следующем примере показано определение функции после добавления выходной привязки Queue Storage к функции с HTTP-триггером:

Так как функция, активировавшая HTTP, также возвращает http-ответ, функция возвращает MultiResponse объект, представляющий выходные данные HTTP и очереди.

[Function("HttpExample")]
public MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequest req)

В этом примере приведено определение MultiResponse объекта, включающего выходную привязку:

public class MultiResponse
{
    [QueueOutput("outqueue",Connection = "AzureWebJobsStorage")]
    public string[] Messages { get; set; }
    public IActionResult HttpResponse { get; set; }
}

В этом примере используется интеграция ASP.NET Core. Если вы не используете интеграцию ASP.NET Core, необходимо изменить HttpRequest на HttpRequestData и IActionResult на HttpResponseData.

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

@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) {

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

const { app, output } = require('@azure/functions');

const sendToQueue = output.storageQueue({
  queueName: 'outqueue',
  connection: 'AzureWebJobsStorage',
});

app.http('HttpExample', {
  methods: ['GET', 'POST'],
  authLevel: 'anonymous',
  extraOutputs: [sendToQueue],
  handler: async (request, context) => {
    try {
      context.log(`Http function processed request for url "${request.url}"`);

      const name = request.query.get('name') || (await request.text());
      context.log(`Name: ${name}`);

      if (name) {
        const msg = `Name passed to the function ${name}`;
        context.extraOutputs.set(sendToQueue, [msg]);
        return { body: msg };
      } else {
        context.log('Missing required data');
        return { status: 404, body: 'Missing required data' };
      }
    } catch (error) {
      context.log(`Error: ${error}`);
      return { status: 500, body: 'Internal Server Error' };
    }
  },
});

Способ определения выходной привязки зависит от версии модели Node.js. Дополнительные сведения, включая ссылки на пример кода привязки, к которому можно обратиться, см. в разделе "Добавление привязок к функции".

$outputMsg = $name
Push-OutputBinding -name msg -Value $outputMsg

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

@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.')

Способ определения выходной привязки зависит от версии модели Python. Дополнительные сведения, включая ссылки на пример кода привязки, к которому можно обратиться, см. в разделе "Добавление привязок к функции".

import {
  app,
  output,
  HttpRequest,
  HttpResponseInit,
  InvocationContext,
  StorageQueueOutput,
} from '@azure/functions';

const sendToQueue: StorageQueueOutput = output.storageQueue({
  queueName: 'outqueue',
  connection: 'AzureWebJobsStorage',
});

export async function HttpExample(
  request: HttpRequest,
  context: InvocationContext,
): Promise<HttpResponseInit> {
  try {
    context.log(`Http function processed request for url "${request.url}"`);

    const name = request.query.get('name') || (await request.text());
    context.log(`Name: ${name}`);

    if (name) {
      const msg = `Name passed to the function ${name}`;
      context.extraOutputs.set(sendToQueue, [msg]);
      return { body: msg };
    } else {
      context.log('Missing required data');
      return { status: 404, body: 'Missing required data' };
    }
  } catch (error) {
    context.log(`Error: ${error}`);
    return { status: 500, body: 'Internal Server Error' };
  }
}

app.http('HttpExample', {
  methods: ['GET', 'POST'],
  authLevel: 'anonymous',
  handler: HttpExample,
});

Способ определения выходной привязки зависит от версии модели Node.js. Дополнительные сведения, включая ссылки на пример кода привязки, к которому можно обратиться, см. в разделе "Добавление привязок к функции".

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

Код привязки для C# зависит от конкретной модели процесса.

Услуга Примеры Образцы
Blob-хранилище (Blob Storage) Триггер
Input
Output
Link
Azure Cosmos DB Триггер
Входные данные
Выходные данные
Link
Azure Data Explorer Input
Output
Link
Azure SQL Триггер
Input
Output
Link
Сетка событий Триггер
Выходные данные
Link
Центры событий Триггер
Выходные данные
IoT Hub Триггер
Выходные данные
HTTP Триггер Link
Хранилище очередей Триггер
Output
Link
RabbitMQ Триггер
Выходные данные
SendGrid Выходные данные
Service Bus Триггер
Выходные данные
Link
Azure SignalR Service Триггер
Входные данные
Выходные данные
Хранилище таблиц Input
Output
Таймер Триггер Link
Twilio Выходные данные Link
Услуга Примеры Образцы
Blob-хранилище (Blob Storage) Триггер
Input
Output
Link
Azure Cosmos DB Триггер
Входные данные
Выходные данные
Link
Azure Data Explorer Input
Output
Azure SQL Триггер
Input
Output
Link
Сетка событий Триггер
Выходные данные
Центры событий Триггер
Выходные данные
IoT Hub Триггер
Выходные данные
HTTP Триггер Link
Хранилище очередей Триггер
Output
Link
RabbitMQ Триггер
Выходные данные
SendGrid Выходные данные
Service Bus Триггер
Выходные данные
Link
Azure SignalR Service Триггер
Входные данные
Выходные данные
Хранилище таблиц Input
Output
Таймер Триггер
Twilio Выходные данные

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

Услуга Примеры Образцы
Blob-хранилище (Blob Storage) Триггер
Input
Output
Link
Azure Cosmos DB Триггер
Входные данные
Выходные данные
Link
Azure Data Explorer Input
Output
Azure SQL Триггер
Input
Output
Link
Сетка событий Триггер
Выходные данные
Центры событий Триггер
Выходные данные
IoT Hub Триггер
Выходные данные
HTTP Триггер Link
Хранилище очередей Триггер
Output
RabbitMQ Триггер
Выходные данные
SendGrid Выходные данные
Service Bus Триггер
Выходные данные
Link
Azure SignalR Service Триггер
Входные данные
Выходные данные
Хранилище таблиц Input
Output
Таймер Триггер
Twilio Выходные данные

код Visual Studio

При использовании кода Visual Studio для разработки функции и функции используется файл function.json, расширение Azure Functions может автоматически добавлять привязку к существующему файлу function.json. Дополнительные сведения см. в разделе "Добавление входных и выходных привязок".

Azure portal

При разработке функций в Azure portal вы добавляете входные и выходные привязки в вкладку Integrate для данной функции. Новые привязки добавляются в файл function.json или в атрибуты метода в зависимости от языка. В следующих статьях показаны примеры добавления привязок к существующей функции на портале:

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