Способы отключения функций в решении "Функции Azure"How to disable functions in Azure Functions

В этой статье объясняется, как отключить функцию в решении "Функции Azure".This article explains how to disable a function in Azure Functions. Отключить функцию означает сделать так, чтобы среда выполнения игнорировала автоматический триггер, который определен для этой функции.To disable a function means to make the runtime ignore the automatic trigger that's defined for the function. Это позволяет запретить выполнение определенной функции без остановки всего приложения-функции.This lets you prevent a specific function from running without stopping the entire function app.

Рекомендуемым способом отключения функции является параметр приложения в формате AzureWebJobs.<FUNCTION_NAME>.Disabled true .The recommended way to disable a function is with an app setting in the format AzureWebJobs.<FUNCTION_NAME>.Disabled set to true. Вы можете создавать и изменять такой параметр приложения разными способами, в том числе через Azure CLI или на вкладке Управление на портале Azure.You can create and modify this application setting in a number of ways, including by using the Azure CLI and from your function's Manage tab in the Azure portal.

Примечание

Если вы отключите функцию, активируемую по HTTP, с помощью описанных в этой статье способов, ее конечная точка может остаться доступной, если она работает на локальном компьютере.When you disable an HTTP triggered function by using the methods described in this article, the endpoint may still by accessible when running on your local computer.

Использование Azure CLIUse the Azure CLI

В Azure CLI команда az functionapp config appsettings set позволяет создать или изменить параметр приложения.In the Azure CLI, you use the az functionapp config appsettings set command to create and modify the app setting. Следующая команда отключает функцию с именем QueueTrigger, создавая параметр приложения с именем AzureWebJobs.QueueTrigger.Disabled и значением true.The following command disables a function named QueueTrigger by creating an app setting named AzureWebJobs.QueueTrigger.Disabled set it to true.

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

Чтобы снова включить эту функцию, повторите ту же команду со значением false.To re-enable the function, rerun the same command with a value of false.

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

Использование порталаUse the Portal

Также можно использовать кнопки Включить и Отключить на странице Обзор для функции.You can also use the Enable and Disable buttons on the function's Overview page. Эти кнопки работают, изменяя значение AzureWebJobs.<FUNCTION_NAME>.Disabled параметра приложения.These buttons work by changing the value of the AzureWebJobs.<FUNCTION_NAME>.Disabled app setting. Этот параметр, зависящий от функции, создается при первом отключении.This function-specific setting is created the first time it's disabled.

Переключатель состояния функции

Примечание

Компоненты тестирования, интегрированные с порталом, игнорируют параметр Disabled.The portal-integrated testing functionality ignores the Disabled setting. Это означает, что отключенная функция будет работать обычным образом, когда она запускается из окна Тест на портале.This means that a disabled function still runs when started from the Test window in the portal.

local.settings.jsonlocal.settings.json

Функции можно отключить тем же способом при локальном запуске.Functions can be disabled in the same way when running locally. Чтобы отключить функцию с именем HttpExample , добавьте запись в коллекцию Values в local.settings.jsв файле, как показано ниже.To disable a function named HttpExample, add an entry to the Values collection in the local.settings.json file, as follows:

{
  "IsEncrypted": false,
  "Values": {
    "FUNCTIONS_WORKER_RUNTIME": "python",
    "AzureWebJobsStorage": "UseDevelopmentStorage=true", 
    "AzureWebJobs.HttpExample.Disabled": "true"
  }
}

Другие методыOther methods

Для всех языков и любых версий среды выполнения мы рекомендуем применять параметр приложения, но существуют и другие способы для отключения функций.While the application setting method is recommended for all languages and all runtime versions, there are several other ways to disable functions. Эти способы (зависят от языков и версий среды выполнения) поддерживаются только для обеспечения обратной совместимости.These methods, which vary by language and runtime version, are maintained for backward compatibility.

Библиотеки классов C#.C# class libraries

Для функции библиотеки классов вы также можете запретить активацию с помощью атрибута Disable.In a class library function, you can also use the Disable attribute to prevent the function from being triggered. Можно использовать атрибут без параметра конструктора, как показано в следующем примере:You can use the attribute without a constructor parameter, as shown in the following example:

