Dedicated hosting plans for Azure Functions
This article is about hosting your function app with dedicated resources in an App Service plan, including in an App Service Environment (ASE). For other hosting options, see the hosting plan article.
An App Service plan defines a set of dedicated compute resources for an app to run. These dedicated compute resources are analogous to the server farm in conventional hosting. One or more function apps can be configured to run on the same computing resources (App Service plan) as other App Service apps, such as web apps. The dedicated App Service plans supported for function app hosting include Basic, Standard, Premium, and Isolated SKUs. For details about how the App Service plan works, see the Azure App Service plans in-depth overview.
Important
Free and Shared tier App Service plans aren't supported by Azure Functions. For a lower-cost option hosting your function executions, you should instead consider the Consumption plan or the Flex Consumption plan, where you are billed based on function executions.
Consider a dedicated App Service plan in the following situations:
- You have existing, underutilized VMs that are already running other App Service instances.
- You want to provide a custom image on which to run your functions.
Billing
You pay for function apps in an App Service Plan as you would for other App Service resources. This differs from Azure Functions Consumption plan or Premium plan hosting, which have consumption-based cost components. You are billed only for the plan, regardless of how many function apps or web apps run in the plan. To learn more, see the App Service pricing page.
Always On
When you run your app on an App Service plan, you should enable the Always on setting so that your function app runs correctly. On an App Service plan, the Functions runtime goes idle after a few minutes of inactivity. The Always on setting is available only on an App Service plan. In other plans, the platform activates function apps automatically. If you choose not to enable Always on, you can reactivate an idled app in these ways:
- Send a request to an HTTP trigger endpoint or any other endpoint on the app. Even a failed request should wake up your app.
- Access your app in the Azure portal.
Even with Always on enabled, the execution timeout for individual functions is controlled by the functionTimeout
setting in the host.json project file.
Scaling
Using an App Service plan, you can manually scale out by adding more VM instances. You can also enable autoscale, though autoscale will be slower than the elastic scale of the Premium plan. For more information, see Scale instance count manually or automatically. You can also scale up by choosing a different App Service plan. For more information, see Scale up an app in Azure.
Note
When running JavaScript (Node.js) functions on an App Service plan, you should choose a plan that has fewer vCPUs. For more information, see Choose single-core App Service plans.
App Service Environments
Running in an App Service Environment (ASE) lets you fully isolate your functions and take advantage of higher numbers of instances than an App Service Plan. To get started, see Introduction to the App Service Environments.
If you just want to run your function app in a virtual network, you can do this using the Premium plan. To learn more, see Establish Azure Functions private site access.