Отключите определенные функции Azure, используя любую конфигурацию - PullRequest
0 голосов
/ 01 июня 2019

При использовании функций Azure у меня возникает ситуация, когда я хочу, чтобы несколько функций в режиме «отключено» для приложения-функции, в то время как другие были включены. Дело в том, что я не хочу делать это вручную, используя экран функций, где отдельные функции можно легко включать / отключать. В этой статье говорится, что функции 2.x поддерживают это (функции 1.x для меня не вариант).

https://docs.microsoft.com/en-us/azure/azure-functions/disable-function

Просто статья немного расплывчата о том, что нужно сделать. Это говорит и я цитирую>

В Функции 2.x вы отключаете функцию с помощью настройки приложения. Например, чтобы отключить функцию с именем QueueTrigger, вы создаете параметр приложения с именем AzureWebJobs.QueueTrigger.Disabled и задаете для него значение true. Чтобы включить функцию, установите для параметра приложения значение false.

Я пробовал это, но это не работает, как задокументировано. У меня есть приложение под названием foo и функция с именем bar. Я пробовал оба:

disabled: true в функции.json

а также:

foo: { 
  bar: {
    disabled: true
  }
}

После внесения этих изменений и повторного развертывания пользовательский интерфейс не влияет. Чего мне не хватает?

1 Ответ

1 голос
/ 02 июня 2019

Рекомендуется использовать настройки приложения, которые вы можете сделать, перейдя на портал.[Примечание: они не означают function.json, когда они говорят настройки приложения.]

Вариант 1. Использование настроек приложения На портале Azure перейдите к своему приложению функции foo ->Confuguration, и вы должны увидеть вкладку Application Settings с несколькими уже определенными переменными.Вам нужно создать новую переменную, нажав кнопку New application setting.Установите имя как AzureWebJobs.bar.Disabled и значение как true.Обратите внимание, что имя приложения функции foo не фигурирует в имени переменной.

Опция 2: использование host.json Поскольку вы ищете отключение функции из кода, вы можетепопробуйте сделать это в host.json.Обратите внимание, что это предназначено для локальной разработки и не рекомендуется для prod, но работает.https://docs.microsoft.com/en-us/azure/azure-functions/functions-host-json#functions

{
    "functions": [ "function1", "function2" ] // Don't list function "bar" here, and it would get disabled.
}

Обратите внимание, что портал не будет отображать это правильно, и перечислит "bar" как включенный, но вы получите 404 при нажатии этой функции.

Опция3: Использование атрибута Disable Если вы используете C #, вы также можете использовать атрибут [Disable].Это конструкция Functions 1.x, но она работает и в 2.x.Как и выше, пользовательский интерфейс портала не будет отображать это правильно.

    [Disable]
    [FunctionName("Function1")]
    public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
    ILogger log)
{
}

Опция 4: путем удаления атрибута FunctionName Только если вы используете C #.Это может показаться нелогичным, но если вы удалите атрибут FunctionName из своей функции, он не будет рассматриваться как таковой.

    // [FunctionName("Function1")]  // Comment this or delete this line to disable this function
    public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
    ILogger log)
{
}

Это должно работать в обеих средах выполнения.Функция не будет отображаться на портале Azure.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...