Visão geral de versões do Azure Functions runtimeAzure Functions runtime versions overview

As versões principais do tempo de execução do Azure Functions estão relacionadas à versão do .NET na qual o tempo de execução se baseia.The major versions of the Azure Functions runtime are related to the version of .NET on which the runtime is based. A tabela a seguir indica a versão atual do tempo de execução, o nível de versão e a versão do .NET relacionada.The following table indicates the current version of the runtime, the release level, and the related .NET version.

Versão de runtimeRuntime version Nível de liberação1Release level1 Versão do .NET.NET version
3.x3.x GAGA .NET Core 3,1.NET Core 3.1
2. x2.x GAGA .NET Core 2.2.NET Core 2.2
1.x1.x GA2GA2 .NET Framework 4,63.NET Framework 4.63

1 as versões de GA têm suporte para cenários de produção.1 GA releases are supported for production scenarios.
2 a versão 1. x está no modo de manutenção.2 Version 1.x is in maintenance mode. Os aprimoramentos são fornecidos somente em versões posteriores.Enhancements are provided only in later versions.
3 dá suporte apenas ao desenvolvimento no portal do Azure ou localmente em computadores com Windows.3 Only supports development in the Azure portal or locally on Windows computers.

Este artigo detalha algumas das diferenças entre as várias versões, como você pode criar cada versão e como alterar versões.This article details some of the differences between the various versions, how you can create each version, and how to change versions.

LinguagensLanguages

A partir da versão 2. x, o tempo de execução usa um modelo de extensibilidade de linguagem e todas as funções em um aplicativo de funções devem compartilhar o mesmo idioma.Starting with version 2.x, the runtime uses a language extensibility model, and all functions in a function app must share the same language. O idioma das funções em um aplicativo de funções é escolhido durante a criação do aplicativo e é mantido na configuração do _WORKER_tempo de execução .The language of functions in a function app is chosen when creating the app and is maintained in the FUNCTIONS_WORKER_RUNTIME setting.

As linguagens experimentais Azure Functions 1. x não podem usar o novo modelo, portanto, não há suporte no 2. x.Azure Functions 1.x experimental languages can't use the new model, so they aren't supported in 2.x. A tabela a seguir indica quais linguagens de programação são atualmente compatíveis com cada versão de runtime.The following table indicates which programming languages are currently supported in each runtime version.

IdiomaLanguage 1.x1.x 2. x2.x 3.x3.x
C#C# GA (.NET Framework 4.7)GA (.NET Framework 4.7) GA (.NET Core 2,2)GA (.NET Core 2.2) GA (.NET Core 3,1)GA (.NET Core 3.1)
JavaScriptJavaScript GA (Nó 6)GA (Node 6) GA (Nó 8 e 10)GA (Node 8 & 10) GA (nó 10 & 12)GA (Node 10 & 12)
F#F# GA (.NET Framework 4.7)GA (.NET Framework 4.7) GA (.NET Core 2,2)GA (.NET Core 2.2) GA (.NET Core 3,1)GA (.NET Core 3.1)
JavaJava N/DN/A GA (Java 8)GA (Java 8) GA (Java 8)GA (Java 8)
PowerShellPowerShell N/DN/A GA (PowerShell Core 6)GA (PowerShell Core 6) GA (PowerShell Core 6)GA (PowerShell Core 6)
PythonPython N/DN/A GA (Python 3,6 & 3,7)GA (Python 3.6 & 3.7) GA (Python 3,6 & 3,7)GA (Python 3.6 & 3.7)
TypeScriptTypeScript N/DN/A GA1GA1 GA1GA1

1 Com suporte por meio de transpiling para JavaScript.1Supported through transpiling to JavaScript.

Para obter informações sobre alterações planejadas para o suporte de linguagem, consulte o roteiro do Azure.For information about planned changes to language support, see Azure roadmap.

Para obter mais informações, consulte Linguagens com suporte.For more information, see Supported languages.

