Skapa och hantera funktionsappar i Flex Consumption-planen

Den här artikeln visar hur du skapar funktionsappar som finns i Flex Consumption-planen i Azure Functions. Den visar också hur du hanterar vissa funktioner i en Flex Consumption-plan värdbaserad app.

Funktionsappresurser är språkspecifika. Se till att välja önskat kodutvecklingsspråk i början av artikeln.

Förutsättningar

  • Ett Azure-konto med en aktiv prenumeration. Om du inte redan har ett konto kan du skapa ett konto kostnadsfritt.

  • Azure CLI: används för att skapa och hantera resurser i Azure. När du använder Azure CLI på din lokala dator måste du använda version 2.60.0 eller en senare version. Du kan också använda Azure Cloud Shell, som har rätt Azure CLI-version.

  • Visual Studio Code: används för att skapa och utveckla appar, skapa Azure-resurser och distribuera kodprojekt till Azure. När du använder Visual Studio Code måste du även installera det senaste Azure Functions-tillägget. Du kan också installera Azure Tools-tilläggspaketet.

  • Även om du inte behöver skapa en Flex Consumption-planapp behöver du ett kodprojekt för att kunna distribuera till och verifiera en ny funktionsapp. Slutför den första delen av en av dessa snabbstartsartiklar, där du skapar ett kodprojekt med en HTTP-utlöst funktion:

    Om du vill skapa en app i en ny Flex Consumption-plan under en Maven-distribution måste du skapa ditt lokala appprojekt och sedan uppdatera projektets pom.xml-fil. Mer information finns i Skapa en Java Flex Consumption-app med Maven

    Gå tillbaka till den här artikeln när du har skapat och kört det lokala projektet, men innan du uppmanas att skapa Azure-resurser. Du skapar funktionsappen och andra Azure-resurser i nästa avsnitt.

Skapa en Flex Consumption-app

Det här avsnittet visar hur du skapar en funktionsapp i Flex Consumption-planen med hjälp av antingen Azure CLI, Azure Portal eller Visual Studio Code. Ett exempel på hur du skapar en app i en Flex Consumption-plan med hjälp av Bicep/ARM-mallar finns i Flex Consumption-repositoriet.

Du kan hoppa över det här avsnittet om du i stället väljer att skapa och distribuera din app med Maven.

För att stödja din funktionskod måste du skapa tre resurser:

  • En resursgrupp, som är en logisk container för relaterade resurser.
  • Ett lagringskonto som används för att underhålla tillstånd och annan information om dina funktioner.
  • En funktionsapplikation i Flex Consumption-planen, som tillhandahåller miljön för att köra din funktionskod. En funktionsapp mappar till ditt lokala funktionsprojekt och låter dig gruppera funktioner som en logisk enhet för enklare hantering, distribution och delning av resurser i Flex Consumption-planen.
  1. Om du inte redan har gjort det loggar du in på Azure:

    az login
    

    Kommandot az login loggar in dig på ditt Azure-konto.

  2. az functionapp list-flexconsumption-locations Använd kommandot för att granska listan över regioner som för närvarande stöder Flex Consumption i alfabetisk ordning.

    az functionapp list-flexconsumption-locations --query "sort_by(@, &name)[].{Region:name}" -o table
    
  1. Skapa en resursgrupp i en av de regioner som för närvarande stöds som anges av kommandot i föregående steg.

    az group create --name <RESOURCE_GROUP> --location <REGION>
    

    I föregående kommando ersätter du <RESOURCE_GROUP> med ett värde som är unikt i din prenumeration och <REGION> med en av de regioner som stöds för närvarande. Kommandot az group create skapar en resursgrupp.

  2. Skapa ett allmänt lagringskonto i din resursgrupp och region:

    az storage account create --name <STORAGE_NAME> --location <REGION> --resource-group <RESOURCE_GROUP> --sku Standard_LRS --allow-blob-public-access false
    

    I föregående exempel ersätter <STORAGE_NAME> du med ett namn som passar dig och som är unikt i Azure Storage. Namn måste innehålla tre till 24 tecken som endast består av siffror och gemener. Standard_LRS anger ett konto för generell användning som Azure Functions stöder enligt kraven för lagringskontot. Kommandot az storage account create skapar lagringskontot.

    Viktigt!

    Lagringskontot används för att lagra viktiga appdata, ibland inklusive själva programkoden. Du bör begränsa åtkomsten från andra appar och användare till lagringskontot.

  3. Skapa funktionsappen i Azure:

    az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime dotnet-isolated --runtime-version 8.0 
    

    C#-appar som körs i processen stöds för närvarande inte när de körs i en Flex Consumption-plan.

    az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime java --runtime-version 17 
    
    az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime node --runtime-version 20 
    
    az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime python --runtime-version 3.11 
    

    Python 3.10 stöds också för närvarande för Python-appar.

    az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime powershell --runtime-version 7.4 
    

    I det här exemplet ersätter du både <RESOURCE_GROUP> och <STORAGE_NAME> med resursgruppen och namnet på det konto som du använde i föregående steg. Ersätt <APP_NAME> även med ett globalt unikt namn som passar dig. <APP_NAME> är också dns-standarddomänen (domain name server) för funktionsappen. Kommandot az functionapp create skapar funktionsappen i Azure.

    Det här kommandot skapar en funktionsapp som körs i Flex Consumption-planen.

    Eftersom du har skapat appen utan att ange alltid redo instanser medför din app endast kostnader när du aktivt kör funktioner. Kommandot skapar också en associerad Azure Application Insights-instans i samma resursgrupp, med vilken du kan övervaka funktionsappen och visa loggar. Mer information finns i Övervaka Azure Functions.

