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


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

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

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

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

Необходимые компоненты

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

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

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

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

  • Имя хоста: общедоступное расположение приложения-функции, которое состоит из имени приложения-функции и 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.

    Найдите мастер-ключ, который нужно скопировать.

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

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

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

  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, тестовые полезные данные JSON должны быть экранированы и сериализованы в виде строки.

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

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

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

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

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

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