Executar em uma versão específicaRun on a specific version

Por padrão, os aplicativos de funções criados no portal do Azure e pelo CLI do Azure são definidos como a versão 2. x.By default, function apps created in the Azure portal and by the Azure CLI are set to version 2.x. Você pode modificar essa versão conforme necessário.You can modify this version as needed. Você só pode alterar a versão de tempo de execução para 1. x depois de criar seu aplicativo de funções, mas antes de adicionar qualquer função.You can only change the runtime version to 1.x after you create your function app but before you add any functions. A movimentação entre 2. x e 3. x é permitida mesmo com aplicativos que têm funções, mas ainda é recomendável testar em um novo aplicativo primeiro.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.

Migrando do 1. x para versões posterioresMigrating from 1.x to later versions

Você pode optar por migrar um aplicativo existente gravado para usar o tempo de execução da versão 1. x para, em vez disso, usar uma versão mais recente.You may choose to migrate an existing app written to use the version 1.x runtime to instead use a newer version. A maioria das alterações que você precisa fazer está relacionada a alterações no tempo de execução de linguagem, C# como alterações de API entre o .NET Framework 4,7 e o .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. Você também precisará verificar se seu código e suas bibliotecas são compatíveis com o runtime de linguagem escolhido.You'll also need to make sure your code and libraries are compatible with the language runtime you choose. Por fim, não deixe de observar as alterações no gatilho, associações e recursos destacados abaixo.Finally, be sure to note any changes in trigger, bindings, and features highlighted below. Para obter os melhores resultados de migração, você deve criar um novo aplicativo de funções em uma nova versão e portar seu código de função existente da versão 1. x para o novo aplicativo.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.

Embora seja possível fazer uma atualização "in-loco" atualizando manualmente a configuração do aplicativo, passar de 1. x para uma versão superior inclui algumas alterações significativas.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. Por exemplo, no C#, o objeto de depuração é alterado de TraceWriter para ILogger.For example, in C#, the debugging object is changed from TraceWriter to ILogger. Ao criar um novo projeto de versão 3. x, você começa com as funções atualizadas com base nos modelos de versão 3. x mais recentes.By creating a new version 3.x project, you start off with updated functions based on the latest version 3.x templates.

Alterações em gatilhos e associações após a versão 1. xChanges in triggers and bindings after version 1.x

A partir da versão 2. x, você deve instalar as extensões para gatilhos e associações específicas usadas pelas funções em seu aplicativo.Starting with version 2.x, you must install the extensions for specific triggers and bindings used by the functions in your app. A única exceção para isso são os gatilhos de temporizador e HTTP, que não exigem uma extensão.The only exception for this HTTP and timer triggers, which don't require an extension. Para obter mais informações, confira Registrar e instalar extensões de associação.For more information, see Register and install binding extensions.

Também há algumas alterações no Function. JSON ou atributos da função entre versões.There are also a few changes in the function.json or attributes of the function between versions. Por exemplo, a propriedade path do Hub de Eventos agora é eventHubName.For example, the Event Hub path property is now eventHubName. Veja a tabela de associação existente para obter links para a documentação de cada associação.See the existing binding table for links to documentation for each binding.

Alterações nos recursos e funcionalidade após a versão 1. xChanges in features and functionality after version 1.x

Alguns recursos foram removidos, atualizados ou substituídos após a versão 1. x.A few features were removed, updated, or replaced after version 1.x. Esta seção detalha as alterações que você vê em versões posteriores depois de ter usado a versão 1. x.This section details the changes you see in later versions after having used version 1.x.

