Opzioni di hosting di funzioni di AzureAzure Functions hosting options

Quando si crea un'app per le funzioni in Azure, è necessario scegliere un piano di hosting per l'app.When you create a function app in Azure, you must choose a hosting plan for your app. Sono disponibili tre piani di hosting di base per funzioni di Azure: piano a consumo, piano Premiume piano dedicato (servizio app).There are three basic hosting plans available for Azure Functions: Consumption plan, Premium plan, and Dedicated (App Service) plan. Tutti i piani di hosting sono disponibili a livello generale nelle macchine virtuali Linux e Windows.All hosting plans are generally available (GA) on both Linux and Windows virtual machines.

Il piano di hosting scelto determina i comportamenti seguenti:The hosting plan you choose dictates the following behaviors:

  • Modalità di ridimensionamento dell'app per le funzioni.How your function app is scaled.
  • Risorse disponibili per ogni istanza dell'app per le funzioni.The resources available to each function app instance.
  • Supporto per le funzionalità avanzate, ad esempio la connettività di rete virtuale di Azure.Support for advanced functionality, such as Azure Virtual Network connectivity.

Questo articolo fornisce un confronto dettagliato tra i diversi piani di hosting, oltre all'hosting basato su Kubernetes.This article provides a detailed comparison between the various hosting plans, along with Kubernetes-based hosting.

Panoramica dei pianiOverview of plans

Di seguito è riportato un riepilogo dei vantaggi dei tre piani di hosting principali per le funzioni:The following is a summary of the benefits of the three main hosting plans for Functions:

Piano a consumoConsumption plan Ridimensiona automaticamente e paga solo per le risorse di calcolo quando le funzioni sono in esecuzione.Scale automatically and only pay for compute resources when your functions are running.

Nel piano a consumo, le istanze dell'host funzioni vengono aggiunte e rimosse in modo dinamico in base al numero di eventi in ingresso.On the Consumption plan, instances of the Functions host are dynamically added and removed based on the number of incoming events.

✔ Piano di hosting predefinito.✔ Default hosting plan.
✔ Pagare solo quando le funzioni sono in esecuzione.✔ Pay only when your functions are running.
✔ Ridimensiona automaticamente, anche durante i periodi di carico elevato.✔ Scales automatically, even during periods of high load.
Piano PremiumPremium plan Esegue automaticamente il ridimensionamento in base alla richiesta utilizzando i thread di lavoro pre-riscaldati che eseguono applicazioni senza alcun ritardo dopo essere inattivi, vengono eseguite in istanze più potenti e si connettono a reti virtuali.Automatically scales based on demand using pre-warmed workers which run applications with no delay after being idle, runs on more powerful instances, and connects to virtual networks.

Si consideri il piano Premium di funzioni di Azure nelle situazioni seguenti:Consider the Azure Functions Premium plan in the following situations:

✔ Le app per le funzioni vengono eseguite in modo continuo o quasi continuo.✔ Your function apps run continuously, or nearly continuously.
✔ Si dispone di un numero elevato di esecuzioni di piccole dimensioni e di una fattura di esecuzione elevata, ma con un numero di secondi inferiore nel piano a consumo.✔ You have a high number of small executions and a high execution bill, but low GB seconds in the Consumption plan.
✔ Sono necessarie più opzioni di CPU o memoria rispetto a quelle fornite dal piano a consumo.✔ You need more CPU or memory options than what is provided by the Consumption plan.
✔ Il codice deve essere eseguito più a lungo del tempo di esecuzione massimo consentito nel piano a consumo.✔ Your code needs to run longer than the maximum execution time allowed on the Consumption plan.
✔ Sono necessarie funzionalità che non sono disponibili nel piano a consumo, ad esempio la connettività di rete virtuale.✔ You require features that aren't available on the Consumption plan, such as virtual network connectivity.
Piano dedicatoDedicated plan Eseguire le funzioni all'interno di un piano di servizio app alle normali tariffe del piano di servizio app.Run your functions within an App Service plan at regular App Service plan rates.

Ideale per scenari con esecuzione prolungata in cui non è possibile usare Durable Functions .Best for long-running scenarios where Durable Functions can't be used. Si consideri un piano di servizio app nelle situazioni seguenti:Consider an App Service plan in the following situations:

✔ Sono presenti VM sottoutilizzate esistenti che eseguono già altre istanze del servizio app.✔ You have existing, underutilized VMs that are already running other App Service instances.
✔ Si desidera fornire un'immagine personalizzata su cui eseguire le funzioni.✔ You want to provide a custom image on which to run your functions.
Sono necessari ✔ il ridimensionamento predittivo e i costi.✔ Predictive scaling and costs are required.

