Обзор версий среды выполнения для решения "Функции Azure"Azure Functions runtime versions overview

Сейчас функции Azure поддерживают три версии узла среды выполнения: 1. x, 2. x и 3. x.Azure Functions currently supports three versions of the runtime host: 1.x, 2.x, and 3.x. В рабочих сценариях поддерживаются все три версии.All three versions are supported for production scenarios.

Важно!

Версия 1. x находится в режиме обслуживания и поддерживает только разработку на портал Azure или локально на компьютерах Windows.Version 1.x is in maintenance mode and only supports development in the Azure portal or locally on Windows computers. Усовершенствования предоставляются только в более поздних версиях.Enhancements are provided only in later versions.

В этой статье описаны некоторые различия между различными версиями, способы создания каждой версии и изменения версий.This article details some of the differences between the various versions, how you can create each version, and how to change versions.

ЯзыкиLanguages

Начиная с версии 2. x, среда выполнения использует модель расширяемости языка, и все функции в приложении-функции должны использовать один и тот же язык.Starting with version 2.x, the runtime uses a language extensibility model, and all functions in a function app must share the same language. Язык функций в приложении-функции выбирается при создании приложения и сохраняется в параметре _ _ среды выполнения рабочих функций .The language of functions in a function app is chosen when creating the app and is maintained in the FUNCTIONS_WORKER_RUNTIME setting.

В следующей таблице перечислены языки программирования, которые в настоящее время поддерживаются для каждой версии среды выполнения.The following table indicates which programming languages are currently supported in each runtime version.

ЯзыкLanguage 1.x1.x 2.x2.x 3.x3.x
C#C# Общедоступная версия (.NET Framework 4.7)GA (.NET Framework 4.7) Общедоступная версия (.NET Core 2.2)GA (.NET Core 2.2) Общедоступная версия (.NET Core 3.1)GA (.NET Core 3.1)
JavaScriptJavaScript Общедоступная версия (Node 6)GA (Node 6) Общедоступная версия (Node 10 и Node 8)GA (Node 10 & 8) Общедоступная версия (Node 12 и Node 11)GA (Node 12 & 11)
F#F# Общедоступная версия (.NET Framework 4.7)GA (.NET Framework 4.7) Общедоступная версия (.NET Core 2.2)GA (.NET Core 2.2) Общедоступная версия (.NET Core 3.1)GA (.NET Core 3.1)
JavaJava НедоступноN/A Общедоступная версия (Java 8)GA (Java 8) Общедоступная версия (Java 111 и Java 8)GA (Java 111 & 8)
PowerShellPowerShell НедоступноN/A Общедоступная версия (PowerShell Core 6)GA (PowerShell Core 6) Общедоступная версия (PowerShell 7 и Core 6)GA (PowerShell 7 & Core 6)
PythonPython НедоступноN/A Общедоступная версия (Python 3.7 и 3.6)GA (Python 3.7 & 3.6) Общедоступная версия (Python 3.8, 3.7 и 3.6)GA (Python 3.8, 3.7, & 3.6)
TypeScriptTypeScript НедоступноN/A Общедоступная версия2GA2 Общедоступная версия2GA2

1 Сейчас поддержка версий языков доступна в предварительной версии.1 Language version support is currently in preview.
2 Поддерживается посредством транскомпиляции в JavaScript.2 Supported through transpiling to JavaScript.

Сведения о запланированных изменениях поддержки языков см. в стратегии развития Azure.For information about planned changes to language support, see Azure roadmap.

Дополнительные сведения см. в списке поддерживаемых языков.For more information, see Supported languages.

Запуск в определенной версииRun on a specific version

По умолчанию приложения функций, созданные в портал Azure и Azure CLI, имеют значение версии 3. x.By default, function apps created in the Azure portal and by the Azure CLI are set to version 3.x. При необходимости эту версию можно изменить.You can modify this version as needed. Вы можете изменить версию среды выполнения до 1. x после создания приложения функции, но перед добавлением каких бы то ни было функций.You can only change the runtime version to 1.x after you create your function app but before you add any functions. Перемещение между 2. x и 3. x разрешено даже с приложениями, которые имеют функции, но по-прежнему рекомендуется сначала проверить в новом приложении.Moving between 2.x and 3.x is allowed even with apps that have functions, but it is still recommended to test in a new app first.

