Hostingopties voor Azure Functions

Wanneer u een functie-app in Azure maakt, moet u een hostingabonnement voor uw app kiezen. Er zijn drie eenvoudige Azure Functions-hostingabonnementen van Azure Functions: Verbruiksabonnement, Premium-abonnement en Toegewezen (App Service)-abonnement. Deze hostingplannen worden gefaciliteerd door Azure-app Service-infrastructuur en zijn algemeen beschikbaar (GA) op virtuele Linux- en Windows-machines.

Het Azure Functions-hostingabonnement dat u kiest, bepaalt het volgende gedrag:

  • Hoe uw functie-app wordt geschaald.
  • De resources die beschikbaar zijn voor elk exemplaar van de functie-app.
  • Ondersteuning voor geavanceerde functionaliteit, zoals Azure Virtual Network-connectiviteit.

Naast Het hosten van Azure Functions kunt u ook in containers geplaatste functie-apps hosten in containers die kunnen worden geïmplementeerd in Kubernetes-clusters of in Azure Container Apps. Als u ervoor kiest om uw functies in een Kubernetes-cluster te hosten, kunt u overwegen een Kubernetes-cluster met Azure Arc te gebruiken. Zie Azure Container Apps-hosting van Azure Functions voor meer informatie over het implementeren van aangepaste container-apps.

Dit artikel bevat een gedetailleerde vergelijking tussen de verschillende hostingplannen, waaronder hostingopties op basis van containers.

Notitie

Het hosten van Azure Functions-containers op kubernetes-clusters met Azure Arc en Azure Container Apps is momenteel in preview.

Overzicht van plannen

Hier volgt een overzicht van de voordelen van de drie belangrijkste Azure Functions-hostingabonnementen:

Plannen Vergoedingen
Verbruiksabonnement Pas de schaal automatisch aan en betaal uitsluitend voor computerresources wanneer uw functies worden uitgevoerd.

Bij een verbruiksabonnement worden exemplaren van de Functions-host dynamisch toegevoegd en verwijderd op basis van het aantal binnenkomende gebeurtenissen.

✔ Standaardhostingabonnement.
✔ Betaal alleen wanneer uw functies worden uitgevoerd.
✔ Schaalt automatisch, zelfs tijdens perioden van hoge belasting.
Premium-abonnement Schaalt automatisch op basis van aanvraag met behulp van vooraf verwarmde werkrollen, die toepassingen zonder vertraging uitvoeren nadat ze niet actief zijn, worden uitgevoerd op krachtigere exemplaren en verbinding maken met virtuele netwerken.

Houd rekening met het Azure Functions Premium-abonnement in de volgende situaties:

✔ Uw functie-apps worden continu of bijna continu uitgevoerd.
✔ U hebt een groot aantal kleine uitvoeringen en een hoge uitvoeringsfactuur, maar lage GB seconden in het verbruiksabonnement.
✔ U hebt meer CPU- of geheugenopties nodig dan wordt geleverd door het verbruiksabonnement.
✔ Uw code moet langer worden uitgevoerd dan de maximale uitvoeringstijd die is toegestaan voor het verbruiksabonnement.
✔ U hebt functies nodig die niet beschikbaar zijn in het verbruiksabonnement, zoals connectiviteit met virtuele netwerken.
✔ U wilt een aangepaste Linux-installatiekopieën opgeven waarop u uw functies kunt uitvoeren.
Toegewezen abonnement Voer uw functies uit binnen een App Service-plan tegen normale tarieven voor Een App Service-plan.

Het meest geschikt voor langdurige scenario's waarbij Durable Functions niet kan worden gebruikt. Overweeg een App Service-plan in de volgende situaties:

✔ U hebt bestaande, onderbenutte VM's die al andere App Service-exemplaren uitvoeren.
✔ Voorspellende schaalaanpassing en kosten zijn vereist.

De vergelijkingstabellen in dit artikel bevatten ook de volgende hostingopties, die de hoogste hoeveelheid controle en isolatie bieden voor het uitvoeren van uw functie-apps.

Hostingoptie DETAILS
ASE App Service Environment (ASE) is een App Service-functie die een volledig geïsoleerde en toegewezen omgeving biedt voor het veilig uitvoeren van App Service-apps op grote schaal.

AS-omgevingen zijn geschikt voor toepassingsworkloads waarvoor het volgende is vereist:

✔ Zeer grootschalig.
✔ Volledige rekenisolatie en beveiligde netwerktoegang.
✔ Hoog geheugengebruik.
Azure Container Apps Azure Container Apps is een volledig beheerde omgeving waarmee u microservices en toepassingen in containers kunt uitvoeren op een serverloos platform. Met Azure Container Apps kunt u uw functies uitvoeren met de kracht van de onderliggende Azure Kubernetes Service (AKS) terwijl u de complexiteit van het werken met Kubernetes-API's verwijdert.
Kubernetes
(Direct of
Azure Arc)
Kubernetes biedt een volledig geïsoleerde en toegewezen omgeving die wordt uitgevoerd op het Kubernetes-platform.

Kubernetes is geschikt voor toepassingsworkloads waarvoor het volgende is vereist:
✔ Aangepaste hardwarevereisten.
✔ Isolatie en beveiligde netwerktoegang.
✔ Mogelijkheid om te worden uitgevoerd in een hybride of multicloudomgeving.
✔ Uitvoeren naast bestaande Kubernetes-toepassingen en -services.

In de resterende tabellen in dit artikel worden de plannen voor verschillende functies en gedragingen vergeleken. Zie de pagina met prijzen van Azure Functions voor een kostenvergelijking tussen dynamische hostingabonnementen (Verbruik en Premium). Voor prijzen van de verschillende opties voor een Dedicated-abonnement raadpleegt u de pagina met prijzen van App Service.

Besturingssysteem/runtime

In de volgende tabel ziet u besturingssysteem- en taalondersteuning voor de hostingabonnementen.

Linux1,2
alleen-code
Alleen Windows-code Linux1,2,3
Docker-container
Verbruiksabonnement C#
JavaScript
Java
Python
PowerShell Core
TypeScript
C#
JavaScript
Java
PowerShell Core
TypeScript
Geen ondersteuning
Premium-abonnement C#
JavaScript
Java
Python
PowerShell Core
TypeScript
C#
JavaScript
Java
PowerShell Core
TypeScript
C#
JavaScript
Java
PowerShell Core
Python
TypeScript
Toegewezen abonnement C#
JavaScript
Java
Python
TypeScript
C#
JavaScript
Java
PowerShell Core
TypeScript
C#
JavaScript
Java
PowerShell Core
Python
TypeScript
ASE C#
JavaScript
Java
Python
TypeScript
C#
JavaScript
Java
PowerShell Core
TypeScript
C#
JavaScript
Java
PowerShell Core
Python
TypeScript
Kubernetes (direct) N.v.t. N.v.t. C#
JavaScript
Java
PowerShell Core
Python
TypeScript
Azure Arc (preview) C#
JavaScript
Java
Python
TypeScript
N.v.t. C#
JavaScript
Java
PowerShell Core
Python
TypeScript

1 Linux is het enige ondersteunde besturingssysteem voor de Python-runtimestack.
2 PowerShell-ondersteuning op Linux is momenteel in preview.
3 Linux is het enige ondersteunde besturingssysteem voor Docker-containers.

Time-outduur voor Function-app

De time-outduur voor functies in een functie-app wordt gedefinieerd door de functionTimeout eigenschap in het projectbestand host.json . Deze eigenschap is specifiek van toepassing op functie-uitvoeringen. Nadat de trigger de uitvoering van de functie start, moet de functie binnen de time-outduur retourneren/reageren. Zie Prestaties en betrouwbaarheid van Azure Functions verbeteren voor meer informatie.

In de volgende tabel ziet u de standaard- en maximumwaarden (in minuten) voor specifieke plannen:

Plannen Standaard Maximum1
Verbruiksabonnement 5 10
Premium-abonnement 302 Onbeperkt3
Toegewezen abonnement 302 Onbeperkt3

1 Ongeacht de time-outinstelling van de functie-app, is 230 seconden de maximale hoeveelheid tijd die een door HTTP geactiveerde functie kan duren om te reageren op een aanvraag. Dit komt door de standaard time-out voor inactiviteit van Azure Load Balancer. Overweeg voor langere verwerkingstijden het asynchrone Durable Functions-patroon te gebruiken of stel het werk uit en stuur onmiddellijk een antwoord terug.
2 De standaardtime-out voor versie 1.x van de Functions-runtime is onbeperkt.
3 Gegarandeerd tot 60 minuten. Patches voor het besturingssysteem en runtime, patches voor beveiligingsproblemen en het inschalen van gedrag kunnen nog steeds functie-uitvoeringen annuleren, zodat u robuuste functies kunt schrijven.

Schaal wijzigen

De volgende tabel vergelijkt het schaalgedrag van de verschillende hostingabonnementen.
Maximumaantal exemplaren worden gegeven per functie-app (Verbruik) of per abonnement (Premium/Dedicated), tenzij anders aangegeven.

Plannen Uitschalen Maximaal aantal exemplaren
Verbruiksabonnement Gebeurtenisgestuurd. Automatisch uitschalen, zelfs tijdens perioden met hoge belasting. De Infrastructuur van Azure Functions schaalt CPU- en geheugenbronnen door extra exemplaren van de Functions-host toe te voegen, op basis van het aantal binnenkomende trigger-gebeurtenissen. Windows: 200
Linux: 1001
Premium-abonnement Gebeurtenisgestuurd. Automatisch uitschalen, zelfs tijdens perioden met hoge belasting. Azure Functions-infrastructuur schaalt CPU- en geheugenbronnen door extra exemplaren van de Functions-host toe te voegen, op basis van het aantal gebeurtenissen waarop de functies worden geactiveerd. Windows: 100
Linux: 20-1002
Toegewezen abonnement3 Handmatige/automatische schaalaanpassing 10-30
ASE3 Handmatige/automatische schaalaanpassing 100
Kubernetes Gebeurtenisgestuurde automatische schaalaanpassing voor Kubernetes-clusters met keda. Verschilt per cluster

1 Tijdens uitschalen geldt momenteel een limiet van 500 exemplaren per abonnement per uur voor Linux-apps in een verbruiksabonnement.
2 In sommige regio's kunnen Linux-apps in een Premium-abonnement worden geschaald naar 100 exemplaren. Zie het artikel over het Premium-abonnement voor meer informatie.
3 Zie de limieten van het App Service-plan voor specifieke limieten voor de verschillende App Service-planopties.

Gedrag van koude start

Plannen DETAILS
Verbruiksabonnement Apps kunnen worden geschaald naar nul wanneer ze niet actief zijn, wat betekent dat sommige aanvragen mogelijk extra latentie hebben bij het opstarten. Het verbruiksplan heeft enkele optimalisaties om de koude begintijd te verminderen, waaronder het ophalen van vooraf verwarmde tijdelijke aanduidingen voor functies waarop de functiehost en taalprocessen al worden uitgevoerd.
Premium-abonnement Continu warme exemplaren om koude start te voorkomen.
Toegewezen abonnement Wanneer de Functions-host wordt uitgevoerd in een Dedicated-abonnement, kan deze continu worden uitgevoerd, wat betekent dat koude start niet echt een probleem is.
ASE Wanneer de Functions-host wordt uitgevoerd in een Dedicated-abonnement, kan deze continu worden uitgevoerd, wat betekent dat koude start niet echt een probleem is.
Kubernetes Afhankelijk van de KEDA-configuratie kunnen apps worden geconfigureerd om een koude start te voorkomen. Als deze is geconfigureerd om te schalen naar nul, wordt er een koude start ervaren voor nieuwe gebeurtenissen.

Servicelimieten

Bron Verbruiksabonnement Premium-abonnement Toegewezen abonnement ASE Kubernetes
Standaard time-outduur (min.) 5 30 301 30 30
Maximale time-outduur (min.) 10 niet-gebonden7 niet-gebonden2 niet-gebonden niet-gebonden
Maximumaantal uitgaande verbindingen (per exemplaar) 600 actief (1.200 totaal) niet-gebonden niet-gebonden niet-gebonden niet-gebonden
Maximale aanvraaggrootte (MB)3 100 100 100 100 Afhankelijk van cluster
Maximale tekenreekslengte voor query's3 4096 4096 4096 4096 Afhankelijk van cluster
Maximale lengte voor aanvraag-URL's3 8192 8192 8192 8192 Afhankelijk van cluster
ACU per exemplaar 100 210-840 100-840 210-2508 AKS-prijzen
Maximaal geheugen (GB per exemplaar) 1.5 3,5-14 1,75-14 3,5 - 14 Elk knooppunt wordt ondersteund
Maximumaantal exemplaren (Windows/Linux) 200/100 100/20 verschilt per SKU9 1009 Afhankelijk van cluster
Functie-apps per abonnement11 100 100 niet-gebonden4 niet-gebonden niet-gebonden
App Service-abonnementen 100 per regio 100 per resourcegroep 100 per resourcegroep - -
Implementatiesites per app10 2 3 1-209 20 N.v.t.
Opslag5 5 GB 250 GB 50-1000 GB 1 TB N.v.t.
Aangepaste domeinen per app 5006 500 500 500 N.v.t.
Aangepast domein voor SSL-ondersteuning niet-gebonden SNI SSL-verbinding inbegrepen niet-gebonden SNI SSL- en 1 IP SSL-verbindingen inbegrepen niet-gebonden SNI SSL- en 1 IP SSL-verbindingen inbegrepen niet-gebonden SNI SSL- en 1 IP SSL-verbindingen inbegrepen N.v.t.

1 De time-out voor de Functions 1.x-runtime in een App Service-abonnement is standaard niet-gebonden.
2 Het App Service-abonnement moet zijn ingesteld op Altijd aan. Tegen standaardtarieven.
3 Deze limieten worden ingesteld in de host.
4 Het werkelijke aantal functie-apps dat u kunt hosten, is afhankelijk van de activiteit van de apps, de grootte van het machine-exemplaar en het bijbehorende resourcegebruik.
5 De opslaglimiet is de totale inhoudsgrootte in tijdelijke opslag voor alle apps in hetzelfde App Service-abonnement. Verbruiksabonnement maakt gebruik van Azure Files voor tijdelijke opslag.
6 Wanneer uw functie-app in een verbruiksabonnement wordt gehost, wordt alleen de optie CNAME ondersteund. Voor functie-apps in een Premium-abonnement of een App Service-abonnement kunt u een aangepast domein toewijzen met een CNAME- of A-record.
7 Gegarandeerd voor maximaal 60 minuten.
8 Werkrollen zijn rollen die klanten-apps hosten. Werkrollen zijn beschikbaar in drie vaste grootten: één vCPU/3,5 GB RAM; Twee vCPU/7 GB RAM; Vier vCPU/14 GB RAM.
9 Zie App Service-limieten voor meer informatie.
10 Inclusief de productiesite.
11 Er is momenteel een limiet van 5000 functie-apps in een bepaald abonnement.

Beperkingen voor het maken van nieuwe functie-apps in een bestaande resourcegroep

In sommige gevallen ontvangt u een van de volgende fouten bij het maken van een nieuw hostingabonnement voor uw functie-app in een bestaande resourcegroep:

  • De prijscategorie is niet toegestaan in deze resourcegroep
  • <> SKU_name werknemers zijn niet beschikbaar in de resourcegroep <resource_group_name>

Dit kan gebeuren wanneer aan de volgende voorwaarden wordt voldaan:

  • U maakt een functie-app in een bestaande resourcegroep die ooit een andere functie-app of web-app bevat. Linux Consumption-apps worden bijvoorbeeld niet ondersteund in dezelfde resourcegroep als Linux Dedicated- of Linux Premium-abonnementen.
  • Uw nieuwe functie-app wordt gemaakt in dezelfde regio als de vorige app.
  • De vorige app is op een of andere manier niet compatibel met uw nieuwe app. Dit kan gebeuren tussen SKU's, besturingssystemen of vanwege andere platformfuncties, zoals ondersteuning voor beschikbaarheidszones.

De reden hiervoor is dat functie-app- en web-app-plannen worden toegewezen aan verschillende groepen resources wanneer ze worden gemaakt. Voor verschillende SKU's is een andere set infrastructuurmogelijkheden vereist. Wanneer u een app in een resourcegroep maakt, wordt die resourcegroep toegewezen en toegewezen aan een specifieke groep resources. Als u een ander plan in die resourcegroep probeert te maken en de toegewezen pool niet over de vereiste resources beschikt, treedt deze fout op.

Wanneer deze fout optreedt, maakt u in plaats daarvan uw functie-app en hostingabonnement in een nieuwe resourcegroep.

Netwerkfuncties

Functie Verbruiksabonnement Premium-abonnement Toegewezen abonnement ASE
Binnenkomende IP-beperkingen ✅Ja ✅Ja ✅Ja ✅Ja
Binnenkomende privé-eindpunten ❌No ✅Ja ✅Ja ✅Ja
Integratie van virtueel netwerk ❌No ✅Ja (regionaal) ✅Ja (regionaal en gateway) ✅Ja
Triggers voor virtuele netwerken (niet-HTTP) ❌No ✅Ja ✅Ja ✅Ja
Hybride verbindingen (alleen Windows) ❌No ✅Ja ✅Ja ✅Ja
Uitgaande IP-beperkingen ❌No ✅Ja ✅Ja ✅Ja

Billing

Plannen DETAILS
Verbruiksabonnement Betaal alleen voor de tijd dat uw functies worden uitgevoerd. De facturering is dan ook gebaseerd op het aantal uitvoeringen, de uitvoeringstijd en het gebruikte geheugen.
Premium-abonnement Premium-abonnement is gebaseerd op het aantal kern seconden en geheugen dat wordt gebruikt voor de benodigde en vooraf verwarmde exemplaren. Ten minste één exemplaar per abonnement moet altijd warm worden gehouden. Dit abonnement biedt de meest voorspelbare prijzen.
Toegewezen abonnement U betaalt hetzelfde voor functie-apps in een App Service-plan als voor andere App Service-resources, zoals web-apps.
App Service Environment (ASE) Er is een vast maandelijks tarief voor een ASE die betaalt voor de infrastructuur en niet verandert met de grootte van de ASE. Er zijn ook kosten per App Service-plan vCPU. Alle apps die worden gehost in een AS-omgeving, vallen onder de Geïsoleerde prijs-SKU.
Kubernetes U betaalt alleen de kosten van uw Kubernetes-cluster; geen extra facturering voor Functions. Uw functie-app wordt uitgevoerd als een toepassingsworkload boven op uw cluster, net als een gewone app.

Volgende stappen