public static class QueueFunctions
{
    [Disable]
    [FunctionName("QueueTrigger")]
    public static void QueueTrigger(
        [QueueTrigger("myqueue-items")] string myQueueItem, 
        TraceWriter log)
    {
        log.Info($"C# function processed: {myQueueItem}");
    }
}

Если используется атрибут без параметра конструктора, необходимо перекомпилировать и повторно развернуть проект, чтобы изменить отключенное состояние функции.The attribute without a constructor parameter requires that you recompile and redeploy the project to change the function's disabled state. Более гибкий способ использования атрибута — включить параметр конструктора, который ссылается на логический параметр приложение, как показано в следующем примере:A more flexible way to use the attribute is to include a constructor parameter that refers to a Boolean app setting, as shown in the following example:

public static class QueueFunctions
{
    [Disable("MY_TIMER_DISABLED")]
    [FunctionName("QueueTrigger")]
    public static void QueueTrigger(
        [QueueTrigger("myqueue-items")] string myQueueItem, 
        TraceWriter log)
    {
        log.Info($"C# function processed: {myQueueItem}");
    }
}

Этот метод позволяет включать и отключать функцию, изменив параметр приложения без повторной компиляции или повторного развертывания.This method lets you enable and disable the function by changing the app setting, without recompiling or redeploying. Изменение параметра приложения вызывает перезапуск приложения-функции, поэтому изменение отключенного состоянии сразу же распознается.Changing an app setting causes the function app to restart, so the disabled state change is recognized immediately.

Важно!

Атрибут Disabled является единственным способом отключить функцию библиотеки классов.The Disabled attribute is the only way to disable a class library function. Созданный файл function.json для функции библиотеки классов не предназначен для непосредственного редактирования.The generated function.json file for a class library function is not meant to be edited directly. Во время редактирования этого файла любые действия со свойством disabled не окажут никакого влияния.If you edit that file, whatever you do to the disabled property will have no effect.

То же самое касается переключателя состояния функции на вкладке Управление, так как он работает, изменяя файл function.json.The same goes for the Function state switch on the Manage tab, since it works by changing the function.json file.

Обратите также внимание, что портал может указывать, что функция отключена, когда это не так.Also, note that the portal may indicate the function is disabled when it isn't.

Функции 1.x — языки сценариевFunctions 1.x - scripting languages

В версии 1.x можно использовать свойство disabled файла function.json, чтобы запретить среде выполнения активировать функцию.In version 1.x, you can also use the disabled property of the function.json file to tell the runtime not to trigger a function. Этот метод работает только для скриптовых языков, например в скриптах на C# и JavaScript.This method only works for scripting languages such as C# script and JavaScript. Свойству disabled можно задать значение true или имя параметра приложения:The disabled property can be set to true or to the name of an app setting:

{
    "bindings": [
        {
            "type": "queueTrigger",
            "direction": "in",
            "name": "myQueueItem",
            "queueName": "myqueue-items",
            "connection":"MyStorageConnectionAppSetting"
        }
    ],
    "disabled": true
}

или диспетчер конфигурации службor

    "bindings": [
        ...
    ],
    "disabled": "IS_DISABLED"

Во втором примере функция отключается, если имеется параметр приложения с именем IS_DISABLED и ему задано значение true или 1.In the second example, the function is disabled when there is an app setting that is named IS_DISABLED and is set to true or 1.

Важно!

Теперь на портале для отключения функций версии 1.x используются параметры приложения.The portal now uses application settings to disable v1.x functions. Если параметр приложения конфликтует с файлом function.json, может возникнуть ошибка.When an application setting conflicts with the function.json file, an error can occur. Чтобы избежать ошибок, следует удалить свойство disabled из файла function.json.You should remove the disabled property from the function.json file to prevent errors.

Дальнейшие действияNext steps

Эта статья посвящена отключению автоматических триггеров.This article is about disabling automatic triggers. Дополнительные сведения о триггерах см. в статье Основные понятия триггеров и привязок в Функциях Azure.For more information about triggers, see Triggers and bindings.