As seguintes alterações foram feitas na versão 2.x:In version 2.x, the following changes were made:

  • As chaves para chamar pontos de extremidade HTTP são sempre armazenadas criptografadas no Armazenamento de Blobs do Azure.Keys for calling HTTP endpoints are always stored encrypted in Azure Blob storage. Na versão 1.x, chaves foram armazenadas no Armazenamento de Arquivos do Azure por padrão.In version 1.x, keys were stored in Azure File storage be default. Ao atualizar um aplicativo da versão 1.x para a 2.x, os segredos existentes que estão no armazenamento de arquivos são redefinidos.When upgrading an app from version 1.x to version 2.x, existing secrets that are in file storage are reset.

  • A versão 2.x do runtime não inclui suporte interno para provedores de webhook.The version 2.x runtime doesn't include built-in support for webhook providers. Essa alteração foi feita para melhorar o desempenho.This change was made to improve performance. Você ainda pode usar gatilhos HTTP como pontos de extremidade para webhooks.You can still use HTTP triggers as endpoints for webhooks.

  • O arquivo de configuração de host (host.json) deve estar vazio ou ter a cadeia de caracteres "version": "2.0".The host configuration file (host.json) should be empty or have the string "version": "2.0".

  • Para melhorar o monitoramento, o painel WebJobs no portal, o qual usou a configuração AzureWebJobsDashboard, é substituído com o Azure Application Insights, que usa a configuração 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. Para saber mais, consulte Monitorar Azure Functions.For more information, see Monitor Azure Functions.

  • Todas as funções em um aplicativo de funções devem compartilhar a mesma linguagem de programação.All functions in a function app must share the same language. Quando você cria um aplicativo de funções, você deve escolher para ele uma pilha de runtime.When you create a function app, you must choose a runtime stack for the app. A pilha de runtime é especificada pelo valor FUNCTIONS_WORKER_RUNTIME nas configurações do aplicativo.The runtime stack is specified by the FUNCTIONS_WORKER_RUNTIME value in application settings. Esse requisito foi adicionado para melhorar o tempo de inicialização e o volume.This requirement was added to improve footprint and startup time. Ao desenvolver localmente, você também deve incluir essa configuração no arquivo local.settings.json.When developing locally, you must also include this setting in the local.settings.json file.

  • O tempo limite padrão para as funções em um plano do Serviço de Aplicativo foi alterado para 30 minutos.The default timeout for functions in an App Service plan is changed to 30 minutes. Você pode alterar manualmente o tempo limite para ilimitado, usando a configuração functionTimeout em host.json.You can manually change the timeout back to unlimited by using the functionTimeout setting in host.json.

  • As restrições de simultaneidade HTTP são implementadas por padrão para funções de plano de consumo, com um padrão de 100 solicitações simultâneas por instância.HTTP concurrency throttles are implemented by default for Consumption plan functions, with a default of 100 concurrent requests per instance. Você pode alterar isso na configuração maxConcurrentRequests no arquivo host.json.You can change this in the maxConcurrentRequests setting in the host.json file.

  • Devido a limitações do .NET Core, o F# suporte para funções de script (. fsx) foi removido.Because of .NET Core limitations, support for F# script (.fsx) functions has been removed. Funções F# compiladas (.fs) ainda são compatíveis.Compiled F# functions (.fs) are still supported.

  • O formato da URL de webhooks de gatilho da Grade de Eventos foi alterado para https://{app}/runtime/webhooks/{triggerName}.The URL format of Event Grid trigger webhooks has been changed to https://{app}/runtime/webhooks/{triggerName}.

Migrando de 2. x para 3. xMigrating from 2.x to 3.x

Azure Functions versão 3. x é compatível com versões anteriores à versão 2. x.Azure Functions version 3.x is highly backwards compatible to version 2.x. Muitos aplicativos devem ser capazes de atualizar com segurança para 3. x sem nenhuma alteração de código.Many apps should be able to safely upgrade to 3.x without any code changes. Embora a mudança para 3. x seja incentivada, execute testes extensivos antes de alterar a versão principal em aplicativos de produção.While moving to 3.x is encouraged, be sure to run extensive tests before changing the major version in production apps.

Alterações significativas entre 2. x e 3. xBreaking changes between 2.x and 3.x