Distribuera ditt kodprojekt

För distribution använder Flex Consumption Plan-appar en Blob Storage-container som värd för .zip paketfiler som innehåller din projektkod och alla bibliotek som krävs för att appen ska kunna köras. Mer information finns i Distribution

Du kan hoppa över det här avsnittet om du i stället väljer att skapa och distribuera din app med Maven.

Du kan välja att distribuera projektkoden till en befintlig funktionsapp med hjälp av olika verktyg:

Du kan använda Azure CLI för att ladda upp en distributionspaketfil till distributionsresursen för en funktionsapp i Azure. Om du vill göra den här distributionen måste du skapa en .zip paketfil som kan köras när paketet monteras i din app.

Den här paketfilen måste innehålla alla build-utdatafiler och refererade bibliotek som krävs för att projektet ska kunna köras.

För projekt med ett stort antal bibliotek paketerar du roten på projektfilen och begär en fjärrversion.

För Python projekt paketerar du roten för projektfilen och begär alltid en remote build. Med hjälp av en fjärrversion förhindrar du potentiella problem som kan uppstå när du skapar ett projekt i Windows som ska distribueras i Linux.

  1. Skapa kodprojektet med hjälp av det utvecklingsverktyg du föredrar.

  2. Skapa en .zip fil som innehåller utdata från byggkatalogen. Mer information finns i Projektstruktur.

  3. När det behövs loggar du in på ditt Azure-konto och väljer den aktiva prenumerationen med hjälp av kommandot az login.

    az login
    
  4. az functionapp deployment source config-zip Kör kommandot för att distribuera programpaketet som finns i den relativa <FILE_PATH>.

    az functionapp deployment source config-zip --src <FILE_PATH> --name <APP_NAME> --resource-group <RESOURCE_GROUP>
    
  1. Skapa kodprojektet med hjälp av det utvecklingsverktyg du föredrar.

  2. Skapa en .zip fil som innehåller utdata från byggkatalogen. Mer information finns i Mappstruktur.

  3. När det behövs loggar du in på ditt Azure-konto och väljer den aktiva prenumerationen med hjälp av kommandot az login.

    az login
    
  4. az functionapp deployment source config-zip Kör kommandot för att distribuera programpaketet som finns i den relativa <FILE_PATH>.

    az functionapp deployment source config-zip --src <FILE_PATH> --name <APP_NAME> --resource-group <RESOURCE_GROUP>
    
  1. Skapa en .zip fil som innehåller rotkatalogen för kodprojektet. Mer information finns i Mappstruktur.

  2. När det behövs loggar du in på ditt Azure-konto och väljer den aktiva prenumerationen med hjälp av kommandot az login.

    az login
    
  3. az functionapp deployment source config-zip Kör kommandot för att distribuera programpaketet som finns i den relativa <FILE_PATH>.

    az functionapp deployment source config-zip --src <FILE_PATH> --name <APP_NAME> --resource-group <RESOURCE_GROUP>
    
  1. Skapa en .zip fil som innehåller rotkatalogen för kodprojektet. Mer information finns i Mappstruktur.

  2. När det behövs loggar du in på ditt Azure-konto och väljer den aktiva prenumerationen med hjälp av kommandot az login.

    az login
    
  3. az functionapp deployment source config-zip Kör kommandot för att distribuera programpaketet som finns i den relativa <FILE_PATH>.

    az functionapp deployment source config-zip --src <FILE_PATH> --name <APP_NAME> --resource-group <RESOURCE_GROUP> --build-remote true
    

    Säkerställ att du ställer in --build-remote true för att utföra en fjärrkompilering.

  1. Skapa en .zip fil som innehåller rotkatalogen för kodprojektet. Mer information finns i Mappstruktur.

  2. När det behövs loggar du in på ditt Azure-konto och väljer den aktiva prenumerationen med hjälp av kommandot az login.

    az login
    
  3. az functionapp deployment source config-zip Kör kommandot för att distribuera programpaketet som finns i den relativa <FILE_PATH>.

    az functionapp deployment source config-zip --src <FILE_PATH> --name <APP_NAME> --resource-group <RESOURCE_GROUP> --build-remote true
    

    Säkerställ att du ställer in --build-remote true för att utföra en fjärrkompilering.

Skapa och distribuera din app med hjälp av Maven

