Azure Functions Basics

Before you begin, you must have the following requirements in place:

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.

Language1.x2.x3.x4.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)
JavaScriptGA (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)
JavaN/AGA (Java 8)GA (Java 11 & 8)GA (Java 11 & 8) 
GA (Java 17)
PowerShellN/AN/AN/AGA (PowerShell 7.2)
PythonN/AGA (Python 3.7)GA (Python 3.9, 3.8, 3.7)GA (Python 3.10, 3.9, 3.8, 3.7)
TypeScriptN/AGAGAGA

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.

KeySample value
FUNCTIONS_WORKER_RUNTIMEnode

Valid values:

ValueLanguage
dotnetC# (class library)
C# (script)
dotnet-isolatedC# (isolated worker process)
javaJava
nodeJavaScript
TypeScript
powershellPowerShell
pythonPython
customOther

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.

KeySample value
FUNCTIONS_EXTENSION_VERSION~4

The following major runtime version values are supported:

ValueRuntime targetComment
~44.xRecommended
~33.xSupport ends December 13, 2022
~22.xNo longer supported
~11.xSupported