Skip to content

Platform upgrade from Azure Functions runtime V2 to V3

divyagandhisethi edited this page Feb 23, 2021 · 8 revisions
Clone this wiki locally

In order to keep all elements of the Azure Functions service patched and maintained with security updates moving forward, we will be rolling out a platform upgrade in October 2020 for V2 applications.

For more information on the upgrade, please refer to the GitHub announcement.

Azure Functions V2 apps will be upgraded to run on the V3 runtime. Azure Functions V3 is highly compatible with V2 and the vast majority of apps will be upgraded seamlessly.

Some .NET apps currently running in Azure Functions runtime V2 may be incompatible with an optimized .NET Core 3.1 host. For each affected app, you can either choose to opt-out of the platform upgrade, meaning the underlying runtime for your app will continue to run on as-is but no longer receive security updates, or make changes to your app to be compatible with the changes.

Azure Functions V2 apps target .NET Core 2.1 (by default) or 2.2, and V3 apps target .NET Core 3.1. If you are using any APIs that have changed in .NET Core 3.1, you will need to make modifications to your app. We have been running analysis over the past few weeks and will send a direct notification to subscription owners if we detect your app has incompatible changes. We will also make an effort to automatically opt these apps out of the upgrade. If you are currently running a V2 app that is not using one of the impacted .NET APIs, no action is required. Your app will continue to run on V2 and receive security and platform upgrades.

Upgrading a .NET function app from runtime V2 to V3

If your V2 app is using one of these APIs, we recommend upgrading to V3. The steps required to upgrade your application can be found in our documentation.

Upgrading core tools

We recommend for anyone staying with the 2.x supported version upgrades to the 3.x version of core tools once the upgrade has completed. If you are opting out of the upgrade, you should remain on the 2.x version of the core tools.

For instructions on how to upgrade to the 3.x version of core tools, please refer to this page.

Opting out of the upgrade

If you do not upgrade your app to Azure Functions runtime V3, you may “pin” your app to the version of Azure Functions v2 before the platform upgrade that will impact these APIs.

To pin your app to Azure Functions V2, update the application setting FUNCTIONS_EXTENSION_VERSION to ~2.0.

Opting out for Linux apps

If you are running functions on the Linux Consumption plan, to opt out you will need to update update the application setting FUNCTIONS_EXTENSION_VERSION to ~2.0. If your LinuxFxVersion is empty, then please set that to your runtime and runtime version as well (Ex: For a Node 8 app, you can set LinuxFxVersion to NODE|8)

If you are running functions in a Linux Functions Premium or Linux App Service, to opt out you will need to update the site config: linuxFxVersion to DOCKER|mcr.microsoft.com/azure-functions/dotnet:2.0.14786-appservice.

UPDATE (Oct 5 2020): To prevent existing applications from being impacted, we will begin the process of automatically opting out apps that are still at risk for breaking that have not either upgraded to v3 or opted out already. We will opt the apps out by changing the FUNCTIONS_EXTENSION_VERSION to ~2.0. It is worth noting by redeploying from something like an ARM template users may inadvertently opt back in if they change that setting.