Du kan använda Maven för att skapa en funktionsapp som finns på Flex Consumption och de resurser som krävs vid distribution genom att ändra filen pom.xml.

  1. Skapa ett Java-kodprojekt genom att slutföra den första delen av någon av dessa snabbstartsartiklar:

  2. I ditt Java kodprojekt öppnar du filen pom.xml och gör dessa ändringar för att skapa funktionsappen i Flex Consumption-planen:

    • Ändra värdet <properties>.<azure.functions.maven.plugin.version> för till 1.34.0.

    • I avsnittet <plugin>.<configuration> för azure-functions-maven-pluginlägger du till eller avkommentar elementet <pricingTier> enligt följande:

      <pricingTier>Flex Consumption</pricingTier>
      
  3. (Valfritt) Anpassa Flex Consumption-planen i Maven-distributionen genom att även inkludera dessa element i <plugin>.<configuration> avsnittet: .

    • <instanceSize> – anger minnesstorleken för instansen för funktionsappen. Standardvärdet är 2048.
    • <maximumInstances> – anger det högsta värdet för det maximala antalet instanser av funktionsappen.
    • <alwaysReadyInstances> – anger antalet alltid redo instanser med underordnade element för HTTP-utlösargrupper (<http>), Durable Functions-grupper (<durable>) och andra specifika utlösare (<my_function>). När du anger ett instansantal som är större än noll betalar du för dessa instanser oavsett om dina funktioner körs eller inte. Mer information finns i Fakturering.
  4. Innan du kan distribuera loggar du in på din Azure-prenumeration med hjälp av Azure CLI.

    az login
    

    Kommandot az login loggar in dig på ditt Azure-konto.

  5. Använd följande kommando för att distribuera kodprojektet till en ny funktionsapp i Flex Consumption.

    mvn azure-functions:deploy
    

    Maven använder inställningar i mallen pom.xml för att skapa din funktionsapp i en Flex Consumption-plan i Azure, tillsammans med andra nödvändiga resurser. Om dessa resurser redan finns distribueras koden till din funktionsapp och skriver över eventuell befintlig kod.

Konfigurera integrering av virtuella nätverk

Du kan aktivera integrering av virtuella nätverk för din app i en Flex Consumption-plan när du skapar din app eller vid ett senare tillfälle. Innan du aktiverar integrering av virtuella nätverk bör du granska nätverksbeteendet och undernätskraven som är specifika för Flex Consumption.

Så här fungerar Flex Consumption-nätverk

Flex Consumption-instanser använder inte en unik IP-adress från det undernät som du integrerar appen med. I stället använder en pool med plattformshanterade nätverksgatewayer (interna för Flex Consumption-infrastrukturen) IP-adresser från undernätet för att hantera alla appar som är integrerade med det undernätet. Den här IP-multiplexeringsarkitekturen skiljer sig i grunden från Premium-planer, där varje instans använder en IP-adress från undernätet.

Riktlinjen 40 IP-adresser per app säkerställer att det finns tillräckligt med IP-adresser för plattformsgatewaypoolen och andra infrastrukturkomponenter, men det är inte en framtvingad gräns. Planera för detta minimum när du ändrar storlek på undernätet, men förstå att den faktiska IP-förbrukningen vanligtvis är lägre. Plattformen allokerar ip-adresser dynamiskt från den delade gatewaypoolen när appar som är integrerade med undernätet skalas ut.

Storlek och krav för undernät

Välj ett undernät med lämplig storlek för dina Flex Consumption-appar. Följande tabell innehåller vägledning baserat på ditt scenario:

Scenario Rekommenderad CIDR Användbara IP-adresser Notes
Enkel Flex-app /27 27 Minsta undernätsstorlek som stöds för en app
Flera Flex-appar i ett undernät /26 59 Rekommenderas när du är värd för flera appar och för storskaliga arbetsbelastningar (över 1 000 instanser); tillhandahåller tillräcklig gatewaykapacitet

Delegering av undernät

  • Delegera undernätet till Microsoft.App/environments. Denna delegering skiljer sig från Premium- och Dedicated-planerna, som använder Microsoft.Web/serverFarms.
  • Registrera resursprovidern Microsoft.App i din prenumeration.

Användningsbegränsningar för undernät

  • Undernätet kan inte redan användas för privata slutpunkter eller tjänstslutpunkter och kan inte delegeras till andra värdplaner eller tjänster.
  • Du kan inte dela samma undernät mellan en Azure Container Apps miljö och en Flex Consumption-app.
  • Undernätsnamn får inte innehålla understreck (_) tecken, vilket är en aktuell begränsning i Flex Consumption-planen.

Delning av undernät

  • Du kan dela samma undernät med fler än en app som körs i en Flex Consumption-plan. Men eftersom nätverksresurser delas mellan alla appar kan en funktionsapp påverka andras prestanda i samma undernät. Tänk på den aggregerade efterfrågan när du packar flera appar i ett litet undernät.
  • Undernätet och appen måste finnas i samma region.

