Azure Functions hosting plans and host storage — Flex Consumption, retirements, identity-based AzureWebJobsStorage
Which Functions hosting plan to use in 2026 and what each one requires — Flex Consumption as the default serverless plan with its limits and the settings it no longer accepts, the legacy Consumption plan and the Linux retirement dates, Premium, Dedicated and Container Apps hosting — plus the host storage account, its identity-based settings per plan, the roles the host and each trigger need, Node.js version support, and the runtime's 32-character host ID rule.
markdownreferencev1X1F6-XMVAstage: designtrust: officialservice: functionsinterface: iacinterface: cliFlex Consumption planFC1 FlexConsumption skufunctionAppConfiginstanceMemoryMB 512 2048 4096maximumInstanceCount 1000alwaysReadyone app per Flex planno deployment slots FlexFlex in-place migration not supportedLinux Consumption retirement September 30 2028v3 Linux Consumption stopped September 30 2026Consumption plan legacy Y1Elastic Premium EP1Dedicated planFunctions on Container AppsAzureWebJobsStorage__accountNameAzureWebJobsStorage__credential managedidentityAzureWebJobsStorage__clientIdWEBSITE_CONTENTAZUREFILECONNECTIONSTRINGWEBSITE_CONTENTSHAREStorage Blob Data Owner Functions hostStorage Table Data Contributor diagnostic eventsFlex deprecated settingsFUNCTIONS_WORKER_RUNTIME FlexWEBSITE_RUN_FROM_PACKAGE FlexNode.js 22 24 FunctionsNode.js 20 end of supporthost ID 32 characters
Azure Functions hosting plans and host storage
Which plan
| Plan | Status (October 2026) | Use when |
|---|---|---|
Flex Consumption (FC1, tier FlexConsumption, Linux) | GA; Microsoft's default for new serverless apps | Event-driven or HTTP work that scales to zero; VNet integration; identity-only storage |
Elastic Premium (EP1–EP3) | GA | Always-warm instances, Windows code apps, Linux containers |
| Dedicated (App Service plan) | GA | You already pay for an App Service plan; deployment slots |
| Container Apps | GA | Functions as a container beside other container apps |
Consumption (Y1, legacy) | Windows GA. Linux: no new features or language versions; v3 apps on Linux Consumption stopped after September 30, 2026; Linux Consumption hosting retires September 30, 2028 | Existing Windows apps only |
Moving to Flex Consumption is a new app plus a redeploy: in-place migration from another plan isn't supported, and you can't migrate a Flex app to another plan.
Flex Consumption specifics
- One app per plan. No deployment slots (zero-downtime rolling updates are in preview instead). App initialization must finish within 30 seconds.
- Instance memory: 512 MB (0.25 vCPU), 2,048 MB (1 vCPU, the recommended default), 4,096 MB (2 vCPU). Maximum instances: 1 to 1,000 per function group. Optional always-ready instances. The regional memory quota is adjustable: read it, don't assume it.
- Languages: Node.js 22 and 24, Python 3.10–3.14, .NET 8/9/10 isolated (no in-process), Java 8–25, PowerShell 7.4/7.6.
- Blob trigger only with the Event Grid source; non-.NET apps need extension bundle
[4.0.0, 5.0.0)or later. No NFS shares; noWEBSITE_TIME_ZONE/TZ. VNet integration needs theMicrosoft.Appprovider registered. - Deployment: a zip package in a blob container, read by the app at startup (by default in the
AzureWebJobsStorageaccount). The container must exist before the app is created. - Configuration lives in
properties.functionAppConfig:runtime { name, version },scaleAndConcurrency { instanceMemoryMB, maximumInstanceCount, alwaysReady, triggers.http.perInstanceConcurrency },deployment.storage { type: 'blobContainer', value: <container URL>, authentication }.
Settings that templates copied from other plans still carry, and Flex rejects or ignores (Microsoft's list, abridged): FUNCTIONS_WORKER_RUNTIME, FUNCTIONS_WORKER_RUNTIME_VERSION, FUNCTIONS_EXTENSION_VERSION (platform-managed), WEBSITE_NODE_DEFAULT_VERSION, WEBSITE_RUN_FROM_PACKAGE, WEBSITE_CONTENTAZUREFILECONNECTIONSTRING, WEBSITE_CONTENTSHARE, SCM_DO_BUILD_DURING_DEPLOYMENT, ENABLE_ORYX_BUILD, WEBSITE_VNET_ROUTE_ALL, WEBSITE_DNS_SERVER, WEBSITE_MAX_DYNAMIC_APPLICATION_SCALE_OUT; site properties linuxFxVersion, alwaysOn, use32BitWorkerProcess, functionAppScaleLimit (now maximumInstanceCount), preWarmedInstanceCount (now alwaysReady), vnetRouteAllEnabled, ftpsState. Remove them.
Host storage (AzureWebJobsStorage)
Every app needs a general-purpose storage account with blob, queue and table endpoints. The host uses it for timer and blob-trigger coordination, function keys and diagnostic events.
Identity-based form (no key in settings; __ is read as :):
| Setting | Value |
|---|---|
AzureWebJobsStorage__accountName | The account name (standard endpoints) |
AzureWebJobsStorage__credential | managedidentity |
AzureWebJobsStorage__clientId (or __managedIdentityResourceId) | The user-assigned identity; omit for the system-assigned one |
AzureWebJobsStorage__blobServiceUri, __queueServiceUri, __tableServiceUri | Only for custom DNS or sovereign clouds (HTTPS) |
| Plan | Identity for host storage | Azure Files content share |
|---|---|---|
| Flex Consumption | Full | None |
| Dedicated | Full | None |
| Consumption, Elastic Premium | Blobs, queues, tables | Still needs WEBSITE_CONTENTAZUREFILECONNECTIONSTRING (a key): keep it in Key Vault, or run without Azure Files (slower) |
Roles for the identity on the host account: Storage Blob Data Owner (the documented minimum) plus Storage Table Data Contributor for diagnostic events. Blob triggers add Storage Queue Data Contributor and Storage Account Contributor; Event Hubs triggers and timers rely on Storage Blob Data Owner. Use separate app settings (not AzureWebJobsStorage) for your own storage bindings and SDK clients, even on the same account.
Other rules:
- These settings must exist and be valid at creation; adding them later doesn't fix an app created without them. Never mark them as slot settings, and don't let deployments overwrite them.
- Host ID is derived from the app name's first 32 characters: two apps or slots sharing a storage account and a 32-character prefix collide (AZFD0004, the host stops). Give each app its own storage account.
APPLICATIONINSIGHTS_AUTHENTICATION_STRINGwith Monitoring Metrics Publisher makes telemetry keyless too.
Node.js versions
Node.js 24 (support until April 30, 2028) and 22 (until April 30, 2027) are the supported versions; Node.js 22 is the last one Linux Consumption gets. Programming model v4 (@azure/functions 4.x, 4.16.5 in October 2026) needs runtime 4.25+.
Errors: reference/functions/errors.md. Durable Functions: reference/functions/durable-functions.md; Functions on Container Apps: reference/functions/functions-on-container-apps.md.