Azure Functions – 2022 update
With Microsoft Build completed, and Ignite happening now, the team wanted to give an update on the latest releases this year in Azure Functions since the previous Fall update in November.
We have been getting great feedback from customers and the community and I wanted to thank everyone for the continued growth of Functions and making the product better together.
General availability announcements
The following capabilities are now generally available for all Functions customers.
Azure Functions .NET Framework support in the isolated worker model
You can now build production Serverless Apps with Azure Functions v4 in the isolated worker model with .NET Framework 4.8. This allows apps with .NET Framework dependencies to take advantage of the latest versions of Azure Functions host.
If you are on .NET Framework on Functions v1, it is recommended to migrate to .NET 6 or .NET 7 of the v4 host. If your apps have .NET Framework dependencies, please migrate to .NET framework on v4 and provide feedback on our Azure Functions .NET Worker GitHub repository.
Apps built using this capability will follow the same patterns as any isolated .NET worker project in Functions, but they will specify .NET Framework 4.8 as the target framework. Please provide feedback through the Azure Functions .NET Worker GitHub repository.
PowerShell on Linux OS support
Azure Functions support for PowerShell on Linux OS is now generally available in Azure Functions runtime 4.0 on all hosting plans. You can now develop Azure Functions PowerShell apps locally and deploy them to Azure Functions on Linux OS. This also makes it possible to run your PowerShell apps when running Functions in Kubernetes.
Azure Functions support for PowerShell 7.2
Azure Functions support for PowerShell 7.2 enables developing and deploying Azure Function Apps for production scenarios using the latest version of PowerShell. Azure Functions PowerShell 7.2 requires your Functions App to be on the Functions runtime version 4.
Follow this guide to upgrade existing Function Apps to PowerShell 7.2
Learn more about what’s new on PowerShell 7.2
Learn more about supported languages by runtime.
Azure Functions custom OpenID support
Apps can be configured with any OpenID provider as a custom identity provider for the App Service Authentication feature. You can learn more about this capability on Configure an OpenID Connect provider.
Node.js 16 support
Node.js 16.x is the latest long-term support (LTS) release of the Node.js runtime and includes features such as a new version of the V8 JavaScript engine. Azure Functions support for Node.js 16 follows the Node.js lifecycle. Please refer to the Node.js Releases page for its planned end-of-life date.
Learn how to use Azure Functions in Visual Studio and Visual Studio code.
New regions available for Azure Functions
Azure Functions is also now available in the follow regions. You can see a full list of supported regions on the Azure region site for Functions.
Windows Consumption, Linux Premium and Windows Premium
France South, Korea South, Qatar Central, Sweden Central, Sweden South
Linux Consumption
Canada Central, Jio India West, South Africa North, Sweden Central, West Central US
Azure Functions Linux Elastic Premium plan increased maximum scale-out limits
Maximum scale-out limits for Azure Functions on Linux Elastic Premium plans have been increased in the following regions:
Regions New scale-out limit
Australia East 40
Central US 100
East US 100
East US 2 100
North Europe 80
South Central US 60
UK South 60
West Europe 100
West US 40
You can learn more about these region expansions in the documentation.
Azure Functions Kafka trigger support
The Kafka extension for Azure Functions enables you to detect and respond to real time messages streaming into Kafka topics or write to a Kafka topic through the output binding. You can now focus on your Azure Function’s logic without worrying about the event-sourcing pipeline or maintaining infra to host the extension. This extension is supported when hosting functions in the Premium plan.
Learn more about the Kafka extension in the documentation.
Dynamic concurrency in Azure Functions
Dynamic concurrency automatically determines optimal per trigger concurrency settings for your workloads and adjusts as your load patterns change over time. Using dynamic concurrency can provide the following benefits to your function apps:
- Increased throughput
- Simplified concurrency configuration
- Dynamic adjustments to changing load patterns
- Instance health protection
This feature currently supports Service Bus, Azure Blob, and Azure Queue triggers.
Learn more about the benefits of dynamic concurrency and how to optimize concurrency.
Azure Functions extension for Event Grid blob trigger
The Event Grid blob trigger handles events raised by a storage account and is now generally available.
The extension allows you to reduce latency by triggering on an event subscription to the same blob container. The event subscription uses Event Grid to forward changes in the blob container as events for your function to consume.
Azure Functions retry policy for Event Hubs and timer triggers
You can now set a retry policy using Event Hubs or timer triggers that re-executes a function until successful execution or the maximum number of retries occur.
Durable Functions for Node.js
This version has significant performance and robustness advantage over the old version.
To get a sense of improvement, consider this simple fan-out-fan-in orchestration over 15k activities.
A fan-out-fan-in benchmark
Here we use Durable Functions Extension version 2.6.1 and run this benchmark on the Azure Functions Consumption plan for Windows. We then compare the performance of this benchmark between the npm package `durable-functions` version `1.5.4` and version `2.0.0`. See results below.
This new major release reduces orchestration time by more than 50%. Your improvement may vary, but we expect most workloads to experience increased runtime performance from this release, especially for high-scale workloads.
This release makes use of new features in the Durable Functions Extension to prevent race-conditions that cause orchestrations to get stuck in large fan-out-fan-in scenarios, especially when durable timers are involved.
Try it out by installing version 2.0.0, or later, of the SDK.
Important Note: There are a few breaking changes in this release for certain edge use cases. For details, please see our release notes.
Linux portal editing for applications
Azure Functions now supports developing and editing applications, running on Linux, to be created and edited within the Azure portal.
Learn more about developing Functions in the portal: Create your first function in the Azure portal.
Public preview announcements
We have also recently released the following capabilities into public preview. We would love to get feedback on these features while we work to make them generally availability.
Announcing the .NET 7 support for Azure functions in an isolated process
You can now build your serverless applications with .NET 7 in Azure Functions using the .NET Isolated Worker model, which provides an isolation model that decouples your function process from the Azure Functions runtime, bringing the flexibility needed to target different versions of .NET, more efficiently manage dependencies and service registration.
You can provide feedback about this preview feature and your use cases via the Azure Functions .NET language worker Github repository.
See the announcement for .NET 7 support for Azure functions in an isolated process.
Durable functions support for isolated .NET worker process
Durable functions now support running in the isolated .NET worker process in Azure Functions. You can now use the isolated .NET worker process to develop your applications.
Additional resources:
Durable Functions for Java
Durable Functions, an extension to Azure Functions that lets you define stateful serverless workflows in code, now supports Java. You can use Durable Functions to implement complex function orchestration that would otherwise require writing lots of boilerplate code for state management.
In this preview, you can leverage existing Durable Functions patterns such as "function chaining", "fan out/fan in", "async http APIs", "monitor", and "human interaction". The sample below shows a simple durable function that is triggered by an http request and invokes tasks in a sequence.
Read the documentation for more patterns supported by Durable Functions. To get started with Java Durable Functions, try the quickstart.
JavaScript and Python support in Azure SQL bindings
Azure SQL bindings for Azure Functions is now expanded to include support for JavaScript and Python functions. With Azure SQL bindings, data can be input from a database to the function with an input binding and data can be output from the function to the database. Configuring these bindings is accomplished with a small number of parameters, including specification of the database query or table and the connection string.
To learn more about developing Azure Functions with the Azure SQL bindings for Azure Functions in C#, JavaScript, and Python, visit the documentation. The library is open source and is available on GitHub.
Java 17 Support in Azure Functions
Azure Functions now supports Java 17 in preview on dedicated, consumption, and premium plans for Windows and Linux.
Learn more about Java 17
More information about Support Languages
Node.js 18 in Azure Functions
Azure Functions support for Node.js 18 is now in public preview. This version of Node.js is supported by Functions runtime v4.x.
Node.js 18 is currently in the initial release stage. You can download it or find more information on the Node.js releases page.
Learn how to use Azure Functions in Visual Studio Code.
KEDA add-on for AKS
KEDA is a Kubernetes-based Event Driven Autoscaler. With KEDA, you can drive the scaling of any container in Kubernetes based on the number of events needing to be processed. This scaler can be used with Azure Functions open source runtime to scale functions.
KEDA can be added to your Azure Kubernetes Service (AKS) cluster by enabling the KEDA add-on using the Azure CLI. The add-on provides a fully supported installation of KEDA that is integrated with AKS.
App Configuration references for App Service and Azure Functions
App Service and Azure Functions now support referencing configuration key-values from the Azure App Configuration service. App Configuration provides central management of configuration key-values that can span resources and deployment environments. When defining an application setting or connection string within App Service and Azure Functions, instead of providing a direct value, you can now specify a key-value in an external Azure App Configuration store. The app uses its managed identity to resolve the value from the store and expose it as an environment variable to your application.
This initial preview does not yet include support for network-restricted configuration stores or for resolution of configuration store references to Key Vault. Referenced key-values are not yet refreshed automatically, and new values will only be pulled in when the app restarts as the result of another config change such as modifying an app setting.
We would love to hear feedback on these new capabilities and your overall experience with Functions so we can make sure we meet all your needs. You can click on the “Send us your feedback” button from the overview page of your function app. Also you can learn more about cloud-native at Ignite at the following blog.
Thanks for all your feedback from the Azure Functions Team.