IP-allokering och planering

  • Flex Consumption-appar tilldelar inte någon unik IP-adress till varje instans. I stället använder en pool med nätverksgatewayer IP-adresser från undernätet. Riktlinjen för att reservera 40 IP-adresser per app hjälper till att säkerställa att det finns tillräckligt med IP-adresser för gatewaypoolen och andra infrastrukturkomponenter, men den faktiska användningen är vanligtvis lägre.
  • Ett /27 undernät (27 användbara IP-adresser) räcker för en enskild app som stöder upp till 1 000 instanser på grund av IP-multiplexering. För flera appar eller storskaliga arbetsbelastningar använder du ett /26 undernät för att tillhandahålla tillräcklig gatewaykapacitet.
  • När många appar delar ett undernät och många skalar ut med betydande utgående trafik kan utgående nätverksdataflöde bli en flaskhals i stället för att IP-adresser förbrukas. Utvärdera prestanda i din planerade produktionsskala.

Aktivera integrering av virtuellt nätverk när du skapar appen

Exemplen i det här avsnittet förutsätter att ditt konto redan innehåller ett virtuellt nätverk och undernät.

Aktivera integrering med virtuellt nätverk genom att köra kommandot az functionapp create och inkludera parametrarna --vnet och --subnet. Undernätet måste delegeras till Microsoft.App/environments och måste vara minst /27 i storlek. Mer information finns i Storlek och krav för undernät.

  1. Skapa det virtuella nätverket och undernätet om du inte redan har ett.

  2. Slutför steg 1–4 i Skapa en Flex Consumption-app för att skapa de resurser som krävs av din app.

  3. az functionapp create Kör kommandot, inklusive parametrarna --vnet och --subnet som i det här exemplet:

    az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime <RUNTIME_NAME> --runtime-version <RUNTIME_VERSION> --vnet <VNET_RESOURCE_ID> --subnet <SUBNET_NAME>
    

    Värdet <VNET_RESOURCE_ID> är resurs-ID:t för det virtuella nätverket, som har formatet : /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Network/virtualNetworks/<VNET_NAME>. Du kan använda det här kommandot för att hämta en lista över virtuella nätverks-ID:n, filtrerade efter <RESOURCE_GROUP>: az network vnet list --resource-group <RESOURCE_GROUP> --output tsv --query "[]".id.

Exempel på hur du skapar appar i Flex Consumption med integrering av virtuella nätverk finns i följande resurser:

Ändra eller ta bort integrering av virtuella nätverk

Du kan lägga till, ändra eller ta bort integrering av virtuella nätverk för en befintlig app.

Använd kommandot för att aktivera integrering av az functionapp vnet-integration add virtuella nätverk i en befintlig funktionsapp:

az functionapp vnet-integration add --resource-group <RESOURCE_GROUP> --name <APP_NAME> --vnet <VNET_RESOURCE_ID> --subnet <SUBNET_NAME>

Använd kommandot för att inaktivera integrering av az functionapp vnet-integration remove virtuella nätverk i din app:

az functionapp vnet-integration remove --resource-group <RESOURCE_GROUP> --name <APP_NAME>

az functionapp vnet-integration list Använd kommandot för att lista de aktuella integreringarna av virtuella nätverk för din app:

az functionapp vnet-integration list --resource-group <RESOURCE_GROUP> --name <APP_NAME>

Felsöka nätverksprestanda

När en Flex Consumption-app integreras med ett undernät som är mindre än den rekommenderade storleken kan du uppleva prestandaförsämring när appen skalar. Det här problemet kan också inträffa om du integrerar många appar med samma undernät när de skalas ut och har betydande utgående trafik.

Symptom på underdimensionerade undernät

Övervaka dessa symtom, vilket indikerar att utgående kapacitet snarare än IP-adresser är den begränsande faktorn:

  • Ökad svarstid för utgående anrop till beroenden
  • Tidsgränser för anslutning till externa tjänster
  • De här problemen ökar när appen skalas upp, inte som ett plötsligt avbrott

Viktigt!

Utskalning i sig blockeras inte av undernätsstorlek. appen fortsätter att lägga till instanser även om undernätet är för litet. Prestandaförsämring uppstår i stället för en fast skalningsgräns.

Övervakning och minskning

  • Instrumentera Application Insights med mätvärden för svarstid för utgående beroenden: detta mätvärde ger en tidig varningssignal för underdimensionerade undernät.
  • Belastningstest i produktionsskala innan du sätter på undernätsstorleken för att verifiera att storleken på undernätet kan hantera din förväntade arbetsbelastning.
  • Övervaka med Azure Monitor: Gå till Virtual Network>Subnet i Azure Monitor för att se IP-allokeringsdata via Azure Resource Graph- och KQL-frågor.
  • Ange rätt storlek på undernätet enligt riktlinjerna i föregående avsnitt. Ett /27 minimum rekommenderas starkt. En /26 rekommenderas för flera appar.

Anmärkning

Använd minst ett /27 undernät för att säkerställa lämplig plattformsstabilitet. Undernät som är betydligt mindre än /27 kan få problem vid skapandet av gatewayer utan något uttryckligt felmeddelande.

