Поделиться через


Обновление версий стека языков в Функции Azure

В Функциях Azure поддержка языкового стека ограничена определенными версиями. По мере того как новые версии становятся доступными, может потребоваться обновить приложения-функции, чтобы воспользоваться преимуществами новых функций. Поддержка функций также заканчивается для старых версий и обычно совпадает со сроками окончания поддержки, установленными сообществом. Дополнительные сведения см. в политике поддержки среды выполнения языка. Поддерживаемые версии различных языков см. в разделе "Языки по версии среды выполнения".

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

  • Язык, используемый для разработки приложений-функций. Выберите язык программирования в верхней части этой статьи.
  • Операционная система, в которой работает приложение-функция в Azure: Windows или Linux.
  • План размещения.

Примечание.

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

Подготовка приложения-функции

Перед обновлением конфигурации стека для приложения-функции в Azure выполните задачи в следующих разделах.

Проверка зависимостей

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

  • Расширения привязки: обновите все явные ссылки на расширения привязки к версиям, совместимым с новой версией языка.

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

  • Локальные инструменты. Убедитесь, что ваши локальные средства разработки, такие как Core Tools для Azure Functions, SDK и интегрированные среды разработки (IDE), поддерживают новую версию языка.

Проверка локального приложения-функции

Проверьте и проверьте код приложения-функции локально в новой целевой версии.

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

  1. Убедитесь, что установлена целевая версия пакета SDK для .NET.

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

  2. Обновите ссылки на последние версии Microsoft.Azure.Functions.Worker и Microsoft.Azure.Functions.Worker.Sdk.

  3. Обновите целевую платформу проекта до новой версии. Для проектов C# необходимо обновить <TargetFramework> элемент в CSPROJ-файле . Дополнительные сведения о вашей версии см. в разделе "Целевые платформы".

    Изменение целевой платформы проекта также может потребовать изменений в частях цепочки инструментов вне кода проекта. Например, в Visual Studio Code может потребоваться обновить azureFunctions.deploySubpath параметр расширения в параметрах пользователя или vscode/settings.json файла проекта. Проверьте наличие зависимостей от версии платформы, существующей вне кода проекта, в рамках шагов сборки или конвейера непрерывной интеграции и непрерывной доставки (CI/CD).

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

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

Переход к последней среде выполнения функций

Убедитесь, что приложение-функция работает в последней версии среды выполнения Функций (версия 4.x). Вы можете определить версию среды выполнения в портал Azure или с помощью Azure CLI.

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

  1. На портале Azure найдите и выберите приложение-функцию. В боковом меню выберите "Конфигурация параметров>".

  2. Перейдите на вкладку "Параметры среды выполнения функции " и проверьте значение версии среды выполнения . Приложение-функция должно работать в среде выполнения функций версии 4.x (~4).

Если необходимо обновить приложение-функцию до версии 4.x, см. статью "Миграция приложений из функций Azure версии 1.x на версию 4.x " или "Миграция приложений из функций Azure версии 3.x" на версию 4.x. Следуйте инструкциям в этих статьях, а не просто измените параметр FUNCTIONS_EXTENSION_VERSION.

Публикация обновлений приложения-функции

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

Совет

Чтобы упростить процесс обновления, свести к минимуму время простоя ваших функциональных приложений и предоставить потенциальную версию для отката, опубликуйте обновленное функциональное приложение в промежуточном слоте. Дополнительные сведения см. в разделе Функции Azure слотов развертывания.

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

Рассмотрите возможность использования слотов

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

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

Это важно

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

Обновление конфигурации стека

Способ обновления конфигурации стека зависит от того, работает ли ваше приложение-функция в Windows или Linux в Azure.

При использовании промежуточного слота обязательно направляйте обновления в нужный слот.

Чтобы обновить версию Java, выполните следующие действия.

  1. На портале Azure найдите и выберите приложение-функцию. В боковом меню выберите "Конфигурация параметров>". Если у вас есть тестовый слот, выберите нужный слот.

  2. На вкладке "Общие параметры" обновите версию Java до требуемой версии.

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

Чтобы обновить версию .NET, выполните следующие действия.

  1. На портале Azure найдите и выберите приложение-функцию. В боковом меню выберите "Конфигурация параметров>". Если у вас есть тестовый слот, выберите нужный слот.

  2. На вкладке "Общие параметры" обновите версию .NET до требуемой версии.

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

Чтобы обновить версию Node.js, выполните следующие действия.

  1. На портале Azure найдите и выберите приложение-функцию. В боковом меню выберите "Конфигурация параметров>". Если у вас есть тестовый слот, выберите нужный слот.

  2. На вкладке "Общие параметры" обновите версиюNode.js до требуемой версии.

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

Чтобы обновить версию PowerShell, выполните следующие действия.

  1. На портале Azure найдите и выберите приложение-функцию. В боковом меню выберите "Конфигурация параметров>". Если у вас есть тестовый слот, выберите нужный слот.

  2. На вкладке "Общие параметры" обновите версию PowerShell Core до требуемой версии.

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

Портал не поддерживает приложения Python в Windows. Перейдите на вкладку Linux .

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

Примечание.

Во время перезапуска приложение-функция недоступна в течение короткого периода, как правило, 30–60 секунд. При обновлении продуктового функционального приложения напрямую (без использования промежуточного слота) запланируйте время неработоспособности на период технического обслуживания. Перезапуск завершает все запросы в процессе выполнения, а новые запросы не будут выполняться, пока приложение не перезапустится успешно.

Проверьте обновление

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

  1. На портале Azure найдите и выберите приложение-функцию. В боковом меню выберите "Конфигурация параметров>".

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

  3. Выберите "Обзор" в боковом меню и убедитесь, что состояние отображается как запущенное.

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

Переключение слотов

Если вы используете тестовый слот для развертывания проекта кода и обновления параметров, замените тестовый слот на рабочую среду. Дополнительные сведения см. в разделе "Переключение слотов".

Устранение неполадок

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

Функциональное приложение не запускается

Симптомы: Состояние функционального приложения отображается как Остановленное или непрерывно перезапускается.

Решения:

  1. Проверьте журналы приложений на портале Azure:

    • Перейдите к вашему функциональному приложению и выберите Мониторинг>поток журналов.
    • Поиск сообщений об ошибках, связанных с несоответствиями версий среды выполнения или языка.
  2. Убедитесь, что все зависимости совместимы с новой языковой версией:

    • Для .NET убедитесь, что пакеты NuGet поддерживают целевую платформу.
    • Для Python убедитесь, что версии requirements.txt пакетов совместимы.
    • Для Node.jsубедитесь, что package.json зависимости поддерживают новую версию Node.
  3. Проверьте версию пакета расширений в host.json файле. Старые пакеты могут не поддерживать более новые языковые версии.

Функции завершаются с ошибками времени выполнения

Симптомы: Отдельные функции завершаются сбоем при вызове с ошибками в журналах.

Решения:

  1. Просмотрите критические изменения для версии языка:

  2. Обновите расширения привязки до версий, совместимых с новой версией языка.

  3. Тестирование функций локально с помощью новой языковой версии перед повторной развертыванием.

Конфликты версий расширения

Симптомы: Ошибки, которые ссылаются на несовместимость версий "расширения" или "привязки".

Решения:

  1. Обновите версию пакета расширений до host.json версии 4.x или более поздней.

    {
      "version": "2.0",
      "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[4.*, 5.0.0)"
      }
    }
    
  2. Для проектов .NET, использующих явные ссылки на расширения, обновите все Microsoft.Azure.WebJobs.Extensions.* пакеты до последних версий.

Откат обновления

Если вам нужно вернуться к предыдущей версии языка:

  1. Если вы использовали промежуточный слот:

    • Переключите промежуточный слот обратно в продакшен.
    • Для будущих попыток верните слот развертывания к предыдущей версии.
  2. Если вы обновили производственную среду напрямую:

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

Совет

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