Запуск функции, не активируемой HTTP-запросом, вручную

В этой статье показано, как вручную запускать функцию, не активируемую HTTP-запросом, через HTTP-запрос в особом формате.

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

Процедура, описанная в этой статье, эквивалентна использованию функций Test/Run функции Code + Test на портале Azure. Вы также можете использовать Visual Studio Code для мануально запускать функции.

Предварительные условия

В примерах в этой статье используется средство тестирования HTTP. Обязательно выберите средство, которое обеспечивает безопасность данных. Дополнительные сведения см. в статье Инструменты тестирования HTTP.

Определение расположения запроса

Чтобы запустить функцию, не активированную по протоколу HTTP, необходимо отправить запрос на Azure для запуска функции. URL-адрес, используемый для выполнения данного запроса, принимает определенный формат.

Определение расположения запроса: имя узла + путь к папке + имя функции

  • Имя узла: Общедоступное расположение приложения-функции, состоящее из имени приложения-функции, а также azurewebsites.net или личного домена. При работе с слотами развертывания , используемыми для промежуточного хранения, часть имени узла — это имя рабочего узла, -<slotname> добавленное к нему. В предыдущем примере URL-адрес будет использоваться myfunctiondemos-staging.azurewebsites.net для слота с именем staging.
  • Путь к папке: Чтобы получить доступ к функциям, которые не запускаются HTTP-запросом, необходимо отправить запрос при помощи пути admin/functions. API в /admin/ пути доступны только с помощью авторизации.
  • Имя функции: Имя функции, которую требуется запустить.

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

  • При выполнении запросов к любой конечной точке в /admin/ пути необходимо указать главный ключ приложения в x-functions-key заголовке запроса.
  • При локальном запуске авторизация не применяется, а главный ключ функции не требуется. Вы можете напрямую вызвать функцию , не указывая x-functions-key заголовок.
  • При доступе к конечным точкам приложения-функции в слоте развертывания убедитесь, что в URL-адресе запроса используется имя узла конкретного слота, а также главный ключ для конкретного слота.

Получение главного ключа

Главный ключ можно получить на портале Azure или с помощью Azure CLI.

Внимание

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

  1. Перейдите к функции приложения в Azure portal, выберите App Keys, а затем ключ _master.

    Найдите главный ключ для копирования.

  2. В разделе "Изменить ключ" скопируйте значение ключа в буфер обмена и нажмите кнопку "ОК".

    Скопируйте главный ключ в буфер обмена.

Вызовите функцию

  1. На портале Azure перейдите к вашему приложению-функции и выберите вашу функцию.

  2. Выберите Код + тест, и выберите Журналы. Вы увидите сообщения, записанные здесь, при ручном запуске функции через ваше средство тестирования HTTP.

    Снимок экрана: страница

  3. В средстве тестирования HTTP используйте расположение запроса, определенное в качестве URL-адреса запроса, убедитесь, что метод HTTP-запроса — POST, и включите следующие два заголовка запроса:

    Ключ Значение
    x-functions-key Значение основного ключа, вставленное из буфера обмена.
    Content-Type application/json
  4. Убедитесь, что тело запроса POST задано { "input": "<TRIGGER_INPUT>" }. Указанный тип <TRIGGER_INPUT> зависит от типа триггера, но он может быть только строковым, числовым или логическим значением. Для служб, использующих JSON-пейлоуды, таких как Azure Service Bus, тестовый JSON-пейлоуд должен быть экранирован и сериализован как строка.

    Если вы не хотите передавать входные данные в функцию, необходимо предоставить пустой словарь {} в качестве текста запроса POST. Дополнительные сведения см. в справочной статье для конкретного триггера, отличного от HTTP.

  5. Отправьте HTTP-запрос POST. Ответ должен быть ответом HTTP 202 (принято).

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

    Просмотрите журналы, чтобы просмотреть результаты теста главного ключа.

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

Следующие шаги