Konfigurera inställningar för distribution

I Flex Consumption-planen innehåller en Azure Blob Storage container distributionspaketet med appens kod. Som standard använder distributioner samma lagringskonto (AzureWebJobsStorage) och reťazec pripojenia som Functions-körningen använder för att underhålla din app. programinställningen DEPLOYMENT_STORAGE_CONNECTION_STRING lagrar anslutningssträngen. Du kan dock ange en blobcontainer i ett separat lagringskonto som distributionskälla för din kod. Du kan också ändra den autentiseringsmetod som används för att komma åt containern.

En anpassad distributionskälla bör uppfylla följande kriterier:

  • Lagringskontot måste redan finnas.
  • Containern som ska användas för distributioner måste också finnas.
  • När fler än en app använder samma lagringskonto bör varje app ha en egen distributionscontainer. Att använda en unik container för varje app förhindrar att distributionspaket skrivs över, vilket skulle inträffa om appar delade samma container.

Tänk på följande när du konfigurerar distributionslagringsautentisering:

  • Vi rekommenderar att du använder hanterade identiteter när du ansluter till Azure Storage från dina appar. Mer information finns i Anslutningar.
  • När du använder en anslutningssträng för att ansluta till distributionslagringskontot måste den programinställning som innehåller anslutningssträng redan finnas.
  • När du använder en användartilldelad hanterad identitet länkar du den angivna identiteten till funktionsappen. Du tilldelar Storage Blob Data Contributor även rollen som är begränsad till distributionslagringskontot till identiteten.
  • När du använder en systemtilldelad hanterad identitet skapar du en identitet när det inte redan finns en giltig systemtilldelad identitet i appen. När det finns en systemtilldelad identitet tilldelar Storage Blob Data Contributor du rollen som är begränsad till distributionslagringskontot till identiteten.

Så här konfigurerar du distributionsinställningar när du skapar funktionsappen i Flex Consumption-planen:

az functionapp create Använd kommandot och ange dessa extra alternativ som anpassar distributionslagringen:

Parameter beskrivning
--deployment-storage-name Namnet på distributionslagringskontot.
--deployment-storage-container-name Namnet på containern i kontot som ska innehålla appens distributionspaket.
--deployment-storage-auth-type Den autentiseringstyp som ska användas för att ansluta till distributionslagringskontot. Godkända värden inkluderar StorageAccountConnectionString, UserAssignedIdentityoch SystemAssignedIdentity.
--deployment-storage-auth-value När du använder StorageAccountConnectionString anger du den här parametern till namnet på den programinställning som innehåller reťazec pripojenia till distributionslagringskontot. När du anger UserAssignedIdentityanger du den här parametern till namnet på resurs-ID:t för den identitet som du vill använda.

Det här exemplet skapar en funktionsapp i Flex Consumption-planen med ett separat distributionslagringskonto och användartilldelad identitet:

az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage <STORAGE_NAME> --runtime dotnet-isolated --runtime-version 8.0 --flexconsumption-location "<REGION>" --deployment-storage-name <DEPLOYMENT_ACCOUNT_NAME> --deployment-storage-container-name <DEPLOYMENT_CONTAINER_NAME> --deployment-storage-auth-type UserAssignedIdentity --deployment-storage-auth-value <MI_RESOURCE_ID>

Du kan också ändra distributionslagringskonfigurationen för en befintlig app.

az functionapp deployment config set Använd kommandot för att ändra distributionslagringskonfigurationen.

az functionapp deployment config set --resource-group <RESOURCE_GROUP> --name <APP_NAME> --deployment-storage-name <DEPLOYMENT_ACCOUNT_NAME> --deployment-storage-container-name <DEPLOYMENT_CONTAINER_NAME>

Konfigurera instansminne

Ange instansminnets storlek för din Flex Consumption-plan när du skapar din app. Mer information om storlekar som stöds finns i Instansstorlekar.

Så här anger du en minnesstorlek för instansen som skiljer sig från standardvärdet när du skapar din app:

Ange parametern --instance-memory i kommandot az functionapp create . I det här exemplet skapas en C#-app med instansstorleken 4096:

az functionapp create --instance-memory 4096 --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime dotnet-isolated --runtime-version 8.0

När som helst kan du ändra inställningen för minnesstorlek för instansen som används av din app.

I det az functionapp scale config set här exemplet används kommandot för att ändra inställningen för minnesstorlek för instansen till 512 MB:

az functionapp scale config set --resource-group <resourceGroup> --name <APP_NAME> --instance-memory 512

Ange antal alltid redo-instanser

Ange ett visst antal alltid redo instanser för skalningsgrupper per funktion eller enskilda funktioner för att hålla dina funktioner inlästa och redo att köras. Det finns tre särskilda grupper, som vid skalning per funktion:

  • http – Alla HTTP-utlösta funktioner i appen skalas samman till sina egna instanser.
  • durable – Alla durable-utlösta funktioner (orkestrering, aktivitet, entitet) i appen skalas samman till sina egna instanser.
  • blob – Alla blobar (Event Grid) utlösta funktioner i appen skalar samman till sina egna instanser.

