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.

Viktigt!

Flex Consumption-planen är för närvarande i förhandsversion.

Förutsättningar

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.

    az functionapp list-flexconsumption-locations --output 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 kommandot ovan 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. Den specifika språkkörningsversion som används är en version som för närvarande stöds i förhandsversionen.

    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

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:

Viktigt!

Distribution till en befintlig funktionsapp skriver alltid över innehållet i appen i Azure.

  1. I kommandopaletten anger du och väljer sedan Azure Functions: Deploy to Function App (Azure Functions: Distribuera till funktionsapp).

  2. Välj den funktionsapp som du nyss skapade. När du uppmanas att skriva över tidigare distributioner väljer du Distribuera för att distribuera funktionskoden till den nya funktionsappresursen.

  3. När distributionen är klar väljer du Visa utdata för att visa resultatet av skapandet och distributionen, inklusive de Azure-resurser som du skapade. Om du missar meddelandet väljer du klockikonen i det nedre högra hörnet för att se det igen.

    Skärmbild av fönstret Visa utdata.

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/<RESOURCER_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 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 undernätsstorleken 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 niska veze värde som används av Functions-körningen för att underhålla din app. Niska veze 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:

  • När du använder en niska veze för att ansluta till distributionslagringskontot måste den programinställning som innehåller niska veze 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 följande ytterligare alternativ som anpassar distributionslagringen:

Parameter Description
--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 niska veze till distributionslagringskontot. När du använder 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_ACCCOUNT_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_ACCCOUNT_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 Instansminne.

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 4 096 MB:

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

Ange antal always ready-instanser

Du kan ange ett 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, durable eller blob som namn på namnvärdeparinställningen 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.

Använd parametern --always-ready-instances med az functionapp create kommandot för att definiera en eller flera alltid redo instansbeteckningar. 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.

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

Under förhandsversionen kan du bara köra flexförbrukningsplanen i valda regioner. 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.

    az functionapp list-flexconsumption-locations --output table
    

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