To support building serverless applications in any programming language or runtime, Azure Functions provides a Custom Handlers feature that is now generally available.
Many developers have already been successful building Azure Functions custom handlers in: Go, Rust, R, PHP, Swift, Deno, and many more languages and runtimes.
Introducing Azure Functions custom handlers
Creating a custom handler is simple. Use your favorite language to build an HTTP server. When an Azure Functions instance starts up, it also starts an instance of your server as a custom handler. Whenever Azure Functions is triggered on an event—such as an HTTP request, timer, queue message, or change in Azure Cosmos DB—it sends a request to your handler. Your custom handler app can scale to hundreds of instances, just like any Azure Functions app.
Azure Functions has a rich collection of triggers and bindings; all are available to your custom handler. Whether you want to save queue messages to an Azure Cosmos DB database, or send real-time WebSocket messages to thousands of clients using Azure SignalR Service, you can do it in your custom handler process in a few lines of code.
You can build, run, and deploy your custom handler apps using the Azure Functions Core Tools CLI or the Azure Functions extension in Visual Studio Code.
Custom handler apps can be deployed to all Azure Functions plans, including the consumption plan. You must ensure that you package your app's dependencies in your deployment package and any native binaries match the target platform environment. If you need deep control over the execution environment, you can also deploy custom handler apps in a container. This provides even further flexibility to run custom handlers in a container platform like Kubernetes.
Getting started with custom handlers
Start building Azure Functions custom handler apps today. Check out our documentation as well as some featured blog posts and samples from the community.