Dela via


Översikt över Azure Functions i Azure Container Apps

Azure Functions i Azure Container Apps erbjuder en fullständigt hanterad serverlös värdmiljö som sammanför de händelsedrivna funktionerna i Azure Functions med de robusta funktionerna i Container Apps. Den här integreringen omfattar avancerade funktioner som Kubernetes-baserad orkestrering, inbyggd automatisk skalning som drivs av KEDA(Kubernetes-baserad händelsedriven autoskalning), Dapr-integrering (Distributed Application Runtime), GPU-arbetsbelastningsstöd, sidovagnsstöd, VNet-anslutning (virtuellt nätverk) och revisionshantering.

Den här metoden är användbar när du vill att functions ska köras tillsammans med andra containerbaserade appar som mikrotjänster, API:er eller webbplatser. Dessutom kan containerinkapsning av dina funktionsappar hjälpa dig när du behöver anpassade beroenden eller vill dra nytta av skalning till noll för kostnadsbesparingar. Om du kör beräkningsintensiva uppgifter som AI-slutsatsdragning stöder Container Apps även GPU-baserad värd via serverlöst GPU-erbjudande och dedikerade arbetsbelastningsprofiler.

Som en integrerad funktion i Azure Container Apps kan du distribuera Azure Functions-avbildningar direkt till Azure Container Apps med hjälp av resursprovidern Microsoft.App genom att ange kind=functionapp när du anropar az containerapp create. Appar som skapats på det här sättet har åtkomst till alla Azure Container Apps-funktioner. Om du distribuerar via Azure-portalen kan du aktivera appalternativet Optimera för funktioner under installationen. Mer information finns i avsnittet om distribution och installation .

Viktiga fördelar

Container Apps-värdmodellen bygger på flexibiliteten hos containerbaserade arbetsbelastningar och den händelsedrivna karaktären hos Azure Functions. Det ger följande viktiga fördelar:

I följande tabell kan du jämföra funktionerna i Functions i Container Apps med Flex-förbrukningsplanen.

Feature Containerapplikationer Flex-förbrukningsplan
Skala till noll ✅ Ja (via KEDA) ✅ Ja
Maximal utskalning 1 000 (standard 10, kan konfigureras) 1 000
Ständigt på-instanser ✅ Ja (via minReplicas) ✅ Ja (via alltid redo instanser)
VNET-integrering ✅ Ja ✅ Ja
Stöd för anpassad container ✅ Ja (ta med din egen bild) ❌ Begränsad (ingen ta med din egen behållare)
GPU-stöd ✅ Ja (via serverlös GPU-dedikerad arbetsbelastningsprofil) ❌ Nej
Inbyggda funktioner Funktionsstöd för Container Apps. Till exempel KEDA, Dapr, multirevisioner, mTLS, sidovagnar, ingresskontroll med mera Endast funktioner
Faktureringsmodell Prissättning för Container Apps: Förbrukningsplan (vCPU, minne, begäranden) och dedikerad plan (arbetsbelastningsprofilbaserad) Körningstid + alltid redo instanser

En fullständig jämförelse av Functions on Container Apps mot Flex Consumption Plan och alla andra plan- och värdtyper finns i Skalnings- och värdalternativ för Functions.

Scenarier

Azure Functions i Container Apps är idealiska för en mängd olika användningsfall, särskilt när du behöver händelsedriven körning, containerflexiering eller säker integrering med andra tjänster:

  • Verksamhetsspecifika API:er: Paketera anpassade bibliotek, paket och API:er med Azure Functions för verksamhetsspecifika program.
  • Migrering och modernisering: Migrering av lokala äldre och/eller monolitiska program till molnbaserade mikrotjänster på containrar.
  • Händelsedriven bearbetning: Hantera händelser från Event Grid, Service Bus, Event Hubs och andra händelsekällor med enkel funktionsprogrammeringsmodell.
  • AI- och GPU-arbetsbelastningar: Serverlös arbetsbelastningsbearbetning av videor, bilder, avskrifter eller andra bearbetningsintensiva uppgifter som krävde GPU-beräkningsresurser. Mer information finns i Använda serverlösa GPU:er i Azure Container Apps.
  • Mikrotjänster: Integrera Azure Functions med andra Container Apps-värdbaserade tjänster.
  • Anpassade containrar: Paketfunktioner med anpassade körnings- eller sidovagnar.
  • Privata appar: Skydda interna funktioner med hjälp av VNet och intern ingress.
  • .NET Aspire: Med integreringen av .NET Aspire med Azure Functions kan du utveckla, felsöka och orkestrera ett Azure Functions .NET-projekt som en del av .NET Aspire-appvärden. Läs mer om Azure Functions med .NET Aspire
  • Allmänna funktioner: Kör alla Standard Azure Functions-scenarier som stöds (till exempel timers, filbearbetning, databasutlösare).

Distribution och installation

Om du vill distribuera Azure Functions i Azure Container Apps kan du paketera din Functions-app som en anpassad containeravbildning och distribuera den som alla andra containerappar med en viktig skillnad. Du måste ange kind=functionapp egenskapen när du använder Azure CLI- eller ARM/Bicep-mallarna. Detaljerade steg och exempel finns i den officiella komma igång-dokumentationen.

az containerapp create \
  --resource-group $RESOURCE_GROUP_NAME \
  --name $CONTAINER_APP_NAME \
  --environment $ENVIRONMENT_NAME \
  --image mcr.microsoft.com/k8se/quickstart-functions:latest \
  --ingress external \
  --target-port 80 \
  --kind functionapp \
  --query properties.outputs.fqdn

Det här kommandot returnerar URL:en för din Functions-app. Kopiera den här URL:en och klistra in den i en webbläsare.

I Azure-portalen väljer du alternativet Optimera för Azure Functions när containerappen skapas för att effektivisera installationen.

Skärmbild av Azure-portalen när du skapar en containerapp som är förkonfigurerad för Azure Functions.

Alla standarddistributionsmetoder stöds, inklusive:

Detaljerade steg och exempel finns i den officiella komma igång-dokumentationen.

Prissättning och fakturering

Azure Functions i Azure Container Apps följer samma prismodell som Azure Container Apps. Faktureringen baseras på den plantyp du väljer för din systemmiljö, vilket kan vara antingen förbrukningsbaserad eller dedikerad.

  • Förbrukningsplan: Det här serverlösa beräkningsalternativet debiterar dig endast för de resurser som dina appar använder när de körs.
  • Dedikerad plan: Det här alternativet innehåller anpassade beräkningsresurser och fakturering för de instanser som allokerats till varje arbetsbelastningsprofil.

Ditt val av plan avgör hur faktureringsberäkningar görs. Olika program i en miljö kan använda olika planer.

Viktiga punkter att notera:

  • Inga extra avgifter för att använda Azure Functions-programmeringsmodellen i Container Apps.
  • Durable Functions och andra avancerade mönster stöds och faktureras under samma prismodell för Container Apps. Detaljerade faktureringsmekanik och exempel finns i dokumentationen Fakturering i Azure Container Apps .

Händelsebaserad skalning

Azure Functions i Container Apps stöder alla större språkkörningar som är tillgängliga i Azure Functions, inklusive: C#, JavaScript/TypeScript (Node.js), Python, Java, PowerShell, Anpassade containrar (bring your own image).

Azure Functions som körs i Azure Container Apps konfigurerar automatiskt skalningsregler baserat på händelsekällan, vilket eliminerar behovet av manuella KEDA-skalningsregeldefinitioner. Därför är knappen "Lägg till skalningsregler" på Azure-portalen inaktiverad för Functions i Container Apps. Du kan dock fortfarande definiera minsta och högsta antal repliker för att upprätta skalningsgränser och behålla kontrollen över resursallokering.

Alla Azure Functions-standardutlösare och bindningar stöds i Container Apps med följande undantag:

Hanterade identiteter stöds för utlösare och bindningar som tillåter det. De är också tillgängliga för:

För utlösare som inte stöds använder du fasta antal repliker (dvs. ange minReplicas > 0) i Azure Functions i Azure Container Apps. Mer information finns i utvecklarguiden för Functions.

Skalning och prestanda

Azure Functions på Container Apps skalas automatiskt baserat på händelser som använder KEDA, utan att behöva konfigurera skalningsregler manuellt. Du kan fortfarande ange min/max-repliker för att styra skalningsbeteendet.

  • Händelsedriven skalning: Skalas automatiskt baserat på utlösare som Event Grid, Service Bus eller HTTP.
  • Skala till noll: Inaktiva appar skalar in till noll för att spara kostnader.
  • Kallstartskontroll: Lär dig hur du minskar kallstartstiden i Azure Container Apps.
  • Samtidighet: Varje instans kan bearbeta flera händelser parallellt.
  • Hög skala: Skala ut till 1 000 instanser per app (standardvärdet är 10).
  • GPU-stöd: Kör beräkningsintensiva arbetsbelastningar som AI-slutsatsdragning med GPU-backade noder.

