Dela via


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 langaugespecifika. 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 lagringsplatsen flexförbrukning.

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 funktionsapp i Flex Consumption-planen, som tillhandahåller miljön för körning av funktionskoden. 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 stöds för närvarande:

    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 du <STORAGE_NAME> med ett namn som är lämpligt för dig och unikt i Azure Storage. Namn får endast innehålla siffror med tre till 24 tecken och gemener. Standard_LRS anger ett konto för generell användning som stöds av Functions. 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 
    

    Java 11 stöds också för närvarande för Java-appar.

    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 funktionsappen i Azure. För att göra detta 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 bör du paketera roten på projektfilen och begära en fjärrversion.

För Python-projekt bör du paketera roten för projektfilen och alltid begära en fjärrversion. 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 az login med kommandot .

    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 az login med kommandot .

    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 az login med kommandot .

    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 az login med kommandot .

    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 az login med kommandot .

    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 Maven

Du kan använda Maven för att skapa en Flex Consumption-värdbaserad funktionsapp och nödvändiga resurser under distributionen 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 Java-kodprojektet öppnar du filen pom.xml och gör dessa ändringar för att skapa din funktionsapp 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 debiteras 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 de andra nödvändiga resurserna. Om dessa resurser redan finns distribueras koden till funktionsappen och skriver över befintlig kod.

Aktivera integrering av virtuellt nätverk

Du kan aktivera integrering av virtuella nätverk för din app i en Flex Consumption-plan. Exemplen i det här avsnittet förutsätter att du redan har skapat ett virtuellt nätverk med undernät i ditt konto. Du kan aktivera integrering av virtuella nätverk när du skapar din app eller vid ett senare tillfälle.

Viktigt!

Flex Consumption-planen stöder för närvarande inte undernät med namn som innehåller understreck (_) tecken.

Så här aktiverar du virtuella nätverk när du skapar din app:

Du kan aktivera integrering av virtuella nätverk genom att az functionapp create köra kommandot och inkludera parametrarna --vnet och --subnet .

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

  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:

Så här ändrar eller tar du bort integrering av virtuella nätverk i 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>

När du väljer ett undernät gäller följande överväganden:

  • Det undernät du väljer kan inte redan användas för andra syften, till exempel med privata slutpunkter eller tjänstslutpunkter, eller delegeras till någon annan värdplan eller tjänst.
  • Du kan inte dela samma undernät mellan en Container Apps-miljö och en Flex Consumption-app.
  • Du kan dela samma undernät med fler än en app som körs i en Flex Consumption-plan. Eftersom nätverksresurserna delas mellan alla appar kan en funktionsapp påverka andras prestanda i samma undernät.
  • I en Flex-förbrukningsplan kan en enskild funktionsapp använda upp till 40 IP-adresser, även när appen skalar över 40 instanser. Den här tumregeln är användbar när du beräknar den undernätsstorlek du behöver, men den tillämpas inte strikt.

Konfigurera inställningar för distribution

I Flex Consumption-planen underhålls distributionspaketet som innehåller appens kod i en Azure Blob Storage-container. Som standard använder distributioner samma lagringskonto (AzureWebJobsStorage) och anslutningssträng värde som används av Functions-körningen för att underhålla din app. Anslutningssträng lagras i programinställningenDEPLOYMENT_STORAGE_CONNECTION_STRING. Du kan dock i stället 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 var och en ha en egen distributionscontainer. Att använda en unik container för varje app förhindrar att distributionspaketen skrivs över, vilket skulle inträffa om appar delade samma container.

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

  • Som bästa säkerhet bör du använda 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änkas den angivna identiteten till funktionsappen. Rollen Storage Blob Data Contributor som är begränsad till distributionslagringskontot tilldelas också till identiteten.
  • När du använder en systemtilldelad hanterad identitet skapas en identitet när en giltig systemtilldelad identitet inte redan finns i din app. När det finns en systemtilldelad identitet tilldelas även rollen Storage Blob Data Contributor 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 StorageAccountConnectionStringanges den här parametern till namnet på den programinställning som innehåller anslutningssträng till distributionslagringskontot. När du anger UserAssignedIdentityanges 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

Den minnesstorlek för instansen som används av din Flex Consumption-plan kan anges uttryckligen 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 always ready-instanser

Du kan 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 ihop 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 måste du konfigurera alltid redo för varje enskild funktion med 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 5:

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 bestäms standardvärden för HTTP-samtidighet för Flex Consumption Plan-appar baserat på instansstorleksinställningen. Mer information finns i HTTP-utlösarens samtidighet.

Så här kan du ange 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 bibehålls 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.

Konfiguration av platsuppdateringsstrategi stöds för närvarande inte i Azure CLI. Använd Bicep- eller ARM-mallar enligt beskrivningen i Konfigurera webbplatsuppdateringsstrategi.

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

Så här visar du listan över regioner som för närvarande stöder Flex Consumption-planer:

  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 Portal eller med hjälp av Visual Studio Code filtreras för närvarande regioner som inte stöds från regionlistan.

Ö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årnings- och felloggar.

Om du inte redan har gjort det bör du aktivera Application Insights i din app för att kunna:

  • Spåra detaljerade körningstider och beroenden
  • Övervaka prestanda för enskilda funktioner
  • Analysera fel och undantag
  • Korrelera plattformsmått med programbeteende med 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 ä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ätter du <RESOURCE_GROUP> och <APP_NAME> med namnen på din resursgrupp respektive 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)

appId=$(az functionapp show --name func-fuxigh6c255de --resource-group exampleRG --query id -o tsv)

echo -e "\nAlways-ready and on-emand 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-emand 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 appen är ansluten till Application Insights kan du analysera appens prestanda bättre och felsöka problem under körningen.

  • Använda "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. Till exempel:

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: