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

Завершено

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

Триггеры

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

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

Служба Azure Описание триггера
Хранилище BLOB-объектов Запуск функции при обнаружении нового или обновленного большого двоичного объекта.
Azure Cosmos DB (облачная база данных) Запуск функции при обнаружении вставок и обновлений.
Сетка событий Запуск функции при получении события из Сетки событий Azure.
Центры событий Запускает функцию при получении события из Центров событий.
Хранилище очередей Запуск функции при поступлении в очередь нового элемента. Сообщение очереди предоставляется в качестве входных данных функции.
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.

Снимок экрана: код функции и редактор тестов с расширенным представлением

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

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

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

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

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

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

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

Вы можете выполнить функцию, вручную активировав настроенный триггер. Например, если вы используете триггер HTTP, можно использовать эти средства тестирования HTTP для запуска HTTP-запроса к URL-адресу конечной точки функции:

Внимание

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

Вы можете получить конечную точку URL-адреса триггера HTTP, выбрав "Получить URL-адрес функции " на странице определения функции на портале.

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

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

Снимок экрана: панель мониторинга функции HTTP Application Insights с результатами функции, соответствующими кодами состояния HTTP и выделенными элементами меню мониторинга.

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

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

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

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

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

Write-Host "Enter your logging statement here"

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

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