Azure Functions värdalternativ
När du skapar en funktionsapp i Azure måste du välja en värdplan för din app. Det finns tre grundläggande värdplaner för Azure Functions: förbrukningsplan, Premium-planoch dedikerad plan (App Service). Alla värdplaner är allmänt tillgängliga (GA) på både Linux och Windows virtuella datorer.
Värdplanen som du väljer styr följande beteenden:
- Hur funktionsappen skalas.
- De resurser som är tillgängliga för varje funktionsappinstans.
- Stöd för avancerade funktioner, till exempel Azure Virtual Network anslutning.
Den här artikeln innehåller en detaljerad jämförelse mellan de olika värdplanerna, tillsammans med Kubernetes-baserade värdtjänster.
Anteckning
Om du väljer att vara värd för dina funktioner i ett Kubernetes-kluster kan du använda Azure Arc kubernetes-kluster. Värdtjänster i Azure Arc kubernetes-kluster finns för närvarande som förhandsversion. Mer information finns i App Service, Functions och Logic Apps på Azure Arc.
Översikt över planer
Följande är en sammanfattning av fördelarna med de tre huvudsakliga värdplanerna för Functions:
| Planera | Fördelar |
|---|---|
| Förbrukningsplan | Skala automatiskt och betala bara för beräkningsresurser när dina funktioner körs. I förbrukningsplanen läggs instanser av Functions-värden till och tas bort dynamiskt baserat på antalet inkommande händelser. ✔ standardvärdplan. ✔ betala endast när dina funktioner körs. ✔ skalas automatiskt, även under perioder med hög belastning. |
| Premiumplan | Skalas automatiskt baserat på efterfrågan med hjälp av förhettade arbetare som kör program utan fördröjning efter inaktivitet, körs på mer kraftfulla instanser och ansluter till virtuella nätverk. Överväg Azure Functions Premium plan i följande situationer: ✔ Dina funktionsappar körs kontinuerligt eller nästan kontinuerligt. ✔ Du har ett stort antal små körningar och en hög körningsfaktura, men låga GB sekunder i förbrukningsplanen. ✔ Du behöver fler processor- eller minnesalternativ än vad som anges i förbrukningsplanen. ✔ Koden måste köras längre än den maximala körningstiden som tillåts i förbrukningsplanen. ✔ Du behöver funktioner som inte är tillgängliga i förbrukningsplanen, till exempel virtuell nätverksanslutning. ✔ Du vill tillhandahålla en anpassad Linux-avbildning där du kan köra dina funktioner. |
| Dedikerad plan | Kör dina funktioner inom en App Service plan till App Service plan priser. Bäst för långvariga scenarier där Durable Functions inte kan användas. Överväg en App Service plan i följande situationer: ✔ Du har befintliga underutnyttjade virtuella datorer som redan kör andra App Service instanser. ✔ förutsägande skalning och kostnader krävs. |
Jämförelsetabellerna i den här artikeln innehåller också följande värdalternativ, som ger den högsta mängden kontroll och isolering där du kan köra dina funktionsappar.
| Värdalternativ | Information |
|---|---|
| ASE | App Service-miljön (ASE) är en App Service funktion som ger en helt isolerad och dedikerad miljö för säker körning av App Service-appar i hög skala. ASE:er är lämpliga för programarbetsbelastningar som kräver: ✔ Mycket hög skala. ✔ fullständig beräkningsisolering och säker nätverksåtkomst. ✔ hög minnesanvändning. |
| Kubernetes (Direkt eller Azure Arc) |
Kubernetes tillhandahåller en helt isolerad och dedikerad miljö som körs ovanpå Kubernetes-plattformen. Kubernetes är lämpligt för programarbetsbelastningar som kräver: ✔ anpassade maskinvarukrav. ✔ isolering och säker nätverksåtkomst. ✔ möjlighet att köra i hybridmiljöer eller miljöer med flera moln. ✔ körs tillsammans med befintliga Kubernetes-program och -tjänster. |
I de återstående tabellerna i den här artikeln jämförs planerna för olika funktioner och beteenden. En kostnadsjämförelse mellan dynamiska värdplaner (förbrukning och Premium) finns Azure Functions sidan med prisinformation. Priser för de olika alternativen för dedikerade abonnemang finns på App Service prissättningssidan.
Operativsystem/körning
I följande tabell visas operativsystem- och språkstöd för värdplaner.
| Linux1 Endast kod |
Windows2 Endast kod |
Linux1,3 Docker-container |
|
|---|---|---|---|
| Förbrukningsplan | .NET Core 3.1 .NET 5.0 JavaScript Java Python TypeScript |
.NET Core 3.1 .NET 5.0 JavaScript Java PowerShell Core TypeScript |
Inget stöd |
| Premiumplan | .NET Core 3.1 .NET 5.0 JavaScript Java Python TypeScript |
.NET Core .NET 5.0 JavaScript Java PowerShell Core TypeScript |
.NET Core Node.js Java PowerShell Core Python TypeScript |
| Dedikerad plan | .NET Core 3.1 .NET 5.0 JavaScript Java Python TypeScript |
.NET Core 3.1 .NET 5.0 JavaScript Java PowerShell Core TypeScript |
.NET Core 3.1 .NET 5.0 JavaScript Java PowerShell Core Python TypeScript |
| ASE | .NET Core 3.1 .NET 5.0 JavaScript Java Python TypeScript |
.NET Core 3.1 .NET 5.0 JavaScript Java PowerShell Core TypeScript |
.NET Core 3.1 .NET 5.0 JavaScript Java PowerShell Core Python TypeScript |
| Kubernetes (direkt) | saknas | saknas | .NET Core 3.1 .NET 5.0 JavaScript Java PowerShell Core Python TypeScript |
| Azure Arc (förhandsversion) | .NET Core 3.1 .NET 5.0 JavaScript Java Python TypeScript |
saknas | .NET Core 3.1 .NET 5.0 JavaScript Java PowerShell Core Python TypeScript |
1 Linux är det enda operativsystem som stöds för Python-körningsstacken.
2 Windows är det enda operativsystem som stöds för PowerShell-körningsstacken.
3 Linux är det enda operativsystem som stöds för Docker-containrar.
Timeout-varaktighet för funktionsapp
Timeout-varaktigheten för en funktionsapp definieras av functionTimeout egenskapen i projektfilen host.json. I följande tabell visas standardvärdena och de högsta värdena i minuter för både planer och de olika körningsversionerna:
| Planera | Körningsversion | Standardvärde | Maximal |
|---|---|---|---|
| Förbrukning | 1.x | 5 | 10 |
| Förbrukning | 2.x | 5 | 10 |
| Förbrukning | 3.x | 5 | 10 |
| Premium | 1.x | Obegränsat | Obegränsat |
| Premium | 2.x | 30 | Obegränsat |
| Premium | 3.x | 30 | Obegränsat |
| App Service | 1.x | Obegränsat | Obegränsat |
| App Service | 2.x | 30 | Obegränsat |
| App Service | 3.x | 30 | Obegränsat |
Anteckning
Oavsett funktionsappens timeout-inställning är 230 sekunder den maximala tid som en HTTP-utlöst funktion kan ta att svara på en begäran. Detta beror på standardvärdet för tidsgränsen för inaktivitet Azure Load Balancer. För längre bearbetningstider bör du överväga att använda Durable Functions asynkront mönster eller skjuta upp det faktiska arbetet och returnera ett omedelbart svar.
Skala
I följande tabell jämförs skalningsbeteendena för de olika värdplanerna.
| Planera | Skala ut | Maximalt antal instanser |
|---|---|---|
| Förbrukningsplan | Händelsedriven. Skala ut automatiskt, även under perioder med hög belastning. Azure Functions skalar cpu- och minnesresurser genom att lägga till ytterligare instanser av Functions-värden, baserat på antalet inkommande utlösarhändelser. | 200 |
| Premiumplan | Händelsedriven. Skala ut automatiskt, även under perioder med hög belastning. Azure Functions infrastruktur skalar CPU- och minnesresurser genom att lägga till ytterligare instanser av Functions-värden, baserat på antalet händelser som dess funktioner utlöses på. | 100 |
| Dedikerad plan1 | Manuell/autoskalning | 10-20 |
| ASE1 | Manuell/autoskalning | 100 |
| Kubernetes | Händelsedriven autoskalning för Kubernetes-kluster med KEDA. | Varierar beroende på kluster |
1 Specifika begränsningar för de olika App Service plan finns i App Service plan gränser.
Kallstartsbeteende
| Planera | Information |
|---|---|
| Förbrukningsplan | Appar kan skalas till noll när de är inaktiva, vilket innebär att vissa begäranden kan ha ytterligare svarstid vid start. Förbrukningsplanen har vissa optimeringar för att minska kallstarttiden, inklusive att hämta från förhettade platshållarfunktioner som redan har funktionsvärden och språkprocesserna igång. |
| Premiumplan | Kontinuerligt varma instanser för att undvika kallstart. |
| Dedikerad plan | När du kör i en dedikerad plan kan Functions-värden köras kontinuerligt, vilket innebär att kallstart inte är något problem. |
| ASE | När du kör i en dedikerad plan kan Functions-värden köras kontinuerligt, vilket innebär att kallstart inte är något problem. |
| Kubernetes | Beroende på KEDA-konfiguration kan appar konfigureras för att undvika kallstart. Om den är konfigurerad för att skala till noll, kommer en kallstart att upplevas för nya händelser. |
Tjänstbegränsningar
| Resurs | Förbrukningsplan | Premiumplan | Dedikerad plan | ASE | Kubernetes |
|---|---|---|---|---|---|
| Standard varaktighet för timeout (min) | 5 | 30 | 301 | 30 | 30 |
| Längsta timeout-varaktighet (min) | 10 | obegränsat7 | obegränsat2 | unbounded | unbounded |
| Max. utgående anslutningar (per instans) | 600 aktiv (1200 totalt) | unbounded | unbounded | unbounded | unbounded |
| Maximal begär ande storlek (MB)3 | 100 | 100 | 100 | 100 | Är beroende av kluster |
| Max. frågesträngs längd3 | 4096 | 4096 | 4096 | 4096 | Är beroende av kluster |
| Max. URL-längd för begäran3 | 8192 | 8192 | 8192 | 8192 | Är beroende av kluster |
| ACU per instans | 100 | 210-840 | 100-840 | 210-2508 | AKS-priser |
| Maximalt minne (GB per instans) | 1.5 | 3.5-14 | 1,75-14 | 3,5 – 14 | Alla noder stöds |
| Maximalt antal instanser | 200 | 1009 | varierar beroende på SKU10 | 10010 | Är beroende av kluster |
| Function-appar per plan | 100 | 100 | obegränsat4 | unbounded | unbounded |
| App Service-planer | 100 per region | 100 per resurs grupp | 100 per resurs grupp | - | - |
| Lagring5 | 5 TB | 250 GB | 50-1000 GB | 1 TB | saknas |
| Anpassade domäner per app | 5006 | 500 | 500 | 500 | saknas |
| Stöd för anpassad domän- SSL | en obunden SNI SSL anslutning ingår | obegränsade SNI SSL och 1 IP SSL anslutningar ingår | obegränsade SNI SSL och 1 IP SSL anslutningar ingår | obegränsade SNI SSL och 1 IP SSL anslutningar ingår | saknas |
1 som standard är tids gränsen för funktioner 1. x-körningsmiljön i en app service plan obegränsad.
2 kräver att App Service plan anges till Always on. Betala enligt standardpriser.
3 de här gränserna anges på värden.
4 det faktiska antalet funktions program som du kan vara värd för beror på aktivitetens appar, storleken på dator instanserna och motsvarande resursutnyttjande.
5 lagrings gränsen är den totala innehålls storleken i tillfällig lagring över alla appar i samma app service plan. Förbruknings planen använder Azure Files för tillfällig lagring.
6 när din Function-app finns i en förbruknings planstöds endast alternativet CNAME. För Function-appar i en Premium-plan eller en App Service plankan du mappa en anpassad domän med antingen en CNAME-eller en a-post.
7 garanterat i upp till 60 minuter.
8 arbetare är roller som är värdar för kund program. Arbetare är tillgängliga i tre fasta storlekar: en vCPU/3,5 GB RAM; Två vCPU/7 GB RAM-minne; Fyra vCPU/14 GB RAM-minne.
9 när du kör på Linux i en Premium-plan är du för närvarande begränsad till 20 instanser.
10 se App Service gränser för mer information.
Nätverksfunktioner
| Funktion | Förbrukningsplan | Premiumplan | Dedikerad plan | ASE | Kubernetes |
|---|---|---|---|---|---|
| Inkommande IP-begränsningar och åtkomst till privata platser | ✅Ja | ✅Ja | ✅Ja | ✅Ja | ✅Ja |
| Integrering av virtuella nätverk | ❌Nej | ✅Ja (regional) | ✅Ja (regional och gateway) | ✅Ja | ✅Ja |
| Virtuella nätverks utlösare (icke-HTTP) | ❌Nej | ✅Ja | ✅Ja | ✅Ja | ✅Ja |
| Hybrid anslutningar (endast Windows) | ❌Nej | ✅Ja | ✅Ja | ✅Ja | ✅Ja |
| Utgående IP-begränsningar | ❌Nej | ✅Ja | ✅Ja | ✅Ja | ✅Ja |
Fakturering
| Planera | Information |
|---|---|
| Förbrukningsplan | Betala endast för den tid som dina funktioner körs. Fakturering baseras på antalet körningar, körningstid och använt minne. |
| Premiumplan | Premium plan baseras på antalet kärnsekunder och minne som används över nödvändiga och förinstallerade instanser. Minst en instans per plan måste hållas varm hela tiden. Den här planen ger den mest förutsägbara prissättningen. |
| Dedikerad plan | Du betalar samma för funktionsappar i en App Service plan som för andra App Service,t.ex. webbappar. |
| App Service-miljön (ASE) | Det finns ett fast månatligt pris för en ASE som betalar för infrastrukturen och som inte ändras med ase-storleken. Det finns också en kostnad per App Service plan vCPU. Alla appar som har en ASE som värd finns i SKU med isolerad prissättning. |
| Kubernetes | Du betalar bara kostnaderna för ditt Kubernetes-kluster. ingen ytterligare fakturering för Functions. Funktionsappen körs som en programarbetsbelastning ovanpå klustret, precis som en vanlig app. |