Как динамически запустить функцию Azure, развернутую на портале вручную через Kudu Api?

У меня есть функция времени лазера, развернутая на портале. Он работает ежедневно в 10:00. Однако теперь существует требование, чтобы функция также вызывалась и выполнялась в другое время динамически.

Я знаю, как динамически установить триггер в файле function.json через Kudu Api, используя шаги ответа, упомянутые здесь. Таким образом, используя эти шаги, я могу установить триггер на следующую минуту и ​​запустить функцию.

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

2 ответа

Решение

Нет ли прямого способа вызвать и вручную запустить функцию Azure напрямую через Apis?

Мы можем запустить развернутую функцию Azure с помощью REST API. Я тестирую его с помощью функции Time Trigger C# Azure на моей стороне.

Post  https://{FunctionAppName}.azurewebsites.net/admin/functions/{functionName}

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

Нам нужен x-functions-key в качестве заголовка. И мы могли бы получить функциональную клавишу из функции Application.

Мы также могли бы использовать токен на предъявителя в качестве авторизации, о том, как получить авторизацию для этого Rest API, пожалуйста, обратитесь к другому потоку SO.

Обновлено:

Добавьте информацию о теле.

Для вышеуказанного требования я рекомендую создать две функции, которые используют одну и ту же логику (если CSX, либо путем импорта общей реализации с использованием #load или добавление ссылки на общую сборку или с использованием общего типа).

У вас будет одна функция, использующая триггер таймера, а другая - другой тип триггера, который позволит вам вызывать функцию по требованию без зависимости от какого-либо API-интерфейса Kudu или Admin (например, HTTP, очередь, SB и т. Д.), точка входа в функцию (ваш метод Run) просто вызовет общую логику, которую вы вводите.

Другие вопросы по тегам