Since we first released Azure Functions, we’ve seen a lot of customers using the service to build APIs. Functions is a fantastic way to quickly express an action, and the consumption plan is a great billing model for many types of applications.
However, we’ve also heard that dealing with multiple functions could be easier. It’s often difficult to manage large solutions within a single function app. There are also quite a few customers that want to use microservices architectures, with deployment isolation between individual components. Splitting the work into multiple function apps works for most triggers, but it’s a bit trickier for APIs. Each function app has its own hostname, so there can be many hosts to keep track of, without a unified API surface. This can make things difficult for client applications, especially when the client needs to switch between environments for testing.
Today, we are pleased to announce the public preview of Azure Functions Proxies, a new capability that makes it easier to develop APIs using Azure Functions. Proxies lets you define a single API surface for multiple function apps. Any function app can now define an endpoint that serves as a reverse proxy to another API, be that another function app, an API app, or anything else.
You can learn more about Azure Functions Proxies by going to our documentation page. The feature is free while in preview, but standard Functions billing applies to proxy executions. See the Azure Functions pricing page for more information.
Creating your first proxy
To create a proxy, head to any function app. In the left-hand navigation, you should now see a Proxies section. Select “New proxy” to get started. You will need to provide a name for the proxy, the endpoint you wish to expose, and the backend endpoint that will serve the request.
Proxies exist as peers to functions in a function app. They are configured just like HTTP-triggered functions, and from a client perspective, they look the same. However, the proxy behavior is independently enabled and versioned. If this is the first proxy you’ve created for a function app, you will need to enable the feature in function app settings.
Getting in touch with the team
Please give Azure Functions Proxies a try and let us know what you think! We have some additional capabilities planned for this scenario, but as always, we’d love to hear what matters most to you.
If you run into any problems, let us know on the forums, ask a question on StackOverFlow, or file an issue on GitHub. If you have any additional features you would like to see, please let us know on Uservoice.