Le tabelle di confronto in questo articolo includono anche le opzioni di hosting seguenti, che forniscono la massima quantità di controllo e isolamento in cui eseguire le app per le funzioni.The comparison tables in this article also include the following hosting options, which provide the highest amount of control and isolation in which to run your function apps.

ASEASE Ambiente del servizio app (ASE) è una funzionalità del servizio app che fornisce un ambiente completamente isolato e dedicato per l'esecuzione sicura di app del servizio app su vasta scala.App Service Environment (ASE) is an App Service feature that provides a fully isolated and dedicated environment for securely running App Service apps at high scale.

Gli ambienti sono appropriati per i carichi di lavoro delle applicazioni che richiedono:ASEs are appropriate for application workloads that require:

✔ Scalabilità molto elevata.✔ Very high scale.
✔ L'isolamento completo del calcolo e l'accesso alla rete sicuro.✔ Full compute isolation and secure network access.
✔ Utilizzo elevato della memoria.✔ High memory usage.
KubernetesKubernetes Kubernetes fornisce un ambiente completamente isolato e dedicato in esecuzione nella piattaforma Kubernetes.Kubernetes provides a fully isolated and dedicated environment running on top of the Kubernetes platform.

Kubernetes è appropriato per i carichi di lavoro delle applicazioni che richiedono:Kubernetes is appropriate for application workloads that require:
✔ Requisiti hardware personalizzati.✔ Custom hardware requirements.
Isolamento ✔ e accesso alla rete protetto.✔ Isolation and secure network access.
✔ La possibilità di eseguire in un ambiente ibrido o multicloud.✔ Ability to run in hybrid or multi-cloud environment.
✔ Eseguiti insieme a servizi e applicazioni Kubernetes esistenti.✔ Run alongside existing Kubernetes applications and services.

Le tabelle rimanenti di questo articolo confrontano i piani su diverse funzionalità e comportamenti.The remaining tables in this article compare the plans on various features and behaviors. Per un confronto dei costi tra i piani di hosting dinamici (consumo e Premium), vedere la pagina dei prezzi di funzioni di Azure.For a cost comparison between dynamic hosting plans (Consumption and Premium), see the Azure Functions pricing page. Per i prezzi delle varie opzioni di piano dedicato, vedere la pagina dei prezzi del servizio app.For pricing of the various Dedicated plan options, see the App Service pricing page.

Sistema operativo/RuntimeOperating system/runtime

La tabella seguente illustra il supporto del sistema operativo e del runtime di linguaggio supportati per i piani di hosting.The following table shows supported operating system and language runtime support for the hosting plans.

Linux1Linux1
Solo codiceCode-only
Windows2Windows2
Solo codiceCode-only
Linux1, 3Linux1,3
Contenitore DockerDocker container
Piano a consumoConsumption plan .NET Core.NET Core
Node.jsNode.js
JavaJava
PythonPython
.NET Core.NET Core
Node.jsNode.js
JavaJava
PowerShell CorePowerShell Core
Nessun supportoNo support
Piano PremiumPremium plan .NET Core.NET Core
Node.jsNode.js
JavaJava
PythonPython
.NET Core.NET Core
Node.jsNode.js
JavaJava
PowerShell CorePowerShell Core
.NET Core.NET Core
Node.jsNode.js
JavaJava
PowerShell CorePowerShell Core
PythonPython
Piano dedicatoDedicated plan .NET Core.NET Core
Node.jsNode.js
JavaJava
PythonPython
.NET Core.NET Core
Node.jsNode.js
JavaJava
PowerShell CorePowerShell Core
.NET Core.NET Core
Node.jsNode.js
JavaJava
PowerShell CorePowerShell Core
PythonPython
ASEASE .NET Core.NET Core
Node.jsNode.js
JavaJava
PythonPython
.NET Core.NET Core
Node.jsNode.js
JavaJava
PowerShell CorePowerShell Core
.NET Core.NET Core
Node.jsNode.js
JavaJava
PowerShell CorePowerShell Core
PythonPython
KubernetesKubernetes n/dn/a n/dn/a .NET Core.NET Core
Node.jsNode.js
JavaJava
PowerShell CorePowerShell Core
PythonPython

1 Linux è l'unico sistema operativo supportato per lo stack di runtime di Python.1 Linux is the only supported operating system for the Python runtime stack.
2 Windows è l'unico sistema operativo supportato per lo stack del runtime di PowerShell.2 Windows is the only supported operating system for the PowerShell runtime stack.
3 Linux è l'unico sistema operativo supportato per i contenitori docker.3 Linux is the only supported operating system for Docker containers.

Durata del timeout di un'app per le funzioniFunction app timeout duration

La durata del timeout di un'app per le funzioni è definita dalla proprietà functionTimeout nel file di progetto host.json.The timeout duration of a function app is defined by the functionTimeout property in the host.json project file. La tabella seguente mostra i valori predefiniti e quelli massimi in minuti per i piani e per le diverse versioni di runtime:The following table shows the default and maximum values in minutes for both plans and the different runtime versions:

PianoPlan Versione di runtimeRuntime Version PredefinitoDefault MassimoMaximum
ConsumoConsumption 1.x1.x 55 1010
ConsumoConsumption 2.x2.x 55 1010
ConsumoConsumption 3.x3.x 55 1010
PremiumPremium 1.x1.x 3030 Nessuna limitazioneUnlimited
PremiumPremium 2.x2.x 3030 Nessuna limitazioneUnlimited
PremiumPremium 3.x3.x 3030 Nessuna limitazioneUnlimited
Servizio appApp Service 1.x1.x Nessuna limitazioneUnlimited Nessuna limitazioneUnlimited
Servizio appApp Service 2.x2.x 3030 Nessuna limitazioneUnlimited
Servizio appApp Service 3.x3.x 3030 Nessuna limitazioneUnlimited

Nota

Indipendentemente dall'impostazione di timeout dell'app per le funzioni, 230 secondi è la quantità di tempo massima che una funzione attivata da HTTP può impiegare per rispondere a una richiesta.Regardless of the function app timeout setting, 230 seconds is the maximum amount of time that an HTTP triggered function can take to respond to a request. Il motivo è legato al timeout di inattività predefinito di Azure Load Balancer.This is because of the default idle timeout of Azure Load Balancer. Per tempi di elaborazione più lunghi, provare a usare lo schema asincrono di Durable Functions oppure rinviare il processo effettivo e restituire una risposta immediata.For longer processing times, consider using the Durable Functions async pattern or defer the actual work and return an immediate response.

ScalabilitàScale

Nella tabella seguente vengono confrontati i comportamenti di ridimensionamento dei vari piani di hosting.The following table compares the scaling behaviors of the various hosting plans.

Aumentare il numero di istanzeScale out Numero massimo di istanzeMax # instances
Piano a consumoConsumption plan Gestito da eventi.Event driven. Aumento automatico del numero di istanze anche in periodo di carico elevato.Scale out automatically, even during periods of high load. L'infrastruttura di funzioni di Azure consente di ridimensionare le risorse di CPU e memoria aggiungendo altre istanze dell'host di funzioni, in base al numero di eventi trigger in ingresso.Azure Functions infrastructure scales CPU and memory resources by adding additional instances of the Functions host, based on the number of incoming trigger events. 200200
Piano PremiumPremium plan Gestito da eventi.Event driven. Aumento automatico del numero di istanze anche in periodo di carico elevato.Scale out automatically, even during periods of high load. L'infrastruttura di funzioni di Azure consente di ridimensionare le risorse di CPU e memoria aggiungendo altre istanze dell'host di funzioni, in base al numero di eventi su cui vengono attivate le relative funzioni.Azure Functions infrastructure scales CPU and memory resources by adding additional instances of the Functions host, based on the number of events that its functions are triggered on. 100100
Piano1 dedicatoDedicated plan1 Scalabilità manuale/automaticaManual/autoscale 10-2010-20
Ambiente del servizio app 1ASE1 Scalabilità manuale/automaticaManual/autoscale 100100
KubernetesKubernetes Scalabilità automatica guidata dagli eventi per i cluster Kubernetes con Keda.Event-driven autoscale for Kubernetes clusters using KEDA. Varia   a seconda del   cluster  Varies by cluster  

1 per i limiti specifici per le varie opzioni del piano di servizio app, vedere i limiti del piano di servizio app.1 For specific limits for the various App Service plan options, see the App Service plan limits.

Comportamento di avvio a freddoCold start behavior

Piano a consumo  Consumption plan Le app possono essere ridimensionate a zero quando inattive, ovvero alcune richieste potrebbero avere latenza aggiuntiva all'avvio.Apps may scale to zero when idle, meaning some requests may have additional latency at startup. Il piano a consumo ha alcune ottimizzazioni che consentono di ridurre l'ora di avvio a freddo, incluso il pull da funzioni segnaposto pre-riscaldate che hanno già l'host funzione e i processi del linguaggio in esecuzione.The consumption plan does have some optimizations to help decrease cold start time, including pulling from pre-warmed placeholder functions that already have the function host and language processes running.
Piano PremiumPremium plan Per evitare l'avvio a freddo, le istanze sono perennemente calde.Perpetually warm instances to avoid any cold start.
Piano dedicatoDedicated plan Quando è in esecuzione in un piano dedicato, l'host di funzioni può essere eseguito in modo continuo, il che significa che l'avvio a freddo non è realmente un problema.When running in a Dedicated plan, the Functions host can run continuously, which means that cold start isn’t really an issue.
ASEASE Quando è in esecuzione in un piano dedicato, l'host di funzioni può essere eseguito in modo continuo, il che significa che l'avvio a freddo non è realmente un problema.When running in a Dedicated plan, the Functions host can run continuously, which means that cold start isn’t really an issue.
KubernetesKubernetes A seconda della configurazione di KEDA, le app possono essere configurate per evitare l'avvio a freddo.Depending on KEDA configuration, apps can be configured to avoid a cold start. Se è configurato per la scalabilità a zero, viene rilevato un avvio a freddo per i nuovi eventi.If configured to scale to zero, then a cold start is experienced for new events.

Limiti del servizioService limits

RisorsaResource Piano a consumoConsumption plan Piano PremiumPremium plan Piano dedicatoDedicated plan ASEASE KubernetesKubernetes
Durata del timeout predefinita (min)Default timeout duration (min) 55 3030 301301 3030 3030
Durata del timeout massima (min)Max timeout duration (min) 1010 Senza limiti7unbounded7 Senza limiti2unbounded2 unboundedunbounded unboundedunbounded
Numero massimo di connessioni in uscita (per istanza)Max outbound connections (per instance) 600 attive (1200 totali)600 active (1200 total) unboundedunbounded unboundedunbounded unboundedunbounded unboundedunbounded
Dimensioni massime della richiesta (MB)3Max request size (MB)3 100100 100100 100100 100100 Dipende dal clusterDepends on cluster
Lunghezza massima della stringa di query3Max query string length3 40964096 40964096 40964096 40964096 Dipende dal clusterDepends on cluster
Lunghezza massima dell'URL della richiesta3Max request URL length3 81928192 81928192 81928192 81928192 Dipende dal clusterDepends on cluster
Unità di calcolo di Azure per istanzaACU per instance 100100 210-840210-840 100-840100-840 210-2508210-2508 Prezzi del servizio Azure KubernetesAKS pricing
Dimensioni massime della memoria (GB per istanza)Max memory (GB per instance) 1.51.5 3,5-143.5-14 1,75-141.75-14 3,5-143.5 - 14 Qualsiasi nodo è supportatoAny node is supported
App per le funzioni per pianoFunction apps per plan 100100 100100 Senza limiti4unbounded4 unboundedunbounded unboundedunbounded
Piani del servizio appApp Service plans 100 per area100 per region 100 per gruppo di risorse100 per resource group 100 per gruppo di risorse100 per resource group - -
Archiviazione5Storage5 5 TB5 TB 250 GB250 GB 50-1000 GB50-1000 GB 1 TB1 TB n/dn/a
Domini personalizzati per applicazioneCustom domains per app 50065006 500500 500500 500500 n/dn/a
Supporto per il dominio personalizzato SSLCustom domain SSL support Connessione SNI SSL senza limiti inclusaunbounded SNI SSL connection included Connessioni SNI SSL senza limiti e 1 connessione IP SSL incluseunbounded SNI SSL and 1 IP SSL connections included Connessioni SNI SSL senza limiti e 1 connessione IP SSL incluseunbounded SNI SSL and 1 IP SSL connections included Connessioni SNI SSL senza limiti e 1 connessione IP SSL incluseunbounded SNI SSL and 1 IP SSL connections included n/dn/a

1 Per impostazione predefinita, il timeout per il runtime di Funzioni 1.x in un piano di servizio app non prevede limiti.1 By default, the timeout for the Functions 1.x runtime in an App Service plan is unbounded.
2 Richiede l'impostazione del piano di servizio app su Always On.2 Requires the App Service plan be set to Always On. Pagamento con tariffe standard.Pay at standard rates.
3 Questi limiti vengono impostati nell'host.3 These limits are set in the host.
4 Il numero effettivo di app per le funzioni che è possibile ospitare dipende dall'attività delle app, dalle dimensioni delle istanze del computer e dall'uso delle risorse corrispondente.4 The actual number of function apps that you can host depends on the activity of the apps, the size of the machine instances, and the corresponding resource utilization.
5 Il limite di archiviazione corrisponde alle dimensioni totali del contenuto nello spazio di archiviazione temporanea in tutte le app nello stesso piano di servizio app.5 The storage limit is the total content size in temporary storage across all apps in the same App Service plan. Il piano a consumo usa File di Azure per l'archiviazione temporanea.Consumption plan uses Azure Files for temporary storage.
6 Quando l'app per le funzioni è ospitata in un piano a consumo, è supportata solo l'opzione CNAME.6 When your function app is hosted in a Consumption plan, only the CNAME option is supported. Per le app per le funzioni in un piano Premium o in un piano di servizio app, è possibile eseguire il mapping di un dominio personalizzato usando un record CNAME o A.For function apps in a Premium plan or an App Service plan, you can map a custom domain using either a CNAME or an A record.
7 Garantito per un massimo di 60 minuti.7 Guaranteed for up to 60 minutes.
8 I ruoli di lavoro ospitano app di clienti.8 Workers are roles that host customer apps. e sono disponibili in tre dimensioni fisse: Una vCPU/3,5 GB di RAM, due vCPU/7 GB di RAM oppure quattro vCPU/14 GB di RAM.Workers are available in three fixed sizes: One vCPU/3.5 GB RAM; Two vCPU/7 GB RAM; Four vCPU/14 GB RAM.

Funzionalità di reteNetworking features

FunzionalitàFeature Piano a consumoConsumption plan Piano PremiumPremium plan Piano dedicatoDedicated plan ASEASE KubernetesKubernetes
Restrizioni IP in ingresso e accesso al sito privatoInbound IP restrictions and private site access ✅Sì✅Yes ✅Sì✅Yes ✅Sì✅Yes ✅Sì✅Yes ✅Sì✅Yes
Integrazione della rete virtualeVirtual network integration ❌No❌No ✅Sì (Regionale)✅Yes (Regional) ✅Sì (Regional e Gateway)✅Yes (Regional and Gateway) ✅Sì✅Yes ✅Sì✅Yes
Trigger della rete virtuale (non HTTP)Virtual network triggers (non-HTTP) ❌No❌No ✅Sì✅Yes ✅Sì✅Yes ✅Sì✅Yes ✅Sì✅Yes
Connessioni ibride (solo Windows)Hybrid connections (Windows only) ❌No❌No ✅Sì✅Yes ✅Sì✅Yes ✅Sì✅Yes ✅Sì✅Yes
Restrizioni IP in uscitaOutbound IP restrictions ❌No❌No ✅Sì✅Yes ✅Sì✅Yes ✅Sì✅Yes ✅Sì✅Yes

FatturazioneBilling

Piano a consumoConsumption plan Pagare solo per il tempo di esecuzione delle funzioni.Pay only for the time your functions run. La fatturazione si basa sul numero di esecuzioni, il tempo di esecuzione e la memoria usata.Billing is based on number of executions, execution time, and memory used.
Piano PremiumPremium plan Il piano Premium è basato sul numero di secondi e di memoria Core usati nelle istanze necessarie e pre-surriscaldate.Premium plan is based on the number of core seconds and memory used across needed and pre-warmed instances. È necessario che almeno un'istanza per piano rimanga sempre calda.At least one instance per plan must be kept warm at all times. Questo piano offre i prezzi più prevedibili.This plan provides the most predictable pricing.
*Piano dedicato*Dedicated plan Si paga lo stesso per le app per le funzioni in un piano di servizio app come per le altre risorse del servizio app, ad esempio le app Web.You pay the same for function apps in an App Service Plan as you would for other App Service resources, like web apps.
Ambiente del servizio appApp Service Environment (ASE) Esiste una tariffa mensile fissa per un ambiente del servizio app che paga l'infrastruttura e non cambia con le dimensioni dell'ambiente del servizio app.There's a flat monthly rate for an ASE that pays for the infrastructure and doesn't change with the size of the ASE. Esiste anche un costo per ogni piano di servizio app vCPU.There's also a cost per App Service plan vCPU. Tutte le app ospitate in un ambiente del servizio app fanno parte di uno SKU di prezzi isolato.All apps hosted in an ASE are in the Isolated pricing SKU.
KubernetesKubernetes Si pagano solo i costi del cluster Kubernetes. nessuna fatturazione aggiuntiva per le funzioni.You pay only the costs of your Kubernetes cluster; no additional billing for Functions. L'app per le funzioni viene eseguita come carico di lavoro dell'applicazione nella parte superiore del cluster, proprio come per una normale app.Your function app runs as an application workload on top of your cluster, just like a regular app.

Passaggi successiviNext steps