Använd http, durableeller blob som namn på inställningen för namnvärdeparet för att konfigurera always ready counts för dessa grupper. För alla andra funktioner i appen konfigurerar du alltid redo för varje enskild funktion med hjälp av formatet function:<FUNCTION_NAME>=n.

Om du vill definiera en eller flera alltid redo instansbeteckningar använder du parametern --always-ready-instances med az functionapp create kommandot . I det här exemplet anges antalet alltid redo instanser för alla HTTP-utlösta funktioner till 10:

az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage <STORAGE_NAME> --runtime <LANGUAGE_RUNTIME> --runtime-version <RUNTIME_VERSION> --flexconsumption-location <REGION> --always-ready-instances http=10

Det här exemplet anger antalet alltid redo instanser för alla Durable-utlösarfunktioner till 3 och anger antalet alltid redo instanser till 2 för en Service Bus-utlöst funktion med namnet function5:

az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage <STORAGE_NAME> --runtime <LANGUAGE_RUNTIME> --runtime-version <RUNTIME_VERSION> --flexconsumption-location <REGION> --always-ready-instances durable=3 function:function5=2

Du kan också ändra alltid redo instanser i en befintlig app genom att lägga till eller ta bort instansbeteckningar eller genom att ändra antalet befintliga instansbeteckningar.

I det az functionapp scale config always-ready set här exemplet används kommandot för att ändra antalet alltid redo instanser för gruppen HTTP-utlösare till 10:

az functionapp scale config always-ready set --resource-group <RESOURCE_GROUP> --name <APP_NAME> --settings http=10

Om du vill ta bort alltid redo instanser använder du az functionapp scale config always-ready delete kommandot, som i det här exemplet som tar bort alla alltid redo instanser från både GRUPPEN HTTP-utlösare och även en funktion med namnet hello_world:

az functionapp scale config always-ready delete --resource-group <RESOURCE_GROUP> --name <APP_NAME> --setting-names http function:hello_world

Ange HTTP-samtidighetsgränser

Om du inte anger specifika gränser fastställer systemet HTTP-samtidighetsstandarder för Flex Consumption Plan-appar baserat på instansstorleksinställningen. Mer information finns i HTTP-utlösarens samtidighet.

Så här anger du HTTP-samtidighetsgränser för en befintlig app:

az functionapp scale config set Använd kommandot för att ange specifika HTTP-samtidighetsgränser för din app, oavsett instansstorlek.

az functionapp scale config set --resource-group <RESOURCE_GROUP> --name <APP_NAME> --trigger-type http --trigger-settings perInstanceConcurrency=10

I det här exemplet anges http-utlösarens samtidighetsnivå till 10. När du har angett ett HTTP-samtidighetsvärde underhåller appen det värdet trots ändringar i appens inställning för instansstorlek.

Ange strategi för webbplatsuppdatering

Flex Consumption-planen har unikt stöd för två olika strategier för platsuppdatering som styr hur din funktionsapp hanterar koddistributioner och konfigurationsändringar. Som standard använder appar med Flex Consumption-planen Recreate-strategin, som avslutar körningen av funktioner under utrullningar. Om du vill aktivera distributioner utan avbrott kan du konfigurera RollingUpdate strategin i stället. För mer information, se Strategier för webbplatsuppdatering i Flexförbrukning.

Anmärkning

Platsuppdateringsstrategikonfigurationen är för närvarande i offentlig förhandsversion och kan endast nås via Bicep- eller ARM-mallar. Du kan inte konfigurera den här inställningen med hjälp av Azure CLI, Azure-portalen eller Visual Studio Code.

Azure CLI stöder för närvarande inte platsuppdateringsstrategikonfiguration. Använd Bicep- eller ARM-mallar enligt beskrivningen i Konfigurera webbplatsuppdateringsstrategi.

Konfigurera webbplatsbegränsade certifikat

Flex Consumption introducerar platsomfattande certifikat, en ny modell där TLS/SSL-certifikat är begränsade till din enskilda funktionsapp i stället för att delas mellan appar i samma webbyta. I följande tabell visas de certifikattyper som stöds och hur var och en läggs till i funktionsappen:

Certifikattyp Så här lägger du till Räknas mot
App Service-hanterat certifikat Skapad i portalen för en anpassad domän Gräns för privat certifikat
App Service-certifikat Köpt via Azure och sedan importerats Gräns för privat certifikat
Certifikat som importerats från Key Vault Importerad från Azure Key Vault Gräns för privat certifikat
Uppladdat privat certifikat (.pfx) Laddas upp som en PFX-fil Gräns för privat certifikat
Uppladdat offentligt certifikat (.cer) Laddas upp som en CER-fil Gräns för offentligt certifikat

