Отключить функцию Azure в C # для среды выполнения версии 3.x?

Как отключить функцию Azure с помощью кода на C #?

Я использую среду выполнения функций Azure версии 3.x.

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

Я вижу из Как отключить функции в Функциях Azure что рекомендуемый способ отключения функции - установить параметр приложения AzureWebJobs.<FUNCTION_NAME>.Disabled. Но я не нашел API для этого на C #. Я надеюсь, что есть что-то, что я могу вызвать из моего кода C #, что эквивалентно команде az functionapp config appsettings set в Azure CLI.

Я видел похожие вопросы по SO, например: переменная среды набора azure программно, чтобы отключить функцию Azure и Как включить / отключить функцию Azure программно Но у них есть ответы еще в 2017 году, которые используют API kudu для изменения свойства disabled в файле function.json, и я надеюсь, что сейчас есть лучший способ сделать это. Тем более, что документы на странице Как отключить функции в Функциях Azure скажи:

Созданный файл function.json для функции библиотеки классов не предназначен для непосредственного редактирования. Если вы отредактируете этот файл, все, что вы сделаете со свойством disabled, не повлияет.


person Bryan Knox    schedule 01.07.2020    source источник


Ответы (1)


К сожалению, мне не удалось найти никакой документации как таковой. Самое близкое, что у меня было, было

https://docs.microsoft.com/en-us/rest/api/appservice/webapps/createfunction

Например, чтобы создать функцию: https://management.azure.com/subscriptions/%7BsubscriptionId%7D/resourceGroups/%7BresourceGroupName%7D/providers/Microsoft.Web/sites/%7Bname%7D/functions/%7BfunctionName%7D?Api-version=2019-08-01

Однако эта документация также не приблизила меня к вашему требованию обновления файла конфигурации. Или я мог пропустить несколько модулей. Запросите дополнительную проверку перед выполнением следующих шагов

Итак, вот что я сделал: я вроде пытался перепроектировать, я запускал команды в Azure CLI и фиксировал следы - мой мыслительный процесс - Azure CLI внутренне запускается на python и отправляет запрос API в Azure.

Выполните следующую команду и захватите Fiddler:

az functionapp config appsettings set --name <myFunctionApp> \
--resource-group <myResourceGroup> \
--settings AzureWebJobs.QueueTrigger.Disabled=true

И да ! Процесс python отправлял запрос к https://management.azure.com на обновление настроек приложения:

введите описание изображения здесь

Установленное свойство отправляется в теле запроса:

введите описание изображения здесь

Мы можем жестко запрограммировать свойства или получить их динамически.

Итак, я выполнил указанную ниже команду Azure CLI.

az functionapp config список настроек приложения --name ‹› --resource-group ‹›

Мне удалось увидеть указанные выше свойства, которые были переданы в запросе PUT  введите описание изображения здесь

Взял скрипач для указанной выше команды

Увидел, что есть запрос POST к конечной точке ниже: https://management.azure.com/subscriptions/ /resourceGroups//providers/Microsoft.Web/sites//config/appsettings/list?api-version=2019-08-01.

введите описание изображения здесь

Это тот же набор пакетов свойств, который отправляется как тела запроса в PUT для установки свойства.

Поэтому в вашем случае вам нужно будет запросить указанную выше конечную точку, чтобы получить список свойств. Это вывод json. Обновите значение AzureWebJobs.QueueTrigger.Disabled до True.

Задайте обновленные свойства с помощью метода PUT вместе с заголовками, такими как Bearer Token и Content-Type: application / json; charset = utf-8

URI запроса: https://management.azure.com/subscriptions/ / resourceGroups // sizes / Microsoft.Web / sites // config / appsettings? Api-version = 2019-08-01.

Заголовки: Авторизация: Bearer ‹› Content-Type: application / json; charset = utf-8`

Тело запроса:

{kind: ‹class 'str'›, properties:}

Я надеюсь, что вы сможете выполнить свое требование.

Я надеюсь, это поможет вам :)

Я не рекомендую это для вашего продукта. Пожалуйста, попробуйте контролировать в своем Dev env.

person Satya V    schedule 02.07.2020
comment
Спасибо @sathya_vijayakumar. Я нашел документацию по API. Веб-приложения - список параметров приложения и Веб-приложения - обновить настройки приложения. Я собираюсь реализовать тестовое приложение, чтобы опробовать его. - person Bryan Knox; 02.07.2020
comment
Рад знать, что @BryanKnox :) - person Satya V; 02.07.2020