A seguir estão as alterações a serem observadas antes de atualizar um aplicativo 2. x para 3. x.The following are the changes to be aware of before upgrading a 2.x app to 3.x.

JavaScriptJavaScript

  • As associações de saída atribuídas por meio de context.done ou valores de retorno agora se comportam da mesma forma que a configuração em context.bindings.Output bindings assigned through context.done or return values now behave the same as setting in context.bindings.

  • O objeto de gatilho de temporizador é camelCase em vez de PascalCaseTimer trigger object is camelCase instead of PascalCase

  • As funções disparadas pelo hub de eventos com dataType binário receberão uma matriz de binary em vez de string.Event Hub triggered functions with dataType binary will receive an array of binary instead of string.

  • A carga de solicitação HTTP não pode mais ser acessada via context.bindingData.req.The HTTP request payload can no longer be accessed via context.bindingData.req. Ele ainda pode ser acessado como um parâmetro de entrada, context.reqe em context.bindings.It can still be accessed as an input parameter, context.req, and in context.bindings.

  • Não há mais suporte para node. js 8 e ele não será executado em funções 3. x.Node.js 8 is no longer supported and will not execute in 3.x functions.

.NET.NET

Como alterar a versão de aplicativos no AzureChanging version of apps in Azure

A versão do runtime do Functions usada por aplicativos publicados no Azure é determinada pela configuração de aplicativo FUNCTIONS_EXTENSION_VERSION.The version of the Functions runtime used by published apps in Azure is dictated by the FUNCTIONS_EXTENSION_VERSION application setting. Há suporte para os seguintes valores de versão de tempo de execução principais:The following major runtime version values are supported:

ValorValue Destino de tempo de execuçãoRuntime target
~3 3.x3.x
~2 2. x2.x
~1 1.x1.x

Importante

Não altere arbitrariamente essa configuração, pois outras alterações de configuração de aplicativo e alterações no código de função podem ser necessárias.Don't arbitrarily change this setting, because other app setting changes and changes to your function code may be required.

Versões do aplicativo desenvolvidas localmenteLocally developed application versions

Você pode fazer as seguintes atualizações para que os aplicativos funcionem para alterar localmente as versões de destino.You can make the following updates to function apps to locally change the targeted versions.

Versões de runtime do Visual StudioVisual Studio runtime versions

No Visual Studio, você seleciona a versão de runtime quando cria um projeto.In Visual Studio, you select the runtime version when you create a project. O Azure Functions Tools para Visual Studio dá suporte às três principais versões de tempo de execução.Azure Functions tools for Visual Studio supports the three major runtime versions. A versão correta é usada ao depurar e publicar com base nas configurações do projeto.The correct version is used when debugging and publishing based on project settings. As configurações de versão são definidas no arquivo .csproj nas seguintes propriedades:The version settings are defined in the .csproj file in the following properties:

Versão 1.xVersion 1.x
<TargetFramework>net461</TargetFramework>
<AzureFunctionsVersion>v1</AzureFunctionsVersion>
Versão 2.xVersion 2.x
<TargetFramework>netcoreapp2.1</TargetFramework>
<AzureFunctionsVersion>v2</AzureFunctionsVersion>
Versão 3.xVersion 3.x
<TargetFramework>netcoreapp3.1</TargetFramework>
<AzureFunctionsVersion>v3</AzureFunctionsVersion>

Observação

Azure Functions 3. x e .NET requer que a extensão Microsoft.Sdk.NET.Functions seja pelo menos 3.0.0.Azure Functions 3.x and .NET requires the Microsoft.Sdk.NET.Functions extension be at least 3.0.0.

Atualizando aplicativos 2. x para 3. x no Visual StudioUpdating 2.x apps to 3.x in Visual Studio

Você pode abrir uma função existente com destino 2. x e mover para 3. x editando o arquivo de .csproj e atualizando os valores acima.You can open an existing function targeting 2.x and move to 3.x by editing the .csproj file and updating the values above. O Visual Studio gerencia as versões de tempo de execução automaticamente com base nos metadados do projeto.Visual Studio manages runtime versions automatically for you based on project metadata. No entanto, é possível se você nunca tiver criado um aplicativo 3. x antes que o Visual Studio ainda não tenha os modelos e o tempo de execução para 3. x em seu computador.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. Isso pode se apresentar com um erro como "nenhum tempo de execução do Functions disponível que corresponde à versão especificada no projeto".This may present itself with an error like "no Functions runtime available that matches the version specified in the project." Para buscar os modelos e o tempo de execução mais recentes, percorra a experiência para criar um novo projeto de função.To fetch the latest templates and runtime, go through the experience to create a new function project. Quando chegar à tela de seleção de versão e modelo, aguarde até que o Visual Studio conclua a busca dos modelos mais recentes.When you get to the version and template select screen, wait for Visual Studio to complete fetching the latest templates. Depois que os modelos do .NET Core 3 mais recentes estiverem disponíveis e forem exibidos, você deverá ser capaz de executar e depurar qualquer projeto configurado para a versão 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.

Importante

As funções da versão 3. x só podem ser desenvolvidas no Visual Studio se você estiver usando o Visual Studio versão 16,4 ou mais recente.Version 3.x functions can only be developed in Visual Studio if using Visual Studio version 16.4 or newer.

VS Code e Azure Functions Core ToolsVS Code and Azure Functions Core Tools

O Azure Functions Core Tools é usado para o desenvolvimento de linha de comando e também pela extensão do Azure Functions para Visual Studio Code.Azure Functions Core Tools is used for command line development and also by the Azure Functions extension for Visual Studio Code. Para desenvolver na versão 3. x, instale a versão 3. x das principais ferramentas.To develop against version 3.x, install version 3.x of the Core Tools. O desenvolvimento da versão 2. x requer a versão 2. x das principais ferramentas e assim por diante.Version 2.x development requires version 2.x of the Core Tools, and so on. Para obter mais informações, confira Instalar o Azure Functions Core Tools.For more information, see Install the Azure Functions Core Tools.

Para desenvolvimento no Visual Studio Code, você também precisará atualizar a configuração do usuário para o azureFunctions.projectRuntime corresponder à versão das ferramentas instaladas.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. Essa configuração também atualiza os modelos e linguagens utilizados durante a criação do aplicativo de funções.This setting also updates the templates and languages used during function app creation. Para criar aplicativos no ~3 você atualizaria a configuração de azureFunctions.projectRuntime usuário para ~3.To create apps in ~3 you would update the azureFunctions.projectRuntime user setting to ~3.

Configuração do tempo de execução de Azure Functions extensão

Aplicativos Maven e JavaMaven and Java apps

Você pode migrar aplicativos Java da versão 2. x para 3. x instalando a versão 3. x das ferramentas principais necessárias para executar localmente.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. Depois de verificar se seu aplicativo funciona corretamente em execução localmente na versão 3. x, atualize o arquivo de POM.xml do aplicativo para modificar a configuração de FUNCTIONS_EXTENSION_VERSION para ~3, como no exemplo a seguir: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>

AssociaçõesBindings

A partir da versão 2. x, o tempo de execução usa um novo modelo de extensibilidade de associação que oferece essas vantagens:Starting with version 2.x, the runtime uses a new binding extensibility model that offers these advantages:

  • Suporte para extensões de associação de terceiros.Support for third-party binding extensions.

  • Desacoplamento de runtime e associações.Decoupling of runtime and bindings. Essa alteração permite que extensões de associação sejam lançadas independentemente e com controle de versão.This change allows binding extensions to be versioned and released independently. Você pode, por exemplo, optar por atualizar para uma versão de uma extensão que se baseia em uma versão mais recente de um SDK subjacente.You can, for example, opt to upgrade to a version of an extension that relies on a newer version of an underlying SDK.

  • Um ambiente de execução mais leve, onde apenas as associações em uso são conhecidas e carregadas pelo runtime.A lighter execution environment, where only the bindings in use are known and loaded by the runtime.

