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

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

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

В следующем примере используется Postman, но вы можете использовать cURL, Fiddler или любое другое подобное средство для отправки HTTP-запросов.

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

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

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

Define the request location: host name + folder path + function name

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

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

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

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

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

Внимание

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

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

    Locate the master key to copy.

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

    Copy the master key to the clipboard.

Вызов функции

  1. В портал Azure перейдите в верхней части приложения-функции и выберите свою функцию.

  2. Выберите "Код + тест" и выберите "Журналы". Вы увидите сообщения из функции, зарегистрированной здесь, при выполнении функции вручную из Postman.

    Screenshot that shows the 'Code + Test' page with a message from the logs displayed.

  3. Откройте Postman (или эквивалентное средство создания HTTP) и введите расположение запроса в текстовом поле URL-адреса.

  4. Убедитесь, что для метода HTTP задано значение POST, выберите вкладку "Заголовки " и добавьте две пары "ключ-значение заголовка":

    Ключ Значение
    x-functions-key Значение главного ключа, вставленное из буфера обмена.
    Content-Type application/json

    Postman headers settings.

  5. Выберите вкладку "Текст" и введите { "input": "<TRIGGER_INPUT>" } текст запроса.

    Postman body settings.

    Указанный тип <TRIGGER_INPUT> зависит от типа триггера, но он может быть только строковым, числовым или логическим значением. Для служб, использующих полезные данные JSON, например Служебная шина Azure, тестовые полезные данные JSON должны быть экранированы и сериализованы в виде строки.

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

  6. Выберите Отправить.

    Send a request with Postman.

    Postman затем сообщает о состоянии 202 — принято.

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

    View the logs to see the master key test results.

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

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