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

Приложение-функция Функции Azure выполняется в определенной версии среды выполнения Функции Azure. По умолчанию вы создаете приложения-функции в последней версии 4.x среды выполнения Функций. Приложения-функции поддерживаются только в том случае, если они выполняются в поддерживаемой основной версии. В этой статье объясняется, как настроить приложение-функцию в Azure чтобы подключиться к или привязать к конкретной версии среды выполнения Functions, когда это необходимо.

Соображения

При выборе определенной версии среды выполнения следует учитывать следующие рекомендации.

  • План потребления Flex выполняется только в версии 4.x среды выполнения. Поскольку план Flex Consumption не поддерживает параметр приложения FUNCTIONS_EXTENSION_VERSION, ваше приложение не может задать конкретную версию среды выполнения в рамках этого плана.
  • Способ, которым вы нацелены на определенную версию, зависит от того, работаете ли вы под управлением Windows или Linux.
  • Эта статья связана с Windows или Linux. Выберите операционную систему в верхней части статьи.
  • По возможности всегда запустите приложение в последней поддерживаемой версии среды выполнения. Закрепите приложение на конкретной версии только если вас попросили сделать это в связи с проблемой с новейшей версией. Всегда переходите к последней версии среды выполнения, как только функции могут работать правильно.
  • Во время локальной разработки установленная версия Функции Azure Core Tools должна соответствовать основной версии среды выполнения, используемой приложением-функцией в Azure. Дополнительные сведения см. в основных версиях инструментов.

Обновление версии среды выполнения

По возможности всегда запускайте приложения-функции в последней поддерживаемой версии среды выполнения Функций Azure. Если приложение-функция в настоящее время работает в более старой версии среды выполнения, перенесите приложение в версию 4.x.

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

Сведения об определении текущей версии среды выполнения см. в разделе "Просмотр текущей версии среды выполнения".

Просмотр текущей версии среды выполнения

Текущую версию приложения-функции можно просмотреть одним из следующих способов:

Чтобы просмотреть и обновить версию среды выполнения, используемую приложением-функцией, выполните следующие действия:

  1. На портале Azure перейдите к приложению-функции.

  2. Разверните Параметры, а затем выберите Конфигурация.

  3. На вкладке "Параметры среды выполнения функции" обратите внимание на версию среды выполнения. В этом примере для версии задано значение ~4.

    Снимок экрана, показывающий, как просмотреть версию среды выполнения.

Закрепить за конкретной версией

Функции Azure позволяет использовать параметр приложения FUNCTIONS_EXTENSION_VERSION, чтобы указать версию среды выполнения, используемую для конкретного приложения-функции. Если указать только основную версию (~4), приложение-функция автоматически обновляется до новых дополнительных версий среды выполнения по мере их доступности. Обновления минорных версий происходят автоматически, так как новые минорные версии, скорее всего, не будут вводить изменения, которые могут нарушить работу ваших функций.

Приложения Linux используют linuxFxVersion параметр сайта вместе с FUNCTIONS_EXTENSION_VERSION для определения правильного базового образа Linux, в котором выполняются ваши функции. При создании нового приложения-функции в среде Linux среда выполнения автоматически выбирает для вас подходящий базовый образ на основе версии среды выполнения вашего языкового стека.

Переключение на конкретную версию среды выполнения перезапускает ваше функциональное приложение.

При указании определенной дополнительной версии (например, 4.0.12345) в FUNCTIONS_EXTENSION_VERSION, вы закрепляете функциональное приложение на этой конкретной версии среды выполнения, пока явно не решите вернуться к автоматическим обновлениям. Закрепите приложение на определенной минорной версии только на время, необходимое для устранения всех проблем с вашим приложением-функцией, которые мешают перейти на основную версию. Старые промежуточные версии регулярно удаляются из рабочей среды. Когда приложение-функция закреплено за дополнительной версией, которая позже удалена, оно выполняется на ближайшей доступной версии вместо версии, указанной в FUNCTIONS_EXTENSION_VERSION. Объявления службы приложений объявляют об удалении минорных версий.

Примечание.

Когда вы пытаетесь выполнить публикацию из Visual Studio в приложение, закреплённое на определённой минорной версии среды выполнения, появляется диалоговое окно с предложением обновиться до последней версии или отменить публикацию. Чтобы избежать этой проверки, если необходимо использовать определенную второстепенную версию, добавьте свойство <DisableFunctionExtensionVersionUpdate>true</DisableFunctionExtensionVersionUpdate> в файл .csproj.

Используйте один из этих методов, чтобы временно закрепить приложение к определенной версии среды выполнения:

Чтобы просмотреть и обновить версию среды выполнения, используемую приложением-функцией, выполните следующие действия:

  1. На портале Azure перейдите к приложению-функции.

  2. Разверните Параметры, а затем выберите Конфигурация.

  3. На вкладке "Параметры среды выполнения функции" обратите внимание на версию среды выполнения. В этом примере для версии задано значение ~4.

    Снимок экрана, показывающий, как просмотреть версию среды выполнения.

  1. Чтобы закрепить приложение на конкретной второстепенной версии, на левой панели разверните Параметры, а затем выберите Переменные среды.

  2. На вкладке "Параметры приложения" выберите FUNCTIONS_EXTENSION_VERSION, измените значение на требуемую дополнительную версию и нажмите кнопку "Применить".

  3. Нажмите кнопку "Применить", а затем нажмите кнопку "Подтвердить", чтобы применить изменения и перезапустить приложение.

После внесения изменений в параметры приложения-функции оно автоматически перезапустится.

Чтобы закрепить функциональное приложение на определенной версии исполняемой среды в Linux, задайте URL-адрес базового образа конкретной версии в linuxFxVersion параметре сайта согласно формату DOCKER|<PINNED_VERSION_IMAGE_URI>.

Внимание

Закреплённые приложения-функции в Linux не получают регулярные обновления безопасности и функциональности узла. Если не рекомендуется специалистом по поддержке, используйте FUNCTIONS_EXTENSION_VERSION параметр и стандартное linuxFxVersion значение для вашего языка и версии, например Python|3.12. Допустимые значения см. в справочной linuxFxVersion статье.

Закрепление в определенной среде выполнения в настоящее время не поддерживается для приложений-функций Linux, работающих в плане потребления.

В следующем примере показано значение linuxFxVersion, необходимое для закрепления приложения-функции Node.js 22 к определённой версии среды выполнения 4.14.0.3:

DOCKER|mcr.microsoft.com/azure-functions/node:4.14.0.3-node22

При необходимости специалист службы поддержки может предоставить вам корректный URI базового образа для вашего приложения.

Используйте следующие команды Azure CLI для просмотра и настройки linuxFxVersion. В настоящее время нельзя задать linuxFxVersion на портале или с помощью Azure PowerShell:

  • Чтобы просмотреть текущую версию среды выполнения, используйте команду az functionapp config show :

    az functionapp config show --name <function_app> \
    --resource-group <my_resource_group> --query 'linuxFxVersion' -o tsv
    

    В этом коде следует заменить <function_app> именем приложения-функции. Кроме того, замените <my_resource_group> на имя группы ресурсов для приложения-функции. Возвращается текущее значение параметра linuxFxVersion.

  • Чтобы обновить параметр linuxFxVersion в приложении функции, используйте команду az functionapp config set:

    az functionapp config set --name <FUNCTION_APP> \
    --resource-group <RESOURCE_GROUP> \
    --linux-fx-version <LINUX_FX_VERSION>
    

    Замените <FUNCTION_APP> на имя приложения-функции. Кроме того, замените <RESOURCE_GROUP> на имя группы ресурсов для приложения-функции. Наконец, замените <LINUX_FX_VERSION> значением определенного изображения, предоставленного специалистом службы поддержки.

Эти команды можно выполнить из Azure Cloud Shell, выбрав Open Cloud Shell в предыдущих примерах кода. Вы также можете локально использовать Azure CLI для выполнения этой команды после выполнения az login входа.

После внесения изменений в конфигурацию сайта приложение-функция перезапустится.

Обновите управляемый образ Linux

Этот раздел применяется только к существующим приложениям Python 3.11 и Java 8, 11 или 17 на планах Linux Elastic Premium или Dedicated (App Service), использующих управляемый образ Debian Bullseye. Если ваше приложение не соответствует всем этим требованиям, вам не нужно выполнять эту процедуру.

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

Это обновление выбирает дистрибутив Linux для существующей версии языка с помощью трёхчастного linuxFxVersion значения. Он не привязывает хост Functions к конкретному DOCKER|<IMAGE_URI> образу.

Выберите характеристику «Книжный червь» или «Благородный» linuxFxVersion

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

  1. Рассмотрите возможность обновления приложения до более новой поддерживаемой версии языка. После обновления языка приложение использует текущий управляемый образ по умолчанию для этой версии языка.

  2. Если приложение должно остаться на текущей языковой версии, выберите соответствующее новое значение изображения:

    Версия языка Значение Debian Bullseye Новое распространение Новое значение изображения
    Python 3.11 Python\|3.11\|2.0 Debian Bookworm Python\|3.11\|3.0
    Java 8 Java\|8\|2.0 Ubuntu Noble Java\|8\|4.0
    Java 11 Java\|11\|2.0 Ubuntu Noble Java\|11\|4.0
    Java 17 Java\|17\|2.0 Ubuntu Noble Java\|17\|4.0

    Эти трёхчастные значения явно выбирают управляемый образ Linux для этих образов эпохи Bullseye. Команда az functionapp list-runtimes не возвращает их.

Протестируйте новый управляемый образ Linux

Проверьте своё приложение и его зависимости от нового изображения перед обновлением продакшн-приложения.

  1. Создайте отдельное тестовое приложение или слот для развертывания.

  2. Разверните в тестовом приложении или слоте тот же код и ту же конфигурацию, которые использует ваше рабочее приложение.

  3. Установите новое значение изображения, следуя шагам в разделе «Обновить значение изображения». Когда вы используете слот, включайте --slot <SLOT_NAME> в каждую команду Azure CLI.

  4. Вызовите каждую функцию и убедитесь, что приложение успешно запускается, триггеры работают как ожидается, а нативные или операционные зависимости загружаются корректно.

Обновить значение изображения

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

  1. Просмотрите текущее linuxFxVersion значение:

    az functionapp config show --name <APP_NAME> \
      --resource-group <RESOURCE_GROUP> \
      --query linuxFxVersion --output tsv
    

    Эта команда возвращает значение, сохранённое в конфигурации сайта. Возвращаемое значение может содержать только язык и версию языка, такие как Python|3.11, а не трёхчастное значение, идентифицирующее дистрибутив Linux. Если значение не включает версию изображения, выполните шаги в разделе «Проверьте дистрибутив Linux », чтобы убедиться, что приложение использует Debian Bullseye.

  2. Установите linuxFxVersion на более новое значение образа:

    az functionapp config set --name <APP_NAME> \
      --resource-group <RESOURCE_GROUP> \
      --linux-fx-version "<LANGUAGE|VERSION|IMAGE_VERSION>"
    

    Для Python 3.11 на Debian Bookworm используйте Python|3.11|3.0. Для Java на Ubuntu Noble используйте Java|8|4.0, Java|11|4.0, или Java|17|4.0.

  3. Дождитесь, пока приложение перезагрузится.

Проверьте дистрибутив Linux

Проверьте как настроенное значение, так и дистрибутив Linux, на котором запущено ваше приложение.

  1. Подтвердите обновленное linuxFxVersion значение:

    az functionapp config show --name <APP_NAME> \
      --resource-group <RESOURCE_GROUP> \
      --query linuxFxVersion --output tsv
    

    Поскольку вы явно устанавливаете трёхчастное значение, эта команда возвращает именно то значение Bookworm или Noble, которое вы выбрали.

  2. Откройте сайт приложения Kudu по адресу https://<APP_NAME>.scm.azurewebsites.net.

  3. Выберите Environment и ознакомьтесь с KUDU_ENV, или откройте SSH-сеанс и выполните:

    cat /etc/os-release
    
  4. Убедитесь, что результат идентифицирует Debian Bookworm для Python 3.11 или Ubuntu Noble для Java 8, 11 или 17.

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

Откатить обновление управляемого образа Linux

Если обновлённый образ вызывает проблему совместимости, временно восстановите предыдущее linuxFxVersion значение, пока не решите проблему.

Предупреждение

Debian Bullseye больше не поддерживается после окончания срока службы и не получает обновления безопасности. Используйте откат только как временную компенсацию и как можно скорее возвращайтесь к поддерживаемому образу.

  1. В таблице «Выберите значение Bookworm или Noble linuxFxVersion» найдите значение Debian Bullseye, соответствующее вашей языковой версии.

  2. Установите для linuxFxVersion значение «Буллзай»:

    az functionapp config set --name <APP_NAME> \
      --resource-group <RESOURCE_GROUP> \
      --linux-fx-version "<BULLSEYE_LINUX_FX_VERSION>"
    
  3. Дождитесь, пока приложение перезагрузится, а затем повторите проверки в разделе «Проверьте дистрибутив Linux».

Следующие шаги