Com exceção dos gatilhos HTTP e de temporizador, todas as associações devem ser explicitamente adicionadas ao projeto do aplicativo de funções ou registradas no portal.With the exception of HTTP and timer triggers, all bindings must be explicitly added to the function app project, or registered in the portal. Para obter mais informações, confira Registrar extensões de associação.For more information, see Register binding extensions.

A tabela a seguir mostra quais associações são compatíveis em cada versão de runtime.The following table shows which bindings are supported in each runtime version.

Esta tabela mostra as associações com suporte nas versões principais do tempo de execução de Azure Functions:This table shows the bindings that are supported in the major versions of the Azure Functions runtime:

TypeType 1.x1.x 2. x e superior12.x and higher1 GatilhoTrigger EntradaInput SaídaOutput
Armazenamento de BlobsBlob storage
Cosmos DBCosmos DB
Grade de EventosEvent Grid
Hubs de EventosEvent Hubs
WebHooks de & de HTTPHTTP & webhooks
Hub IoTIoT Hub
Microsoft Graph
Tabelas do Excel
Microsoft Graph
Excel tables
Microsoft Graph
Arquivos do OneDrive
Microsoft Graph
OneDrive files
Microsoft Graph
Email do Outlook
Microsoft Graph
Outlook email
Microsoft Graph eventos de
Microsoft Graph
events
Microsoft Graph
Tokens de autenticação
Microsoft Graph
Auth tokens
Aplicativos MóveisMobile Apps
Hubs de NotificaçãoNotification Hubs
Armazenamento de filasQueue storage
SendGridSendGrid
Barramento de ServiçoService Bus
SignalRSignalR
Armazenamento de tabelasTable storage
TimerTimer
TwilioTwilio

1 a partir do tempo de execução da versão 2. x, todas as associações, exceto http e Timer, devem ser registradas.1 Starting with the version 2.x runtime, all bindings except HTTP and Timer must be registered. Confira Registrar as extensões de associação.See Register binding extensions.

Duração do tempo limite do aplicativo de funçõesFunction app timeout duration

A duração do tempo limite de um aplicativo de funções é definida pela propriedade functionTimeout no arquivo de projeto host. JSON .The timeout duration of a function app is defined by the functionTimeout property in the host.json project file. A tabela a seguir mostra os valores padrão e máximo em minutos para os planos e para as diferentes versões de tempo de execução:The following table shows the default and maximum values in minutes for both plans and the different runtime versions:

PlanoPlan Versão de tempo de execuçãoRuntime Version PadrãoDefault MáximoMaximum
ConsumoConsumption 1.x1.x 55 1010
ConsumoConsumption 2. x2.x 55 1010
ConsumoConsumption 3.x3.x 55 1010
Serviço de aplicativoApp Service 1.x1.x IlimitadoUnlimited IlimitadoUnlimited
Serviço de aplicativoApp Service 2. x2.x 3030 IlimitadoUnlimited
Serviço de aplicativoApp Service 3.x3.x 3030 IlimitadoUnlimited

Observação

Independentemente da configuração do tempo limite do aplicativo de funções, 230 segundos é a quantidade máxima de tempo que uma função disparada por HTTP pode levar para responder a uma solicitação.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. Isso ocorre devido ao tempo limite de ociosidade padrão de Azure Load Balancer.This is because of the default idle timeout of Azure Load Balancer. Para tempos de processamento mais longos, considere usar o padrão assíncrono Durable Functions ou adiar o trabalho real e retornar uma resposta imediata.For longer processing times, consider using the Durable Functions async pattern or defer the actual work and return an immediate response.

Próximos passosNext steps

Para saber mais, consulte os recursos a seguir:For more information, see the following resources: