Azure Functions – Fall 2021 update
With Ignite and .NET Conf completed, the team wanted to give an update on the latest releases in Azure Functions to enable customers to build event driven serverless applications. The team has been extremely busy working with customers over the last few months to invest in the developer's experience in Functions as well as platform improvements.
The following capabilities are now generally available for all Functions customers.
General availability announcements
Azure Functions runtime 4.0
Azure Functions runtime 4.0 is now generally available, supporting the following language/runtime versions:
- .NET 6.0 (in-process and isolated process)
- Node.js 14, 16 (preview)
- Python 3.7, 3.8, 3.9
- Java 8, 11
- PowerShell 7.0
- Custom handlers
You can learn more about the 4.0 runtime on https://docs.microsoft.com/en-us/azure/azure-functions/functions-versions
.NET 6.0 in Azure Functions
Azure Functions support for .NET 6.0 is now generally available in Azure Functions runtime 4.0. .NET 6.0 is the latest Long Term Support (LTS) version of .NET. Both the in-process and isolated models are supported in .NET 6.0 Azure Functions.
Create a new C# Function app in .NET 6.0 in Visual Studio 2022
Azure Functions support for .NET 6.0 follows the .NET 6.0 lifecycle. To learn more, please refer to Azure Functions Language support policy and .NET support policy.
Get started with .NET 6.0 on Azure Functions with this tutorial .
Build and deploy full-stack .NET 6.0 apps with backend APIs with Azure Static Web Apps
Azure Static Web Apps now supports building and deploying full-stack .NET 6.0 applications. .NET 6.0 is the latest Long Term Support (LTS) version of .NET.
For your app’s frontend, Static Web Apps can now automatically build and deploy .NET 6.0 Blazor WebAssembly apps, including those that use advanced .NET 6.0 features like ahead-of-time (AOT) compilation.
For backend APIs, you can build and deploy .NET 6.0 Azure Functions with your static web apps. Both in-process and isolated .NET 6.0 function apps are supported.
Azure Static Web Apps support for .NET 6.0 follows the .NET 6.0 lifecycle. To learn more, please refer to the .NET support policy as well as the announcement blog post.
Learn more about Azure Static Web Apps.
Availability zones for Azure Functions premium and dedicated app service plans
Customers who are looking for enhanced reliability of their function apps can now enable availability zones on their functions running in Azure Functions elastic premium and dedicated app service plans. This gives customers the ability to ensure that your function app is available on unique datacenters within the Azure region to help keep your app running even if a data center is down for a period. You can learn more about Zone redundancy in the documentation.
Azure Functions extensions for Blobs, Queues, Event Hubs, Service Bus, and Event Grid with identity based connection support
A set of Azure Functions triggers and bindings based on the latest Azure SDKs is now generally available. This covers:
Identity-based connections allow you to connect with these services using an identity rather than a connection string secret that must be managed. This identity could be the managed identity of your hosted app or, when running locally, your own developer identity.
.NET applications can now also be written with the latest types from the Azure SDKs. These replace some of the older types exposed by the triggers and bindings. To take advantage of these, you may also need to update some packages and `using` statements. Please see the binding reference for each service you wish to connect to.
Azure Functions Python 3.9 support
Using python 3.9, users are able to advantages of new features in Python 3.9 . To learn more about the new capabilities, please visit What’s New In Python 3.9 — Python 3.9.7 documentation
In addition, we updated the default settings for Azure Function Python apps concurrency settings. Follow this guide to learn how to configure your apps to achieve better throughput performance.
OpenAPI with Azure Functions HTTP Trigger
The OpenAPI extension is now generally available for your .Net Azure Functions applications and renders Swagger UI, and OpenAPI v2 and v3 documents on-the-fly. You can learn more about the extension on the GitHub repo.
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.
PowerShell on Linux in Azure Functions
Azure Functions support for PowerShell on Linux OS is now available in public preview for Consumption and Elastic Premium SKUs. You can now develop Azure Functions PowerShell apps locally and deploy them to Azure Functions on Linux OS.
To get started with Azure Functions PowerShell, please read this article.
Node.js 16 in Azure Functions
Azure Functions support for Node.js 16.x is now in public preview in Azure Functions runtime 4.0.
Node.js 16.13.0, the current LTS version, is available on Linux function apps. Windows function apps currently support version 16.9.1 and will be updated to an LTS version in December 2021.
Get started with Node.js on Azure Functions with this tutorial.
Dynamic concurrency in Azure Functions
This feature allows you to automatically determine optimal per trigger concurrency settings for your workloads.
In addition, dynamic concurrency can improve the performance of your applications by optimizing the throughput for each instance and make real-time adjustments to your concurrency settings as your load patterns change over time.
The preview currently supports Service Bus triggers. If you encounter any issues or have feedback, please file an issue on the Github repo.
Learn more about the benefits of dynamic concurrency and how to use concurrency.
Distributed tracing for Java apps on Azure Functions Linux
Azure Monitor application insights Java integration with Azure Functions on Linux allows you to view richer data from your functions applications, including, requests, dependencies, logs, and metrics. Application monitoring for Azure Functions can be enabled directly from Azure portal.
Azure Functions offers built-in integration with Azure Application Insights to monitor functions apps. For languages other than .NET and .NET Core additional language-specific workers/extensions are needed to get the full benefits of distributed tracing, this is the functionality that Azure Monitor application insights integration with Azure Functions covers.
The additional data also lets you see and diagnose end-to-end transactions and see the application map, which aggregates many transactions to show a topological view of how the systems interact, and what the average performance and error rates are.
The end-to-end diagnostics and the application map provide visibility into one single transaction/request. Together these two features are very helpful for finding the root cause of reliability issues and performance bottlenecks on a per request basis.
The integration with Azure Functions is now in public preview and will feature the consistent monitoring experience that is available for the application insights Java 3.x agent. Learn more
SQL Binding support
Azure Functions can now interact with SQL databases through input and output bindings for Azure SQL. The library to enable this functionality is in public preview and is available from NuGet as Microsoft.Azure.WebJobs.Extensions.Sql. 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, visit the documentation. The library is open source and is available on GitHub.
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.
Thanks for all your feedback from the Azure Functions Team.