Переход с версии 1. x на более позднюю версиюMigrating from 1.x to later versions

Вы можете выбрать миграцию существующего приложения, написанного для использования среды выполнения версии 1. x, вместо этого использовать более новую версию.You may choose to migrate an existing app written to use the version 1.x runtime to instead use a newer version. Большинство изменений, которые необходимо внести, связаны с изменениями в языковой среде выполнения, такими как изменения API C# между .NET Framework 4,7 и .NET Core.Most of the changes you need to make are related to changes in the language runtime, such as C# API changes between .NET Framework 4.7 and .NET Core. Также нужно убедиться, что код и библиотеки совместимы с выбранными языковыми средами выполнения.You'll also need to make sure your code and libraries are compatible with the language runtime you choose. И наконец, обязательно обратите внимание на все изменения в триггерах, привязках и функциях, указанные ниже.Finally, be sure to note any changes in trigger, bindings, and features highlighted below. Для достижения наилучших результатов миграции следует создать новое приложение-функцию в новой версии и перенести существующий код функции версии 1. x в новое приложение.For the best migration results, you should create a new function app in a new version and port your existing version 1.x function code to the new app.

Хотя можно выполнить обновление на месте путем ручного обновления конфигурации приложения, переход от 1. x к более поздней версии включает некоторые критические изменения.While it's possible to do an "in-place" upgrade by manually updating the app configuration, going from 1.x to a higher version includes some breaking changes. Например, в C# объект отладки изменяется с TraceWriter на ILogger .For example, in C#, the debugging object is changed from TraceWriter to ILogger. Создание нового проекта версии 3. x начинается с обновленных функций на основе последних шаблонов версии 3. x.By creating a new version 3.x project, you start off with updated functions based on the latest version 3.x templates.

Изменения в триггерах и привязках после версии 1. xChanges in triggers and bindings after version 1.x

Начиная с версии 2. x, необходимо установить расширения для конкретных триггеров и привязок, используемых функциями в приложении.Starting with version 2.x, you must install the extensions for specific triggers and bindings used by the functions in your app. Единственное исключение — триггеры HTTP и таймера, для которых не требуется расширение.The only exception for this HTTP and timer triggers, which don't require an extension. Для получения дополнительной информации ознакомьтесь с разделом Регистрация расширений привязки.For more information, see Register and install binding extensions.

Существует также несколько изменений в function.js атрибутов функции или между версиями.There are also a few changes in the function.json or attributes of the function between versions. Например, свойство path для концентратора событий теперь имеет атрибут eventHubName.For example, the Event Hub path property is now eventHubName. Для получения ссылок на документацию для каждой привязки см. таблицу существующих привязок.See the existing binding table for links to documentation for each binding.

Изменения в функциях и функциях после версии 1. xChanges in features and functionality after version 1.x

Некоторые функции были удалены, обновлены или заменены после версии 1. x.A few features were removed, updated, or replaced after version 1.x. В этом разделе описаны изменения, которые отображаются в более поздних версиях после использования версии 1. x.This section details the changes you see in later versions after having used version 1.x.