Överväganden för webbplatsspecifika certifikat

  • Stöd för användning av platsomfattande certifikat med appar som körs i en Flex Consumption-plan finns för närvarande i förhandsversion.
  • Befintliga appar som skapades innan den här funktionen blev tillgänglig har för närvarande ingen migreringssökväg för certifikat. Om du vill använda platsomfattande certifikat skapar du en ny funktionsapp för Flex Consumption.
  • Azure CLI stöd för att hantera platsomfattande certifikat är ännu inte tillgängligt. Under tiden använder du mallarna Azure eller ARM/Bicep för att hantera certifikat.
  • Varje app stöder högst tre privata certifikat och tre offentliga certifikat.
  • Privata certifikat måste exporteras som en lösenordsskyddad PFX-fil som innehåller alla mellanliggande certifikat och rotcertifikatet i certifikatkedjan.
  • Kryptering från slutpunkt till slutpunkt (E2E) stöds inte för närvarande.
  • Ecc-certifikat (Elliptic Curve Cryptography) stöds när de laddas upp som en PFX.
  • Eftersom Flex Consumption körs på Linux måste koden läsa in certifikat från filsökvägar i stället för från Windows certifikatarkiv. Följ först stegen i Gör ett certifikat tillgängligt för din kod för att läsa in certifikat i körningsmiljön. Vägledning om hur du läser certifikatfiler från programkoden finns i Läs certifikat i Linux/Windows-containrar.

Lägga till ett certifikat

Du kan lägga till certifikat i din app på flera sätt, beroende på certifikattyp. Lägg till kostnadsfria hanterade och Azure certifikat direkt i portalen.

Välj någon av följande flikar för att se hur du lägger till ett hanterat, privat (.pfx), offentligt (.cer) eller Key Vault hanterat certifikat.

Så här skapar och binder du ett kostnadsfritt hanterat certifikat för en anpassad domän:

  1. Gå till funktionsappen i Azure-portalen.

  2. I den vänstra menyn expanderar du Inställningar och väljer Anpassade domäner.

  3. Välj Lägg till en anpassad domän.

  4. Under TLS/SSL-certifikat väljer du Hanterat certifikat för App Service.

  5. Under TLS/SSL-typ väljer du SNI SSL.

  6. Slutför domänverifieringen och välj Lägg till.

    Det hanterade certifikatet skapas och binds automatiskt till den anpassade domänen. Det kan ta upp till 10 minuter innan certifikatet utfärdas.

Gör ett certifikat tillgängligt för din kod

När du har lagt till ett certifikat måste du uttryckligen göra det tillgängligt för funktionskoden.

  1. Gå till funktionsappen i Azure-portalen.

  2. I den vänstra menyn expanderar du Inställningar och väljer Certifikat.

  3. Välj Ta med egna certifikat (.pfx) eller Offentliga nyckelcertifikat (.cer).

  4. Välj ... (ellips) bredvid det certifikat som du vill göra tillgängligt och välj sedan Gör tillgänglig för appkod.

När du aktiverar Tillgänglig för appkod läser plattformen in certifikatet i körningsmiljön på alla instanser som en fil.

Certifikatfiler namnges med tumavtryck och placeras i följande kataloger:

Certifikattyp Sökväg
Offentliga certifikat (.cer) /var/ssl/certs
Privata certifikat (.pfx) /var/ssl/private

Förnya eller uppdatera ett certifikat

Kostnadsfria hanterade certifikat förnyas automatiskt av plattformen. För alla andra certifikat beror hur du uppdaterar ett utgånget certifikat på certifikatkällan:

  • Certifikat som importerats från Key Vault: När du förnyar ett certifikat i Key Vault synkroniserar plattformsbakgrundsjobbet automatiskt det uppdaterade certifikatet till funktionsappen inom 24 timmar. Den nya certifikatversionen läses in till alla instanser utan några manuella steg.

  • Uppladdade certifikat: Ladda upp det nya certifikatet och gör det sedan tillgängligt för din appkod. Om koden refererar till certifikatet med tumavtryck uppdaterar du eventuella tumavtrycksreferenser i dina kod- eller appinställningar.

Visa regioner som stöds för närvarande

Om du vill visa listan över regioner som för närvarande har stöd för Flex Consumption-planer kan du läsa:

  1. Om du inte redan har gjort det loggar du in på Azure:

    az login
    

    Kommandot az login loggar in dig på ditt Azure-konto.

  2. az functionapp list-flexconsumption-locations Använd kommandot för att granska listan över regioner som för närvarande stöder Flex Consumption i alfabetisk ordning.

    az functionapp list-flexconsumption-locations --query "sort_by(@, &name)[].{Region:name}" -o table
    

När du skapar en app i Azure-portalen eller med hjälp av Visual Studio Code utesluter regionlistan för närvarande regioner som inte stöds.

Övervaka din app i Azure

Azure Monitor tillhandahåller dessa distinkta uppsättningar mått som hjälper dig att bättre förstå hur din funktionsapp körs i Azure:

  • Plattformsmått: ger insikter på infrastrukturnivå
  • Application Insights: ger insikter på kodnivå, inklusive spårningar och felloggar.

