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

В этой статье объясняется, как отключить функцию в решении "Функции Azure". Отключить функцию означает сделать так, чтобы среда выполнения игнорировала автоматический триггер, который определен для этой функции. Это позволяет запретить выполнение определенной функции без остановки всего приложения-функции.

Чтобы отключить функцию, рекомендуем для параметра приложения в формате AzureWebJobs.<FUNCTION_NAME>.Disabled установить значение true. Вы можете создать и изменить такой параметр приложения разными способами, в том числе через Azure CLI или на вкладке Обзор для функции на портале Azure.

Отключение функции

Используйте кнопки Включить и Отключить на странице Обзор для функции. Эти кнопки позволяют изменить значение параметра приложения AzureWebJobs.<FUNCTION_NAME>.Disabled. Этот параметр, зависящий от функции, создается при первом ее отключении.

Function state switch

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

Примечание

Компоненты тестирования, интегрированные с порталом, игнорируют параметр Disabled. Это означает, что отключенная функция будет работать обычным образом, когда она запускается из окна Тест на портале.

Функции в слоте

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

Вот как можно отключить функцию только в промежуточном слоте:

Перейдите к экземпляру слота приложения-функции. Для этого выберите Слоты развертывания в разделе Развертывание, затем найдите нужный слот и выберите Функции в экземпляре слота. Выберите функцию, затем используйте кнопки Включить и Отключить на странице Обзор для функции. Эти кнопки позволяют изменить значение параметра приложения AzureWebJobs.<FUNCTION_NAME>.Disabled. Этот параметр, зависящий от функции, создается при первом ее отключении.

Можно также напрямую добавить параметр приложения с именем AzureWebJobs.<FUNCTION_NAME>.Disabled и значением true в разделе Конфигурация для экземпляра слота. При добавлении параметра приложения для конкретного слота обязательно установите флажок Параметр слота развертывания. При этом значение параметра сохранится в слоте во время замены.

Дополнительные сведения см. в статье Слоты развертывания Функций Azure.

local.settings.json

Функции можно отключить тем же способом при локальном запуске. Чтобы отключить функцию с именем HttpExample, добавьте запись в коллекцию Values в файле local.settings.json, как показано ниже.

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

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

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

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

Для функции библиотеки классов вы также можете запретить активацию с помощью атрибута Disable. Этот атрибут позволяет настроить имя параметра, используемого для отключения функции. Используйте версию атрибута, позволяющую определить параметр конструктора, который ссылается на логический параметр приложения, как показано в следующем примере:

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}");
    }
}

Этот метод позволяет включать и отключать функцию, изменив параметр приложения без повторной компиляции или повторного развертывания. Изменение параметра приложения вызывает перезапуск приложения-функции, поэтому изменение отключенного состоянии сразу же распознается.

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

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

В версии 1.x можно использовать свойство disabled файла function.json, чтобы запретить среде выполнения активировать функцию. Этот метод работает только для скриптовых языков, например в скриптах на C# и JavaScript. Свойству disabled можно задать значение true или имя параметра приложения:

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

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

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

Во втором примере функция отключается, если имеется параметр приложения с именем IS_DISABLED и ему задано значение true или 1.

Важно!

На портале для отключения функций версии 1.x используются параметры приложения. Если параметр приложения конфликтует с файлом function.json, может возникнуть ошибка. Чтобы избежать ошибок, следует удалить свойство disabled из файла function.json.

Рекомендации

При отключении функций учитывайте следующее:

  • Если вы отключите функцию, активируемую по HTTP, с помощью описанных в этой статье способов, ее конечная точка может остаться доступной, если она работает на локальном компьютере.

  • В настоящее время функции, имена которых содержат дефис (-), нельзя отключить, если они выполняются в Linux при использовании плана. Если вам нужно отключать функции в Linux при использовании плана, не используйте дефисы в именах этих функций.

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

Эта статья посвящена отключению автоматических триггеров. Дополнительные сведения о триггерах см. в статье Основные понятия триггеров и привязок в Функциях Azure.