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. |