Detta gör Container Apps lämpliga för både tillfälliga och kontinuerliga arbetsbelastningar. Mer information finns i Ange skalningsregler i Azure Container Apps

Nätverk och säkerhet

Azure Functions i Container Apps drar nytta av Container Apps robusta nätverks- och säkerhetsfunktioner för säkra och skalbara distributioner:

  • VNet-integrering: Få säker åtkomst till privata resurser via interna slutpunkter och privata databaser.
  • Hanterad identitet: Autentisera med Azure-tjänster med system-/användartilldelade identiteter – inga hemligheter eller anslutningssträngar behövs.
  • Dapr-stöd: Aktivera pub/sub, tillståndshantering och säkra tjänstanrop via Dapr-sidecars. Mer information finns i Mikrotjänst-API:er som drivs av Dapr.
  • Ingress och TLS: Exponera säkra HTTP-slutpunkter med TLS/mTLS, anpassade domäner eller håll dem interna.
  • Miljöisolering: Funktioner delar miljögränser för Container Apps för säker, begränsad kommunikation.

Dessa funktionaliteter gör Container Apps-värdbaserade funktioner idealiska för säkra serverlösa applikationer på företagsnivå.

Övervakning och loggning

Azure Functions i Container Apps integreras sömlöst med Azures observerbarhetsverktyg för prestandaspårning och problemdiagnostik:

  • Application Insights: Tillhandahåller telemetri för begäranden, beroenden, undantag och anpassade spårningar. Mer information finns i Övervaka Azure Functions.
  • Log Analytics: Samlar in containerlivscykeln och skalningshändelser (till exempel FunctionsScalerInfo-poster). Mer information finns i Programloggning i Azure Container Apps.
  • Anpassad loggning: Stöder standardramverk som ILogger och konsolloggning för strukturerade utdata.
  • Centraliserad övervakning: Container Apps-miljön erbjuder enhetliga instrumentpaneler och aviseringar i alla appar.

Överväganden

Tänk på följande när du använder Azure Functions i Azure Container Apps:

  • Ingresskrav för automatisk skalning: Om du vill aktivera automatisk skalning baserat på händelser måste ingress aktiveras – antingen offentligt eller i den interna miljön för Container Apps.
  • Obligatoriskt lagringskonto: Varje Funktionsapp som distribueras i Container Apps måste länkas till ett lagringskonto. Detta krävs för att hantera utlösare, loggar och tillstånd. Se vägledningen för lagringskontot för bästa praxis.
  • Lagring med flera revisioner: När du distribuerar med flera aktiva revisioner tilldelar du ett dedikerat lagringskonto till varje revision. Genom att använda ett dedikerat lagringskonto kan du förhindra konflikter och säkerställa korrekt isolering. Om du inte behöver samtidiga revisioner kan du också överväga att använda standardläget för enkel revision för förenklad hantering.
  • Svarstid för kallstart: När containerappen skalar in till noll under inaktiva perioder får den första begäran efter inaktivitet en kall start. Läs mer om att minska kalla starttider.
  • Integrering av Application Insights: För robust övervakning och diagnostik länkar du din Functions-app till Application Insights. Mer information finns i App Insights-integrering med Functions.
  • Funktionsproxy: Stöds inte. För API Gateway-scenarier kan du integrera med Azure API Management i stället.
  • Distributionsplatser: Mellanlagrings- och produktionsplatser är inte tillgängliga. Använd blågröna distributionsstrategier för noll stilleståndstidsutgåvor.
  • Funktionsåtkomstnycklar: Det går inte att använda portalen för att generera functions-åtkomstnycklar. Överväg att använda Azure Key Vault för att lagra nycklar. Du kan också använda följande alternativ för att skydda HTTP-slutpunkter i produktion:
  • Kvot- och resursgränser: Container Apps-miljöer har standardgränser för antal minnes-, PROCESSOR- och instanser per region. Mer information finns i miljögränser och standardkvoter. Om din arbetsbelastning kräver mer resurser kan du begära en kvotökning.
  • Manuell skalningsregelkonfiguration: Knappen Lägg till skalningsregler på Azure-portalen är inaktiverad för Azure Functions som finns i Container Apps eftersom skalningsregler konfigureras automatiskt baserat på händelsekällan. Manuella KEDA-regeldefinitioner krävs inte i den här konfigurationen.

Skicka feedback

Skicka ett problem eller en funktionsbegäran till GitHub-lagringsplatsen för Azure Container Apps.

Nästa steg/ytterligare resurser

Om du vill fortsätta att lära dig och skapa med Azure Functions i Container Apps kan du utforska följande resurser: