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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

При применении этого примера к собственному проекту может потребоваться изменить HttpRequest на HttpRequestData и IActionResult на HttpResponseData, в зависимости от того, используется ли интеграция ASP.NET Core или нет.

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

@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 Триггер
Входные данные
Выходные данные
Ссылка
Azure Cosmos DB (облачная база данных) Триггер
Входные данные
Выходные данные
Ссылка
Анализатор данных Azure Входные данные
Выходные данные
Ссылка
Azure SQL Триггер
Входные данные
Выходные данные
Ссылка
Сетка событий Триггер
Выходные данные
Ссылка
Центры событий Триггер
Выходные данные
Центр Интернета вещей Триггер
Выходные данные
HTTP Триггер Ссылка
Хранение очередей Триггер
Выходные данные
Ссылка
RabbitMQ Триггер
Выходные данные
SendGrid Выходные данные
Сервис Бус Триггер
Выходные данные
Ссылка
СигналР Триггер
Входные данные
Выходные данные
Табличное хранилище данных Входные данные
Выходные данные
Таймер Триггер Ссылка
Twilio Выходные данные Ссылка

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

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

Visual Studio Code

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

Портал Azure

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

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