Before you begin, you must have the following requirements in place:
- An Azure account with an active subscription. Create an account for free.
- One of the following tools for creating Azure resources:
- Azure CLI version 2.4 or later.
- Azure PowerShell version 5.9.0 or later.
- The Azure Functions Core Tools version 4.2.1 or later.
- The Azurite storage emulator. While you can also use an actual Azure Storage account, the article assumes you're using this emulator.
Prerequisite check
# to check that the Azure Functions Core Tools are version v4.0.5095 or above.
$ func --version
4.0.5198
# to check that the Azure CLI version is 2.4 or later.
$ az --version
azure-cli 2.49.0
core 2.49.0
telemetry 1.0.8
Dependencies:
msal 1.20.0
azure-mgmt-resource 22.0.0
Python location '/opt/homebrew/Cellar/azure-cli/2.49.0/libexec/bin/python'
Extensions directory '/Users/kenanhancer/.azure/cliextensions'
Python (Darwin) 3.10.12 (main, Jun 7 2023, 00:38:32) [Clang 14.0.3 (clang-1403.0.22.14.1)]
Legal docs and information: aka.ms/AzureCliLegal
Your CLI is up-to-date.
# to sign in to Azure and verify an active subscription.
$ az login
Azure Functions Runtime Versions
All functions in Azure function app must share the same language. You chose the language of functions in your function app when you create the app.
find more information for supported language versions.
There are two levels of support:
- Generally available (GA) – Fully supported and approved for production use.
- Preview – Not yet supported, but expected to reach GA status in the future.
The following table indicates which programming languages are currently supported in each runtime version.
Language | 1.x | 2.x | 3.x | 4.x |
---|---|---|---|---|
C# | GA (.NET Framework 4.8) | GA (.NET Core 2.1) | GA (.NET Core 3.1) | GA (.NET 6.0) GA (.NET 7.0) GA (.NET Framework 4.8) |
JavaScript | GA (Node.js 6) | GA (Node.js 10 & 8) | GA (Node.js 14, 12, & 10) | GA (Node.js 18, 16, & 14) |
F# | GA (.NET Framework 4.8) | GA (.NET Core 2.11) | GA (.NET Core 3.1) | GA (.NET 6.0) GA (.NET 7.0) |
Java | N/A | GA (Java 8) | GA (Java 11 & 8) | GA (Java 11 & 8) GA (Java 17) |
PowerShell | N/A | N/A | N/A | GA (PowerShell 7.2) |
Python | N/A | GA (Python 3.7) | GA (Python 3.9, 3.8, 3.7) | GA (Python 3.10, 3.9, 3.8, 3.7) |
TypeScript | N/A | GA | GA | GA |
How to specifiy Language of Azure Function App
The language of your Azure Function App is maintained in the FUNCTIONS_WORKER_RUNTIME application setting, and shouldn't be changed when there are existing functions.
The language worker runtime to load in the Azure Function App. This corresponds to the language being used in your Azure Function Application (for example, dotnet
). Starting with version 2.x of the Azure Functions runtime, a given Azure Function App can only support a single language.
Key | Sample value |
---|---|
FUNCTIONS_WORKER_RUNTIME | node |
Valid values:
Value | Language |
---|---|
dotnet | C# (class library) C# (script) |
dotnet-isolated | C# (isolated worker process) |
java | Java |
node | JavaScript TypeScript |
powershell | PowerShell |
python | Python |
custom | Other |
Some important Azure Function App Settings
more information for App settings reference for Azure Functions
I focues on FUNCTIONS_WORKER_RUNTIME and FUNCTIONS_EXTENSION_VERSION below.
How to specifiy Runtime Version of Azure Function App
The version of the Functions runtime used by published apps in Azure is dictated by the FUNCTIONS_EXTENSION_VERSION application setting. In some cases and for certain languages, other settings may apply.
By default, function apps created in the Azure portal, by the Azure Functions Core Tools CLI, or from Visual Studio tools are set to version 4.x.
The Azure Functions runtime is the environment in which your function app runs. Different versions of the runtime support different features and have different behaviors. Therefore, it's important to specify the correct runtime version for your application's needs.
The value of FUNCTIONS_EXTENSION_VERSION
is usually set to a value like ~3
or ~4
, which indicates that the application should use the latest point release of the specified major version. For instance, ~4
would use the latest 4.x version.
If you want to pin to a specific version of the runtime, you can specify it directly, like 3.0.15828
. However, it's generally recommended to use the tilde (~) syntax to ensure that you receive updates and bug fixes automatically.
Note that if you're running your function app locally, the FUNCTIONS_EXTENSION_VERSION
setting in local.settings.json
is ignored. The version of the runtime used locally is determined by the version of the Azure Functions Core Tools you have installed. To check your local runtime version, you can use the func --version
command.
# in my local system
$ func –version
4.0.5198
So in terms of func –version above, FUNCTIONS_EXTENSION_VERSION value can be set to 4.0.5198
A value of ~4
means that your app runs on version 4.x of the runtime, which supports .NET 6.0.
Key | Sample value |
---|---|
FUNCTIONS_EXTENSION_VERSION | ~4 |
The following major runtime version values are supported:
Value | Runtime target | Comment |
---|---|---|
~4 | 4.x | Recommended |
~3 | 3.x | Support ends December 13, 2022 |
~2 | 2.x | No longer supported |
~1 | 1.x | Supported |