В версии 2.x внесены следующие изменения.In version 2.x, the following changes were made:

  • Ключи для вызова конечных точек HTTP всегда хранятся в зашифрованном виде в хранилище BLOB-объектов Azure.Keys for calling HTTP endpoints are always stored encrypted in Azure Blob storage. В версии 1. x ключи хранились в хранилище файлов Azure по умолчанию.In version 1.x, keys were stored in Azure File storage by default. При обновлении приложения с версии 1.x до версии 2.x выполняется сброс существующих секретных данных, которые находятся в хранилище файлов.When upgrading an app from version 1.x to version 2.x, existing secrets that are in file storage are reset.

  • Среда выполнения версии 2.x не имеет встроенной поддержки для поставщиков веб-перехватчиков.The version 2.x runtime doesn't include built-in support for webhook providers. Это изменение внесено для повышения производительности.This change was made to improve performance. Вы по-прежнему можете использовать HTTP-триггеры как конечные точки для веб-перехватчиков.You can still use HTTP triggers as endpoints for webhooks.

  • Файл конфигурации узла (host.json) должен быть пустым или содержать строку "version": "2.0".The host configuration file (host.json) should be empty or have the string "version": "2.0".

  • Чтобы улучшить наблюдение, панель мониторинга веб-заданий на портале, которая использовала этот AzureWebJobsDashboard параметр, заменяется Application Insights Azure, которая использует этот APPINSIGHTS_INSTRUMENTATIONKEY параметр.To improve monitoring, the WebJobs dashboard in the portal, which used the AzureWebJobsDashboard setting is replaced with Azure Application Insights, which uses the APPINSIGHTS_INSTRUMENTATIONKEY setting. Дополнительные сведения см. в разделе Мониторинг функций Azure.For more information, see Monitor Azure Functions.

  • Все функции в приложении-функции должны использовать один язык.All functions in a function app must share the same language. При создании приложения-функции необходимо выбрать для приложения стек среды выполнения.When you create a function app, you must choose a runtime stack for the app. Стек среды выполнения задается FUNCTIONS_WORKER_RUNTIME значением в параметрах приложения.The runtime stack is specified by the FUNCTIONS_WORKER_RUNTIME value in application settings. Это требование добавлено для уменьшения занимаемого места и ускорения запуска.This requirement was added to improve footprint and startup time. При локальной разработке также необходимо включить этот параметр в файл local.settings.json.When developing locally, you must also include this setting in the local.settings.json file.

  • По умолчанию для функций в плане службы приложений устанавливается время ожидания 30 минут.The default timeout for functions in an App Service plan is changed to 30 minutes. Вы можете вручную снять это ограничение, изменив параметр functionTimeout в файле host.json.You can manually change the timeout back to unlimited by using the functionTimeout setting in host.json.

  • Ограничения параллелизма HTTP реализуются по умолчанию для функций плана потребления со значением по умолчанию 100 одновременных запросов на экземпляр.HTTP concurrency throttles are implemented by default for Consumption plan functions, with a default of 100 concurrent requests per instance. Его можно изменить в maxConcurrentRequests параметре в host.jsдля файла.You can change this in the maxConcurrentRequests setting in the host.json file.

  • Из-за ограничений .NET Coreподдержка функций сценария F # (. fsx) была удалена.Because of .NET Core limitations, support for F# script (.fsx) functions has been removed. Скомпилированные функции F# (.fs) по-прежнему поддерживаются.Compiled F# functions (.fs) are still supported.

  • Для веб-перехватчиков триггера сетки событий формат URL-адреса изменен на https://{app}/runtime/webhooks/{triggerName}.The URL format of Event Grid trigger webhooks has been changed to https://{app}/runtime/webhooks/{triggerName}.

Миграция с 2. x на 3. xMigrating from 2.x to 3.x

Функции Azure версии 3. x имеют высокую обратную совместимость с версией 2. x.Azure Functions version 3.x is highly backwards compatible to version 2.x. Многие приложения должны иметь возможность безопасно выполнить обновление до 3. x без каких бы то ни было изменений кода.Many apps should be able to safely upgrade to 3.x without any code changes. При переходе на 3. x рекомендуется выполнять сложные тесты перед изменением основной версии в рабочих приложениях.While moving to 3.x is encouraged, be sure to run extensive tests before changing the major version in production apps.

Критические изменения между 2. x и 3. xBreaking changes between 2.x and 3.x

Ниже приведены изменения, которые следует учитывать перед обновлением приложения 2. x до 3. x.The following are the changes to be aware of before upgrading a 2.x app to 3.x.

JavaScriptJavaScript

  • Выходные привязки, назначенные с помощью context.done или возвращаемые значения, теперь ведут себя так же, как и параметр в context.bindings .Output bindings assigned through context.done or return values now behave the same as setting in context.bindings.

  • Объект триггера таймера — это camelCase, а не PascalCaseTimer trigger object is camelCase instead of PascalCase

  • Функции, активируемые концентратором событий с dataType двоичными данными, получают массив binary вместо string .Event Hub triggered functions with dataType binary will receive an array of binary instead of string.

  • Полезные данные HTTP-запроса больше не могут быть доступны через context.bindingData.req .The HTTP request payload can no longer be accessed via context.bindingData.req. Доступ к нему по-прежнему можно получить в качестве входного параметра, context.req и в context.bindings .It can still be accessed as an input parameter, context.req, and in context.bindings.

  • Node.js 8 больше не поддерживается и не будет выполняться в функциях 3. x.Node.js 8 is no longer supported and will not execute in 3.x functions.

.NET.NET

Изменение версии приложений в AzureChanging version of apps in Azure

Версия среды выполнения функций, используемая опубликованными приложениями в Azure, зависит от FUNCTIONS_EXTENSION_VERSION параметра приложения.The version of the Functions runtime used by published apps in Azure is dictated by the FUNCTIONS_EXTENSION_VERSION application setting. Поддерживаются следующие основные значения версии среды выполнения:The following major runtime version values are supported:

ЗначениеValue Целевой объект среды выполненияRuntime target
~3 3.x3.x
~2 2.x2.x
~1 1.x1.x

Важно!

Не меняйте этот параметр произвольно, так как могут потребоваться другие изменения параметров приложения и изменения кода функции.Don't arbitrarily change this setting, because other app setting changes and changes to your function code may be required.

Локально разработанные версии приложенийLocally developed application versions

Вы можете внести следующие обновления в приложения для работы с приложениями, чтобы локально изменить целевые версии.You can make the following updates to function apps to locally change the targeted versions.

Версии среды выполнения Visual StudioVisual Studio runtime versions

В Visual Studio вы выбираете версию среды выполнения при создании проекта.In Visual Studio, you select the runtime version when you create a project. Инструменты функций Azure для Visual Studio поддерживают три основные версии среды выполнения.Azure Functions tools for Visual Studio supports the three major runtime versions. При отладке и публикации правильная версия применяется автоматически на основе настроек проекта.The correct version is used when debugging and publishing based on project settings. Параметры версии определяются в файле .csproj в следующих свойствах:The version settings are defined in the .csproj file in the following properties:

Версия 1.xVersion 1.x
<TargetFramework>net461</TargetFramework>
<AzureFunctionsVersion>v1</AzureFunctionsVersion>
Версия 2.xVersion 2.x
<TargetFramework>netcoreapp2.1</TargetFramework>
<AzureFunctionsVersion>v2</AzureFunctionsVersion>
Версия 3.xVersion 3.x
<TargetFramework>netcoreapp3.1</TargetFramework>
<AzureFunctionsVersion>v3</AzureFunctionsVersion>

Примечание

Для функций Azure 3. x и .NET требуется Microsoft.NET.Sdk.Functions расширение по крайней мере 3.0.0 .Azure Functions 3.x and .NET requires the Microsoft.NET.Sdk.Functions extension be at least 3.0.0.

Обновление приложений 2. x до 3. x в Visual StudioUpdating 2.x apps to 3.x in Visual Studio

Можно открыть существующую функцию, предназначенную для 2. x, и перейти к 3. x, изменив .csproj файл и обновив значения, приведенные выше.You can open an existing function targeting 2.x and move to 3.x by editing the .csproj file and updating the values above. Visual Studio управляет версиями среды выполнения автоматически на основе метаданных проекта.Visual Studio manages runtime versions automatically for you based on project metadata. Однако это возможно, если вы никогда не создавали приложение 3. x, прежде чем в Visual Studio еще не будут созданы шаблоны и среда выполнения для 3. x на вашем компьютере.However, it's possible if you have never created a 3.x app before that Visual Studio doesn't yet have the templates and runtime for 3.x on your machine. Это может представлять собой сообщение об ошибке, например "не доступна среда выполнения функций, соответствующая версии, указанной в проекте".This may present itself with an error like "no Functions runtime available that matches the version specified in the project." Чтобы получить последние шаблоны и среду выполнения, ознакомьтесь с возможностями по созданию нового проекта функции.To fetch the latest templates and runtime, go through the experience to create a new function project. При появлении страницы Выбор версии и шаблона подождите, пока Visual Studio не завершит выборку последних шаблонов.When you get to the version and template select screen, wait for Visual Studio to complete fetching the latest templates. После того как последние шаблоны .NET Core 3 будут доступны и будут отображены, вы сможете запустить и отладить любой проект, настроенный для версии 3. x.Once the latest .NET Core 3 templates are available and displayed you should be able to run and debug any project configured for version 3.x.

Важно!

Функции версии 3. x можно разрабатывать только в Visual Studio, если используется Visual Studio версии 16,4 или более поздней.Version 3.x functions can only be developed in Visual Studio if using Visual Studio version 16.4 or newer.

Основные инструменты VS Code и Функций AzureVS Code and Azure Functions Core Tools

Основные инструменты службы функции Azure используются для разработки из командной строки, а также в расширении Функций Azure для Visual Studio Code.Azure Functions Core Tools is used for command line development and also by the Azure Functions extension for Visual Studio Code. Для разработки на базе версии 3. x установите версию 3. x основных средств.To develop against version 3.x, install version 3.x of the Core Tools. Для разработки версии 2. x требуется версия 2. x основных средств и т. д.Version 2.x development requires version 2.x of the Core Tools, and so on. Дополнительные сведения см. в разделе Установка основных инструментов Функций Azure.For more information, see Install the Azure Functions Core Tools.

Для разработки в Visual Studio Code следует также изменить параметры пользователя, чтобы azureFunctions.projectRuntime соответствовал версии установленных инструментов.For Visual Studio Code development, you may also need to update the user setting for the azureFunctions.projectRuntime to match the version of the tools installed. Этот параметр также обновляет шаблоны и языки, используемые при создании приложения-функции.This setting also updates the templates and languages used during function app creation. Для создания приложений в ~3 необходимо обновить azureFunctions.projectRuntime параметр пользователя на ~3 .To create apps in ~3 you would update the azureFunctions.projectRuntime user setting to ~3.

Параметр среды выполнения расширения функций Azure

Приложения Maven и JavaMaven and Java apps

Вы можете перенести приложения Java с версии 2. x на 3. x, установив версию 3. x основных средств , необходимых для локального запуска.You can migrate Java apps from version 2.x to 3.x by installing the 3.x version of the core tools required to run locally. Убедившись, что приложение правильно работает локально в версии 3. x, обновите файл приложения, POM.xml чтобы изменить FUNCTIONS_EXTENSION_VERSION значение параметра на ~3 , как показано в следующем примере:After verifying that your app works correctly running locally on version 3.x, update the app's POM.xml file to modify the FUNCTIONS_EXTENSION_VERSION setting to ~3, as in the following example:

<configuration>
    <resourceGroup>${functionResourceGroup}</resourceGroup>
    <appName>${functionAppName}</appName>
    <region>${functionAppRegion}</region>
    <appSettings>
        <property>
            <name>WEBSITE_RUN_FROM_PACKAGE</name>
            <value>1</value>
        </property>
        <property>
            <name>FUNCTIONS_EXTENSION_VERSION</name>
            <value>~3</value>
        </property>
    </appSettings>
</configuration>

ПривязкиBindings

Начиная с версии 2. x среда выполнения использует новую модель расширяемости привязки , которая предоставляет следующие преимущества:Starting with version 2.x, the runtime uses a new binding extensibility model that offers these advantages:

  • Поддержка сторонних расширений привязок.Support for third-party binding extensions.

  • Разделение среды выполнения и привязок.Decoupling of runtime and bindings. Это изменение позволяет отдельно управлять версиями расширений привязок и выпускать эти расширения.This change allows binding extensions to be versioned and released independently. Например, можно выполнить обновление до версии расширения на основе более новой версии базового пакета SDK.You can, for example, opt to upgrade to a version of an extension that relies on a newer version of an underlying SDK.

  • Менее ресурсоемкая среда выполнения, где в среде выполнения известны только используемые привязки и только они загружаются в нее.A lighter execution environment, where only the bindings in use are known and loaded by the runtime.

За исключением триггеров HTTP и таймера, все привязки теперь необходимо вручную добавлять в проект приложения-функции или регистрировать на портале.With the exception of HTTP and timer triggers, all bindings must be explicitly added to the function app project, or registered in the portal. Для получения дополнительной информации ознакомьтесь с разделом Регистрация расширений привязки.For more information, see Register binding extensions.

В следующей таблице перечислены поддерживаемые привязки для каждой версии среды выполнения.The following table shows which bindings are supported in each runtime version.

В этой таблице показаны привязки, которые поддерживаются в двух основных версиях среды выполнения Функций Azure.This table shows the bindings that are supported in the major versions of the Azure Functions runtime:

ТипType 1.x1.x 2.x и выше12.x and higher1 ТриггерTrigger Входные данныеInput Выходные данныеOutput
Хранилище BLOB-объектовBlob storage
Azure Cosmos DBAzure Cosmos DB
Dapr3Dapr3
Сетка событийEvent Grid
Центры событийEvent Hubs
HTTP и веб-перехватчикиHTTP & webhooks
Центр Интернета вещейIoT Hub
Kafka2Kafka2
Мобильные приложенияMobile Apps
Центры уведомленийNotification Hubs
Хранилище очередейQueue storage
RabbitMQ2RabbitMQ2
SendGridSendGrid
Служебная шинаService Bus
SignalRSignalR
Хранилище таблицTable storage
ТаймерTimer
TwilioTwilio

1 Начиная со среды выполнения версии 2.х, все привязки, кроме HTTP и Timer, должны быть зарегистрированы.1 Starting with the version 2.x runtime, all bindings except HTTP and Timer must be registered. Ознакомьтесь с разделом Регистрация расширений привязки.See Register binding extensions.

2 Триггеры не поддерживаются в плане потребления.2 Triggers aren't supported in the Consumption plan. Требуются триггеры, управляемые средой выполнения.Requires runtime-driven triggers.

3 Поддерживается только в Kubernetes, IoT Edge и других автономных режимах.3 Supported only in Kubernetes, IoT Edge, and other self-hosted modes only.

Время ожидания приложения-функцииFunction app timeout duration

Время ожидания приложения-функции определяется свойством functionTimeout в файле проекта host.json.The timeout duration of a function app is defined by the functionTimeout property in the host.json project file. В следующей таблице показаны значения по умолчанию и максимальные значения в минутах для обоих планов и различных версий среды выполнения.The following table shows the default and maximum values in minutes for both plans and the different runtime versions:

ПланPlan Версия среды выполненияRuntime Version По умолчаниюDefault МаксимумMaximum
ПотреблениеConsumption 1.x1.x 55 1010
ПотреблениеConsumption 2.x2.x 55 1010
ПотреблениеConsumption 3.x3.x 55 1010
PremiumPremium 1.x1.x 3030 Без ограниченийUnlimited
PremiumPremium 2.x2.x 3030 Без ограниченийUnlimited
PremiumPremium 3.x3.x 3030 Без ограниченийUnlimited
Служба приложенийApp Service 1.x1.x Без ограниченийUnlimited Без ограниченийUnlimited
Служба приложенийApp Service 2.x2.x 3030 Без ограниченийUnlimited
Служба приложенийApp Service 3.x3.x 3030 Без ограниченийUnlimited

Примечание

Независимо от параметра времени ожидания приложения-функции 230 секунд — это максимальное время, в течение которого функция, активируемая HTTP, может реагировать на запрос.Regardless of the function app timeout setting, 230 seconds is the maximum amount of time that an HTTP triggered function can take to respond to a request. Это определяется стандартным временем простоя Azure Load Balancer.This is because of the default idle timeout of Azure Load Balancer. При более длительной обработке рассмотрите возможность использования асинхронного шаблона Устойчивых функций или отложите работу и получите немедленный ответ.For longer processing times, consider using the Durable Functions async pattern or defer the actual work and return an immediate response.

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

Дополнительные сведения см. в следующих ресурсах:For more information, see the following resources: