Värdalternativ för Azure Functions

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 Azure Functions-värdplaner som tillhandahålls av Azure Functions: Förbrukningsplan, Premium-plan och Dedikerad (App Service). Dessa värdplaner underlättas av Azure App Service-infrastrukturen och är allmänt tillgängliga på både virtuella Linux- och Windows-datorer.

Den Azure Functions-värdplan som du väljer avgör 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.

Förutom Azure Functions-värdtjänster kan du även vara värd för containerbaserade funktionsappar i containrar som kan distribueras till Kubernetes-kluster eller till Azure Container Apps. Om du väljer att vara värd för dina funktioner i ett Kubernetes-kluster bör du överväga att använda ett Azure Arc-aktiverat Kubernetes-kluster. Mer information om hur du distribuerar anpassade containerappar finns i Azure Container Apps som är värd för Azure Functions.

Den här artikeln innehåller en detaljerad jämförelse mellan de olika värdplanerna, inklusive containerbaserade värdalternativ.

Kommentar

Värdtjänster för Azure Functions-containrar i både Azure Arc-aktiverade Kubernetes-kluster och Azure Container Apps är för närvarande i förhandsversion.

Översikt över planer

Följande är en sammanfattning av fördelarna med de tre huvudvärdplanerna för Azure Functions:

Planera Förmåner
Förbrukningsplan Skala automatiskt och betala bara för beräkningsresurser när dina funktioner körs.

I en förbrukningsplan 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.
Premium-plan Skalar automatiskt baserat på efterfrågan med hjälp av förvärmda arbetare, som kör program utan fördröjning efter inaktivitet, körs på kraftfullare instanser och ansluter till virtuella nätverk.

Överväg Azure Functions Premium-planen 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 tillhandahålls av 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 anslutning till virtuella nätverk.
✔ Du vill ange en anpassad Linux-avbildning där du kan köra dina funktioner.
Dedikerad plan Kör dina funktioner i en App Service-plan till vanliga App Service-planpriser.

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, underutnytttagna 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 Details
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.
Azure Container Apps Azure Container Apps är en fullständigt hanterad miljö som gör att du kan köra mikrotjänster och containerbaserade program på en serverlös plattform. Med Azure Container Apps kan du köra dina funktioner med kraften i den underliggande Azure Kubernetes Service (AKS) samtidigt som du tar bort komplexiteten i att behöva arbeta med Kubernetes-API:er.
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 hybrid- eller molnmiljö.
✔ Kör tillsammans med befintliga Kubernetes-program och -tjänster.

De återstående tabellerna i den här artikeln jämför planerna för olika funktioner och beteenden. En kostnadsjämförelse mellan dynamiska värdplaner (Förbrukning och Premium) finns på prissättningssidan för Azure Functions. Priser för de olika alternativen för dedikerade abonnemang finns på prissidan för App Service.

Operativsystem/körning

I följande tabell visas stöd för operativsystem och språk för värdplaner.

Linux1,2
endast kod
Endast Windows-kod Linux1,2,3
Docker-container
Förbrukningsplan C#
JavaScript
Java
Python
PowerShell Core
TypeScript
C#
JavaScript
Java
PowerShell Core
TypeScript
Inget stöd
Premium-plan C#
JavaScript
Java
Python
PowerShell Core
TypeScript
C#
JavaScript
Java
PowerShell Core
TypeScript
C#
JavaScript
Java
PowerShell Core
Python
TypeScript
Dedikerad plan 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 (direkt) saknas saknas C#
JavaScript
Java
PowerShell Core
Python
TypeScript
Azure Arc (förhandsversion) C#
JavaScript
Java
Python
TypeScript
saknas C#
JavaScript
Java
PowerShell Core
Python
TypeScript

1 Linux är det enda operativsystem som stöds för Python-körningsstacken.
2 PowerShell-stöd för Linux är för närvarande i förhandsversion.
3 Linux är det enda operativsystem som stöds för Docker-containrar.

Varaktighet för tidsgräns för funktionsapp

Tidsgränsen för funktioner i en funktionsapp definieras av functionTimeout egenskapen i projektfilen host.json . Den här egenskapen gäller specifikt för funktionskörningar. När utlösaren startar funktionskörningen måste funktionen returnera/svara inom tidsgränsen. Mer information finns i Förbättra Prestanda och tillförlitlighet för Azure Functions.

I följande tabell visas standardvärdena och maxvärdena (i minuter) för specifika planer:

Planera Standardvärde Maximalt1
Förbrukningsplan 5 10
Premium-plan 302 Obegränsad3
Dedikerad plan 302 Obegränsad3

1 Oavsett tidsgränsinställningen för funktionsappen är 230 sekunder den maximala tid som en HTTP-utlöst funktion kan ta för att svara på en begäran. Detta beror på den inaktiva tidsgränsen som är standard för Azure Load Balancer. För längre bearbetningstider bör du överväga att använda mönstret Durable Functions-asynkronisering eller skjuta upp det faktiska arbetet och returnera ett omedelbart svar.
2 Standardtimeouten för version 1.x av Functions-körningen är obegränsad.
3 Garanterat i upp till 60 minuter. Os- och körningskorrigeringar, sårbarhetskorrigeringar och skalning i beteenden kan fortfarande avbryta funktionskörningar så att du kan skriva robusta funktioner.

Skala

I följande tabell jämförs skalningsbeteendena för de olika värdplanerna.
Maximalt antal instanser ges per funktionsapp (Förbrukning) eller per plan (Premium/Dedikerad) om inget annat anges.

Planera Skala ut Maximalt antal instanser
Förbrukningsplan Händelsedriven. Skala ut automatiskt, även under perioder med hög belastning. Azure Functions-infrastrukturen skalar cpu- och minnesresurser genom att lägga till ytterligare instanser av Functions-värden baserat på antalet inkommande utlösarhändelser. Windows: 200
Linux: 1001
Premium-plan Händelsedriven. Skala ut automatiskt, även under perioder med hög belastning. Azure Functions-infrastrukturen 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å. Windows: 100
Linux: 20-1002
Dedikerad plan3 Manuell/autoskalning 10-30
ASE3 Manuell/autoskalning 100
Kubernetes Händelsedriven autoskalning för Kubernetes-kluster med hjälp av KEDA. Varierar beroende på kluster

1 Under utskalning finns det för närvarande en gräns på 500 instanser per prenumeration per timme för Linux-appar i en förbrukningsplan.
2 I vissa regioner kan Linux-appar på en Premium-plan skalas till 100 instanser. Mer information finns i artikeln premiumplan.
3 För specifika gränser för de olika App Service-planalternativen , se gränserna för App Service-planen.

Beteende för kallstart

Planera Details
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 kallstartstiden, inklusive att hämta från förvärmda platshållarfunktioner som redan har funktionsvärden och språkprocesserna igång.
Premium-plan Ständigt varma instanser för att undvika kallstart.
Dedikerad plan När du kör 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 en dedikerad plan kan Functions-värden köras kontinuerligt, vilket innebär att kallstart inte är något problem.
Kubernetes Beroende på KEDA-konfigurationen kan appar konfigureras för att undvika en kallstart. Om det är konfigurerat för att skala till noll uppstår en kallstart för nya händelser.

Tjänstbegränsningar

Resurs Förbrukningsplan Premium-plan Dedikerad plan ASE Kubernetes
Standardtidslängd för tidsgräns (min) 5 30 301 30 30
Maximal tidsgränsvaraktighet (min) 10 obundna7 obundna2 Obegränsad Obegränsad
Maximalt antal utgående anslutningar (per instans) 600 aktiva (totalt 1 200) Obegränsad Obegränsad Obegränsad Obegränsad
Maximal storlek på begäran (MB)3 100 100 100 100 Beror på kluster
Maximal frågesträngslängd3 4096 4096 4096 4096 Beror på kluster
Maximal url-längdför begäran 3 8192 8192 8192 8192 Beror på 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 (Windows/Linux) 200/100 100/20 varierar beroende på SKU9 1009 Beror på kluster
Funktionsappar per plan11 100 100 obundna4 Obegränsad Obegränsad
App Service-planer 100 per region 100 per resursgrupp 100 per resursgrupp - -
Distributionsfack per app10 2 3 1-209 20 saknas
Lagring5 5 GB 250 GB 50–1 000 GB 1 TB saknas
Anpassade domäner per app 5006 500 500 500 saknas
SSL-stöd för anpassad domän Obundna SNI SSL-anslutningar ingår Obundna SNI SSL- och 1 IP SSL-anslutningar ingår Obundna SNI SSL- och 1 IP SSL-anslutningar ingår Obundna SNI SSL- och 1 IP SSL-anslutningar ingår saknas

1 Som standard är tidsgränsen för Functions 1.x-körningen i en App Service-plan obundna.
2 Kräver att App Service-planen är inställd på AlwaysOn. Betala till standardpriser.
3 Dessa gränser anges i värden.
4 Det faktiska antalet funktionsappar som du kan vara värd för beror på apparnas aktivitet, storleken på datorinstanserna och motsvarande resursanvändning.
5 Lagringsgränsen är den totala innehållsstorleken i tillfällig lagring för alla appar i samma App Service-plan. Förbrukningsplanen använder Azure Files för tillfällig lagring.
6 När funktionsappen finns i en förbrukningsplan stöds endast CNAME-alternativet. För funktionsappar i en Premium-plan eller en App Service-plan kan du mappa en anpassad domän med antingen en CNAME- eller A-post.
7 Garanterad i upp till 60 minuter.
8 Arbetare är roller som är värdar för kundappar. Arbetare är tillgängliga i tre fasta storlekar: En vCPU/3,5 GB RAM-minne; Två vCPU/7 GB RAM-minne; Fyra vCPU/14 GB RAM-minne.
9 Se App Service-gränser för mer information.
10 Inklusive produktionsplatsen.
11 Det finns för närvarande en gräns på 5 000 funktionsappar i en viss prenumeration.

Begränsningar för att skapa nya funktionsappar i en befintlig resursgrupp

I vissa fall kan du få något av följande fel när du försöker skapa en ny värdplan för funktionsappen i en befintlig resursgrupp:

  • Prisnivån tillåts inte i den här resursgruppen
  • <> SKU_name arbetare är inte tillgängliga i resursgruppen <resource_group_name>

Detta kan inträffa när följande villkor uppfylls:

  • Du skapar en funktionsapp i en befintlig resursgrupp som någonsin har innehållit en annan funktionsapp eller webbapp. Till exempel stöds inte Linux-förbrukningsappar i samma resursgrupp som Linux Dedicated- eller Linux Premium-abonnemang.
  • Den nya funktionsappen skapas i samma region som föregående app.
  • Den tidigare appen är på något sätt inte kompatibel med din nya app. Detta kan inträffa mellan SKU:er, operativsystem eller på grund av andra funktioner på plattformsnivå, till exempel stöd för tillgänglighetszoner.

Orsaken till detta beror på hur funktionsapps- och webbappsplaner mappas till olika resurspooler när de skapas. Olika SKU:er kräver en annan uppsättning infrastrukturfunktioner. När du skapar en app i en resursgrupp mappas och tilldelas den resursgruppen till en specifik resurspool. Om du försöker skapa en annan plan i resursgruppen och den mappade poolen inte har de resurser som krävs uppstår det här felet.

När det här felet inträffar skapar du i stället din funktionsapp och värdplan i en ny resursgrupp.

Nätverksfunktioner

Funktion Förbrukningsplan Premium-plan Dedikerad plan ASE
Inkommande IP-begränsningar ✅Ja ✅Ja ✅Ja ✅Ja
Inkommande privata slutpunkter ❌Nej ✅Ja ✅Ja ✅Ja
Integrering med virtuellt nätverk ❌Nej ✅Ja (regional) ✅Ja (regional och gateway) ✅Ja
Utlösare för virtuellt nätverk (icke-HTTP) ❌Nej ✅Ja ✅Ja ✅Ja
Hybridanslutningar (endast Windows) ❌Nej ✅Ja ✅Ja ✅Ja
Utgående IP-begränsningar ❌Nej ✅Ja ✅Ja ✅Ja

Fakturering

Planera Details
Förbrukningsplan Betala bara för den tid som dina funktioner körs. Fakturering baseras på antalet körningar, körningstid och använt minne.
Premium-plan Premium-planen baseras på antalet kärnsekunder och minne som används i nödvändiga och förvärmda instanser. Minst en instans per plan måste alltid hållas varm. 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-resurser, till exempel webbappar.
App Service-miljön (ASE) Det finns en fast månadskostnad för en ASE som betalar för infrastrukturen och inte ändras med storleken på ASE. 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. Din funktionsapp körs som en programarbetsbelastning ovanpå klustret, precis som en vanlig app.

Nästa steg