Выполнение кода по запросу с помощью функций Azure

Завершено

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

Триггеры

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

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

Служба Azure Описание триггера
Хранилище BLOB-объектов Запуск функции при обнаружении нового или обновленного большого двоичного объекта.
Azure Cosmos DB Запуск функции при обнаружении вставок и обновлений.
Сетка событий Запуск функции при получении события из Сетки событий Azure.
Event Hubs Запускает функцию при получении события из Центров событий.
Хранилище очередей Запуск функции при поступлении в очередь нового элемента. Сообщение очереди предоставляется в качестве входных данных функции.
Cлужебная шина Запуск функции в ответ на сообщения из очереди служебной шины.

Привязки

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

Триггер — это тип входной привязки, который может инициировать выполнение некоторого кода.

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

Определение примера привязки

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

В следующем фрагменте кода показан файл function.json для этого сценария.

{
  "bindings": [
    {
      "name": "order",
      "type": "queueTrigger",
      "direction": "in",
      "queueName": "myqueue-items",
      "connection": "MY_STORAGE_ACCT_APP_SETTING"
    },
    {
      "name": "$return",
      "type": "table",
      "direction": "out",
      "tableName": "outTable",
      "connection": "MY_TABLE_STORAGE_ACCT_APP_SETTING"
    }
  ]
}

Конфигурация JSON указывает, что наша функция активируется при добавлении сообщения в очередь с именем myqueue-items. Возвращаемое значение функции затем записывается в таблицу outTable в Хранилище таблиц Azure.

Для функций PowerShell запись в выходные привязки выполняется явным образом с помощью командлета Push-OutputBinding.

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

Совет

Чтобы просмотреть и изменить содержимое function.json на портале Azure, на домашней странице выберите приложение-функцию, а затем в правой области выберите Представление JSON. В представлении JSON ресурса отображается идентификатор ресурса и редактируемый код JSON. Чтобы закрыть представление JSON, нажмите значок X в правом верхнем углу области.

Не все языки, поддерживаемые функциями, используют файл function.json для определения функций.

Создание функции на портале Azure

Функции Azure имеет предопределенные шаблоны функций, основанные на определенном типе триггера. Эти шаблоны на выбранном языке позволяют легко приступить к созданию первой функции.

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

Для поддерживаемых языков, использующих файл function.json для определения функций, можно создавать и изменять эти функции непосредственно в портал Azure. К таким языкам, поддерживаемым на портале, относятся JavaScript, PowerShell, Python и скрипт C# (CSX). Языки, определяющие функции непосредственно в самом коде, должны быть разработаны за пределами портала и развернуты в Azure. К этим непортальным поддерживаемым языкам относятся C#, Java, Python (модель программирования версии 2) и JavaScript/TypeScript (модель программирования Node.js версии 4).

Шаблоны функций

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

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

При создании функции из шаблона создается несколько файлов, включая файл конфигурации function.json и файл исходного кода index.js.

Можно создать или изменить функции для приложения-функции, выбрав Функции в категории Функции в меню приложения-функции.

При выборе функции, созданной в приложении-функции, открывается область "Функция". Выбрав пункт Код и тестирование в меню "Функция", вы получаете доступ к действиям в панели команд для тестирования и запуска кода, сохранения или отмены внесенных изменений или получения опубликованного URL-адреса. Выбрав пункт Тест/запуск на панели команд, можно запускать варианты использования для запросов, содержащих строки и значения запросов. Путь функции над полем кода содержит имя открытого файла. В раскрывающемся списке можно выбрать конкретный файл для тестирования или редактирования, например function.json.

Screenshot of the function code and test editor showing the expanded Test/Run view, with menu options highlighted.

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

Тестирование функции Azure

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

  • Тестирование на портале
  • Запуск вручную

Тестирование на портале Azure

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

Запуск функции вручную

Вы можете выполнить функцию, вручную активировав настроенный триггер. Например, если вы используете триггер HTTP, можно инициировать HTTP-запрос к URL-адресу конечной точки функции с помощью средства Postman или cURL. Адрес конечной точки можно найти в определении триггера HTTP (Получить URL-адрес функции).

Информационная панель мониторинга и функции Application Insights

Возможность отслеживать выполнение функций крайне важна как на этапе разработки, так и в рабочей среде. На портале Azure есть панель мониторинга, которая становится доступной после включения интеграции с Application Insights. В меню приложения-функции в разделе Параметры выберите пункт Application Insights, затем — Включить Application Insights, а после этого нажмите кнопку Применить. В диалоговом окне выберите Да. Панель мониторинга Application Insights позволяет быстро просматривать историю операций функции, отображая полученные из Application Insights данные: метку времени, код результата, продолжительность и идентификатор операции.

Screenshot showing the HTTP function Application Insights dashboard with function results, corresponding HTTP status codes, and the Monitoring menu items highlighted.

Панель потоковой передачи журналов

После включения Application Insights на портале Azure можно добавить в функцию операторы ведения журнала для отладки. Вызываемые методы для каждого языка принимают объект ведения журнала. Он позволяет добавлять соответствующие сведения на панель журнала в области Код и тестирование после выполнения теста.

Запись в журналы из кода с помощью log метода объекта context , который передается обработчику. В следующем примере записывается на уровень журнала по умолчанию (сведения):

context.log('Enter your logging statement here');

Запись в журналы из кода с помощью командлета Write-Host , как показано в следующем примере:

Write-Host "Enter your logging statement here"

Ошибки, сбои, предупреждения и аномалии

Метрики или параметры из категории "Исследование" в меню "Функция" можно использовать для мониторинга производительности, диагностики сбоев или настройки десятков предопределенных книг для управления приложением-функцией. Все, от ошибок компиляции и предупреждений в коде до статистики использования по роли.