Om du aktiverar Application Insights i din app kan du:

  • Spåra detaljerade körningstider och beroenden
  • Övervaka prestanda för enskilda funktioner
  • Analysera fel och undantag
  • Korrelera plattformsmått med programbeteende med hjälp av anpassade frågor

Mer information finns i Övervaka Azure Functions.

Mått som stöds

Kör det här skriptet för att visa alla plattformsmått som för närvarande är tillgängliga för din app:

appId=$(az functionapp show --name <APP_NAME> --resource-group <RESOURCE_GROUP> --query id -o tsv)
az monitor metrics list-definitions --resource $appId --query "[].{Name:name.localizedValue,Value:name.value}" -o table

I det här exemplet, ersätt <RESOURCE_GROUP> och <APP_NAME> med namnen på din resursgrupp och din funktionsapp. Det här skriptet hämtar det fullständigt kvalificerade app-ID:t och returnerar tillgängliga plattformsmått i en tabell.

Visa metrikvärden

Du kan granska aktuella mått antingen i Azure-portalen eller med hjälp av Azure CLI.

I Azure-portalen kan du också skapa metrikaviseringar och fästa diagram och andra rapporter på instrumentpaneler i portalen.

Använd det här skriptet för att generera en rapport över aktuella mått för din app:

appId=$(az functionapp show --name <APP_NAME> --resource-group <RESOURCE_GROUP> --query id -o tsv)

echo -e "\nAlways-ready and on-demand execution counts..."
az monitor metrics list --resource $appId --metric "AlwaysReadyFunctionExecutionCount" --interval PT1H --output table
az monitor metrics list --resource $appId --metric "OnDemandFunctionExecutionCount" --interval PT1H --output table

echo -e "\nExecution units (MB-ms) in always-ready and on-demand execution counts..."
az monitor metrics list --resource $appId --metric "AlwaysReadyFunctionExecutionUnits" --interval PT1H --output table
az monitor metrics list --resource $appId --metric "OnDemandFunctionExecutionUnits" --interval PT1H --output table

echo -e "\nAlways-ready resource utilization..."
az monitor metrics list --resource $appId --metric "AlwaysReadyUnits" --interval PT1H --output table

echo -e "\nMemory utilization..."
az monitor metrics list --resource $appId --metric "AverageMemoryWorkingSet" --interval PT1H --output table
az monitor metrics list --resource $appId --metric "MemoryWorkingSet" --interval PT1H --output table

echo -e "\nInstance count and CPU utilization..."
az monitor metrics list --resource $appId --metric "InstanceCount" --interval PT1H --output table
az monitor metrics list --resource $appId --metric "CpuPercentage" --interval PT1H --output table

Mer information om mått för Azure Functions finns i Övervaka Azure Functions.

Visa loggar

När du ansluter din app till Application Insights kan du analysera appens prestanda bättre och felsöka problem under körningen. I Application Insights-resursen för din app:

  • Använd Prestanda för att analysera svarstider och beroenden.
  • Använd Fel för att identifiera eventuella fel som inträffar efter migreringen.
  • Skapa anpassade frågor i loggar för att analysera funktionsbeteende .

Använd till exempel den här frågan för att jämföra lyckandefrekvensen efter instans:

Använd den här frågan för att jämföra framgångsfrekvenser per instans:

requests
| where timestamp > ago(7d)
| summarize successCount=countif(success == true), failureCount=countif(success == false) by bin(timestamp, 1h), cloud_RoleName
| render timechart

Använd den här frågan för att analysera antalet instanser som aktivt bearbetar din funktion:

let _startTime = ago(20m); //Adjust start time as needed
let _endTime = now(); //Adjust end time as needed
let bins = 1s; //Adjust bin as needed - this will give per second results
requests 
| where operation_Name == 'EventHubsTrigger' //Replace with the name of the function in the function app that you are analyzing
| where timestamp between(_startTime .. _endTime)
| make-series dcount(cloud_RoleInstance) default=0 on timestamp from _startTime to _endTime step bins
| render columnchart

Visa kostnader

Eftersom du kan justera din app för att justera prestanda jämfört med driftskostnader är det viktigt att spåra kostnaderna för att köra appen i Flex Consumption-planen.

Så här visar du de aktuella kostnaderna:

  1. På funktionsappsidan i Azure-portalen väljer du länken resursgrupp.

  2. På resursgruppssidan väljer duKostnadsanalys för >.

  3. Granska aktuella kostnader och kostnadsbana för själva appen.

  4. Du kan också välja Cost Management>Alerts och sedan + Lägg till för att skapa en ny avisering för appen.

Finjustera din app

Flex Consumption-planen innehåller flera inställningar som du kan justera för att förfina appens prestanda. Faktiska prestanda och kostnader kan variera beroende på dina appspecifika arbetsbelastningsmönster och konfiguration. Till exempel kan högre minnesinstansstorlekar förbättra prestanda för minnesintensiva åtgärder, men till en högre kostnad per aktiv period.

Här följer några justeringar som du kan göra för att finjustera prestanda jämfört med kostnad: