Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel leest u hoe u functie-apps maakt die worden gehost in het Flex Consumption-abonnement in Azure Functions. U ziet ook hoe u bepaalde functies van een gehoste app van een Flex Consumption-abonnement beheert.
Resources voor functie-apps zijn langaugespecifiek. Zorg ervoor dat u aan het begin van het artikel uw voorkeurstaal voor codeontwikkeling kiest.
Vereisten
Een Azure-account met een actief abonnement. Als u dat nog niet hebt, kunt u gratis een account maken.
Azure CLI: wordt gebruikt voor het maken en beheren van resources in Azure. Wanneer u de Azure CLI op uw lokale computer gebruikt, moet u versie 2.60.0 of een latere versie gebruiken. U kunt ook Azure Cloud Shell gebruiken, die de juiste Versie van Azure CLI heeft.
Visual Studio Code: wordt gebruikt voor het maken en ontwikkelen van apps, het maken van Azure-resources en het implementeren van codeprojecten in Azure. Wanneer u Visual Studio Code gebruikt, moet u ook de nieuwste Azure Functions-extensie installeren. U kunt ook het Azure Tools-extensiepakket installeren.
Hoewel u geen Flex Consumption-plan-app hoeft te maken, hebt u een codeproject nodig om een nieuwe functie-app te kunnen implementeren en valideren. Voltooi het eerste deel van een van deze quickstart-artikelen, waarin u een codeproject maakt met een door HTTP geactiveerde functie:
- Een Azure Functions-project maken vanaf de opdrachtregel
- Een Azure Functions-project maken met Visual Studio Code
Als u een app wilt maken in een nieuw Flex Consumption-abonnement tijdens een Maven-implementatie, moet u uw lokale app-project maken en vervolgens het pom.xml-bestand van het project bijwerken. Zie Een Java Flex Consumption-app maken met Behulp van Maven voor meer informatie
Ga terug naar dit artikel nadat u het lokale project hebt gemaakt en uitgevoerd, maar voordat u wordt gevraagd Om Azure-resources te maken. In de volgende sectie maakt u de functie-app en andere Azure-resources.
Een Flex Consumption-app maken
In deze sectie wordt beschreven hoe u een functie-app maakt in het Flex Consumption-abonnement met behulp van de Azure CLI, Azure Portal of Visual Studio Code. Zie de opslagplaats flexverbruik voor een voorbeeld van het maken van een app in een Flex Consumption-abonnement met bicep/ARM-sjablonen.
U kunt deze sectie overslaan als u ervoor kiest om in plaats daarvan uw app te maken en te implementeren met behulp van Maven.
Als u uw functiecode wilt ondersteunen, moet u drie resources maken:
- Een resourcegroep, een logische container voor gerelateerde resources.
- Een opslagaccount dat wordt gebruikt voor het onderhouden van de status en andere informatie over uw functies.
- Een functie-app in het Flex Consumption-abonnement, dat de omgeving biedt voor het uitvoeren van uw functiecode. Een functie-app wordt toegewezen aan uw lokale functieproject en stelt u in staat om functies te groeperen als een logische eenheid voor eenvoudiger beheer, implementatie en het delen van resources in het Flex Consumption-plan.
Als u dit nog niet hebt gedaan, meldt u zich aan bij Azure:
az loginMet de
az loginopdracht meldt u zich aan bij uw Azure-account.Gebruik de
az functionapp list-flexconsumption-locationsopdracht om de lijst met regio's te bekijken die momenteel flexverbruik in alfabetische volgorde ondersteunen.az functionapp list-flexconsumption-locations --query "sort_by(@, &name)[].{Region:name}" -o table
Maak een resourcegroep in een van de momenteel ondersteunde regio's:
az group create --name <RESOURCE_GROUP> --location <REGION>Vervang in de vorige opdracht door
<RESOURCE_GROUP>een waarde die uniek is in uw abonnement en<REGION>door een van de momenteel ondersteunde regio's. Met de opdracht az group create maakt u een resourcegroep.Maak een algemeen opslagaccount in de resourcegroep en regio:
az storage account create --name <STORAGE_NAME> --location <REGION> --resource-group <RESOURCE_GROUP> --sku Standard_LRS --allow-blob-public-access falseVervang
<STORAGE_NAME>in het vorige voorbeeld door een naam die voor u passend is en die uniek is in Azure Storage. Namen mogen drie tot 24 tekens bevatten en u mag alleen kleine letters gebruiken. MetStandard_LRSgeeft u een account voor algemeen gebruik op dat wordt ondersteund door Functions. Met de opdracht az storage account create maakt u het opslagaccount.Belangrijk
Het opslagaccount wordt gebruikt voor het opslaan van belangrijke app-gegevens, soms inclusief de toepassingscode zelf. U moet de toegang van andere apps en gebruikers tot het opslagaccount beperken.
De functie-app maken in Azure:
az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime dotnet-isolated --runtime-version 8.0C#-apps die in het proces worden uitgevoerd, worden momenteel niet ondersteund wanneer ze worden uitgevoerd in een Flex Consumption-abonnement.
az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime java --runtime-version 17Voor Java-apps wordt Java 11 momenteel ook ondersteund.
az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime node --runtime-version 20az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime python --runtime-version 3.11Voor Python-apps wordt Python 3.10 momenteel ook ondersteund.
az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime powershell --runtime-version 7.4In dit voorbeeld vervangt u zowel
<RESOURCE_GROUP>als<STORAGE_NAME>door de resourcegroep en de naam van het account dat u in de vorige stap hebt gebruikt. Vervang ook door<APP_NAME>een wereldwijd unieke naam die geschikt is voor u. Het<APP_NAME>is ook het standaarddomein domain name server (DNS) voor de functie-app. Metaz functionapp createde opdracht maakt u de functie-app in Azure.Met deze opdracht maakt u een functie-app die wordt uitgevoerd in het Flex Consumption-abonnement.
Omdat u de app hebt gemaakt zonder altijd gereede exemplaren op te geven, worden er alleen kosten in rekening gebracht bij het actief uitvoeren van functies. Met de opdracht maakt u ook een gekoppeld Azure-toepassing Insights-exemplaar in dezelfde resourcegroep, waarmee u uw functie-app kunt bewaken en logboeken kunt bekijken. Zie Monitor Azure Functions (Azure Functions bewaken) voor meer informatie.
Uw codeproject implementeren
Voor implementatie gebruiken Flex Consumption-plan-apps een Blob Storage-container om .zip pakketbestanden te hosten die uw projectcode bevatten en alle bibliotheken die nodig zijn om uw app uit te voeren. Raadpleeg Implementatie voor meer informatie.
U kunt deze sectie overslaan als u ervoor kiest om in plaats daarvan uw app te maken en te implementeren met behulp van Maven.
U kunt ervoor kiezen om uw projectcode te implementeren in een bestaande functie-app met behulp van verschillende hulpprogramma's:
U kunt de Azure CLI gebruiken om een implementatiepakketbestand te uploaden naar de implementatieshare voor de functie-app in Azure. Hiervoor moet u een .zip pakketbestand maken dat kan worden uitgevoerd wanneer het pakket aan uw app is gekoppeld.
Dit pakketbestand moet alle builduitvoerbestanden en vereiste bibliotheken bevatten die nodig zijn om uw project uit te voeren.
Voor projecten met een groot aantal bibliotheken moet u de hoofdmap van uw projectbestand verpakken en een externe build aanvragen.
Voor Python-projecten moet u de hoofdmap van uw projectbestand verpakken en altijd een externe build aanvragen. Als u een externe build gebruikt, voorkomt u potentiële problemen die kunnen optreden wanneer u een project in Windows bouwt om te worden geïmplementeerd in Linux.
Bouw het codeproject met behulp van het ontwikkelhulpprogramma van uw voorkeur.
Maak een .zip-bestand dat de uitvoer van de buildmap bevat. Zie Projectstructuur voor meer informatie.
Meld u indien nodig aan bij uw Azure-account en selecteer het actieve abonnement met behulp van de
az loginopdracht.az loginVoer de
az functionapp deployment source config-zipopdracht uit om het softwarepakket in de relatieve<FILE_PATH>te implementeren.az functionapp deployment source config-zip --src <FILE_PATH> --name <APP_NAME> --resource-group <RESOURCE_GROUP>
Bouw het codeproject met behulp van het ontwikkelhulpprogramma van uw voorkeur.
Maak een .zip-bestand dat de uitvoer van de buildmap bevat. Zie Mapstructuur voor meer informatie.
Meld u indien nodig aan bij uw Azure-account en selecteer het actieve abonnement met behulp van de
az loginopdracht.az loginVoer de
az functionapp deployment source config-zipopdracht uit om het softwarepakket in de relatieve<FILE_PATH>te implementeren.az functionapp deployment source config-zip --src <FILE_PATH> --name <APP_NAME> --resource-group <RESOURCE_GROUP>
Maak een .zip-bestand dat de hoofdmap van uw codeproject bevat. Zie Mapstructuur voor meer informatie.
Meld u indien nodig aan bij uw Azure-account en selecteer het actieve abonnement met behulp van de
az loginopdracht.az loginVoer de
az functionapp deployment source config-zipopdracht uit om het softwarepakket in de relatieve<FILE_PATH>te implementeren.az functionapp deployment source config-zip --src <FILE_PATH> --name <APP_NAME> --resource-group <RESOURCE_GROUP>
Maak een .zip-bestand dat de hoofdmap van uw codeproject bevat. Zie Mapstructuur voor meer informatie.
Meld u indien nodig aan bij uw Azure-account en selecteer het actieve abonnement met behulp van de
az loginopdracht.az loginVoer de
az functionapp deployment source config-zipopdracht uit om het softwarepakket in de relatieve<FILE_PATH>te implementeren.az functionapp deployment source config-zip --src <FILE_PATH> --name <APP_NAME> --resource-group <RESOURCE_GROUP> --build-remote trueZorg ervoor dat u
--build-remote trueinstelt om een externe build uit te voeren.
Maak een .zip-bestand dat de hoofdmap van uw codeproject bevat. Zie Mapstructuur voor meer informatie.
Meld u indien nodig aan bij uw Azure-account en selecteer het actieve abonnement met behulp van de
az loginopdracht.az loginVoer de
az functionapp deployment source config-zipopdracht uit om het softwarepakket in de relatieve<FILE_PATH>te implementeren.az functionapp deployment source config-zip --src <FILE_PATH> --name <APP_NAME> --resource-group <RESOURCE_GROUP> --build-remote trueZorg ervoor dat u
--build-remote trueinstelt om een externe build uit te voeren.
Uw app maken en implementeren met Behulp van Maven
U kunt Maven gebruiken om een door Flex Consumption gehoste functie-app en vereiste resources te maken tijdens de implementatie door het pom.xml-bestand te wijzigen.
Maak een Java-codeproject door het eerste deel van een van deze quickstart-artikelen te voltooien:
Open in uw Java-codeproject het bestand pom.xml en breng deze wijzigingen aan om uw functie-app te maken in het Flex Consumption-abonnement:
Wijzig de waarde van
<properties>.<azure.functions.maven.plugin.version>in1.34.0.Voeg in de
<plugin>.<configuration>sectie voor het element hetazure-functions-maven-pluginvolgende toe of verwijder opmerkingen<pricingTier>:<pricingTier>Flex Consumption</pricingTier>
(Optioneel) Pas het Flex Consumption-abonnement in uw Maven-implementatie aan door ook deze elementen in de
<plugin>.<configuration>sectie op te slaan: .-
<instanceSize>- stelt de geheugengrootte van het exemplaar voor de functie-app in. De standaardwaarde is2048. -
<maximumInstances>- stelt de hoogste waarde in voor het maximumaantal exemplaren van de functie-app. -
<alwaysReadyInstances>- stelt het aantal altijd gereede exemplaren in met onderliggende elementen voor HTTP-triggergroepen (<http>), Durable Functions-groepen (<durable>) en andere specifieke triggers (<my_function>). Wanneer u het aantal exemplaren groter dan nul instelt, worden er kosten in rekening gebracht voor deze exemplaren, ongeacht of uw functies worden uitgevoerd of niet. Zie Facturering voor meer informatie.
-
Meld u aan bij uw Azure-abonnement met behulp van de Azure CLI voordat u deze kunt implementeren.
az loginMet de
az loginopdracht meldt u zich aan bij uw Azure-account.Gebruik de volgende opdracht om uw codeproject te implementeren in een nieuwe functie-app in Flex Consumption.
mvn azure-functions:deployMaven gebruikt instellingen in de pom.xml-sjabloon om uw functie-app te maken in een Flex Consumption-abonnement in Azure, samen met de andere vereiste resources. Als deze resources al bestaan, wordt de code geïmplementeerd in uw functie-app, en wordt alle bestaande code overschreven.
Integratie van virtuele netwerken inschakelen
U kunt integratie van virtuele netwerken inschakelen voor uw app in een Flex Consumption-abonnement. In de voorbeelden in deze sectie wordt ervan uitgegaan dat u al een virtueel netwerk met subnet in uw account hebt gemaakt. U kunt integratie van virtuele netwerken inschakelen wanneer u uw app maakt of op een later tijdstip.
Belangrijk
Het Flex Consumption-abonnement biedt momenteel geen ondersteuning voor subnetten met namen die onderstrepingstekens (_) bevatten.
Virtuele netwerken inschakelen wanneer u uw app maakt:
U kunt integratie van virtuele netwerken inschakelen door de az functionapp create opdracht uit te voeren en de --vnet en --subnet parameters op te geven.
Maak het virtuele netwerk en subnet als u dit nog niet hebt gedaan.
Voer stap 1-4 uit in Een Flex Consumption-app maken om de resources te maken die nodig zijn voor uw app.
Voer de
az functionapp createopdracht uit, inclusief de--vneten--subnetparameters, zoals in dit voorbeeld: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>De
<VNET_RESOURCE_ID>waarde is de resource-id voor het virtuele netwerk, die de volgende indeling heeft:/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Network/virtualNetworks/<VNET_NAME>U kunt deze opdracht gebruiken om een lijst met virtuele netwerk-id's op te halen, gefilterd op<RESOURCE_GROUP>:az network vnet list --resource-group <RESOURCE_GROUP> --output tsv --query "[]".id
Zie de volgende bronnen voor end-to-end-voorbeelden van het maken van apps in Flex Consumption met integratie van virtuele netwerken:
- Flexverbruik: van HTTP naar Event Hubs met integratie van virtuele netwerken
- Flexibele consumptie: geactiveerd vanuit Service Bus via integratie van een virtueel netwerk
Virtuele netwerkintegratie in een bestaande app wijzigen of verwijderen:
Gebruik de az functionapp vnet-integration add opdracht om integratie van virtuele netwerken in te schakelen voor een bestaande functie-app:
az functionapp vnet-integration add --resource-group <RESOURCE_GROUP> --name <APP_NAME> --vnet <VNET_RESOURCE_ID> --subnet <SUBNET_NAME>
Gebruik de az functionapp vnet-integration remove opdracht om de integratie van virtuele netwerken in uw app uit te schakelen:
az functionapp vnet-integration remove --resource-group <RESOURCE_GROUP> --name <APP_NAME>
Gebruik de az functionapp vnet-integration list opdracht om de huidige integraties van virtuele netwerken voor uw app weer te geven:
az functionapp vnet-integration list --resource-group <RESOURCE_GROUP> --name <APP_NAME>
Wanneer u een subnet kiest, zijn deze overwegingen van toepassing:
- het subnet dat u kiest, kan nog niet worden gebruikt voor andere doeleinden, zoals met privé-eindpunten of service-eindpunten, of worden gedelegeerd aan een ander hostingabonnement of -service.
- U kunt hetzelfde subnet niet delen tussen een Container Apps-omgeving en een Flex Consumption-app.
- U kunt hetzelfde subnet delen met meer dan één app die wordt uitgevoerd in een Flex Consumption-abonnement. Omdat de netwerkresources worden gedeeld in alle apps, kan één functie-app van invloed zijn op de prestaties van anderen in hetzelfde subnet.
- In een Flexverbruik-abonnement kan één functie-app maximaal 40 IP-adressen gebruiken, zelfs wanneer de app meer dan 40 exemplaren schaalt. Hoewel deze vuistregel handig is bij het schatten van de grootte van het subnet dat u nodig hebt, wordt deze niet strikt afgedwongen.
Implementatie-instellingen configureren
In het Flex Consumption-plan wordt het implementatiepakket met de code van uw app onderhouden in een Azure Blob Storage-container. Implementaties gebruiken standaard hetzelfde opslagaccount (AzureWebJobsStorage) en verbindingsreeks waarde die door de Functions-runtime wordt gebruikt om uw app te onderhouden. De verbindingsreeks wordt opgeslagen in de DEPLOYMENT_STORAGE_CONNECTION_STRING toepassingsinstelling. U kunt in plaats daarvan echter een blobcontainer in een afzonderlijk opslagaccount aanwijzen als de implementatiebron voor uw code. U kunt ook de verificatiemethode wijzigen die wordt gebruikt voor toegang tot de container.
Een aangepaste implementatiebron moet voldoen aan deze criteria:
- Het opslagaccount moet al bestaan.
- De container die moet worden gebruikt voor implementaties, moet ook bestaan.
- Wanneer meer dan één app hetzelfde opslagaccount gebruikt, moet elk een eigen implementatiecontainer hebben. Als u een unieke container voor elke app gebruikt, voorkomt u dat de implementatiepakketten worden overschreven. Dit gebeurt als apps dezelfde container hebben gedeeld.
Houd bij het configureren van implementatieopslagverificatie rekening met de volgende overwegingen:
- Als best practice voor beveiliging moet u beheerde identiteiten gebruiken wanneer u vanuit uw apps verbinding maakt met Azure Storage. Zie Verbindingen voor meer informatie.
- Wanneer u een verbindingsreeks gebruikt om verbinding te maken met het opslagaccount voor de implementatie, moet de toepassingsinstelling met de verbindingsreeks al bestaan.
- Wanneer u een door de gebruiker toegewezen beheerde identiteit gebruikt, wordt de opgegeven identiteit gekoppeld aan de functie-app. De
Storage Blob Data Contributorrol die is gericht op het opslagaccount voor de implementatie, wordt ook toegewezen aan de identiteit. - Wanneer u een door het systeem toegewezen beheerde identiteit gebruikt, wordt er een identiteit gemaakt wanneer er nog geen geldige door het systeem toegewezen identiteit bestaat in uw app. Wanneer er een door het systeem toegewezen identiteit bestaat, wordt de
Storage Blob Data Contributorrol binnen het bereik van het implementatieopslagaccount ook toegewezen aan de identiteit.
Implementatie-instellingen configureren wanneer u uw functie-app maakt in het Flex Consumption-abonnement:
Gebruik de az functionapp create opdracht en geef deze extra opties op waarmee de implementatieopslag wordt aangepast:
| Kenmerk | Beschrijving |
|---|---|
--deployment-storage-name |
De naam van het opslagaccount voor de implementatie. |
--deployment-storage-container-name |
De naam van de container in het account die het implementatiepakket van uw app bevat. |
--deployment-storage-auth-type |
Het verificatietype dat moet worden gebruikt om verbinding te maken met het opslagaccount voor de implementatie. Geaccepteerde waarden zijn onder andere StorageAccountConnectionString, UserAssignedIdentityen SystemAssignedIdentity. |
--deployment-storage-auth-value |
Wanneer u deze parameter gebruiktStorageAccountConnectionString, wordt deze parameter ingesteld op de naam van de toepassingsinstelling die de verbindingsreeks bevat voor het implementatieopslagaccount. Wanneer u deze parameter instelt UserAssignedIdentity, wordt deze parameter ingesteld op de naam van de resource-id van de identiteit die u wilt gebruiken. |
In dit voorbeeld wordt een functie-app gemaakt in het Flex Consumption-abonnement met een afzonderlijk opslagaccount voor implementatie en een door de gebruiker toegewezen identiteit:
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>
U kunt ook de configuratie van de implementatieopslag voor een bestaande app wijzigen.
Gebruik de az functionapp deployment config set opdracht om de configuratie van de implementatieopslag te wijzigen:
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>
Exemplaargeheugen configureren
De geheugengrootte van het exemplaar dat door uw Flex Consumption-abonnement wordt gebruikt, kan expliciet worden ingesteld wanneer u uw app maakt. Zie Instantiegrootten voor meer informatie over ondersteunde grootten.
Een instantiegeheugengrootte instellen die verschilt van de standaardgrootte bij het maken van uw app:
Geef de parameter op in de --instance-memoryaz functionapp create opdracht. In dit voorbeeld wordt een C#-app gemaakt met een instantiegrootte van 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
U kunt op elk gewenst moment de instelling voor de geheugengrootte van het exemplaar wijzigen die door uw app wordt gebruikt.
In dit voorbeeld wordt de az functionapp scale config set opdracht gebruikt om de instelling voor de geheugengrootte van het exemplaar te wijzigen in 512 MB:
az functionapp scale config set --resource-group <resourceGroup> --name <APP_NAME> --instance-memory 512
Het aantal exemplaren dat altijd gereed is instellen
U kunt een specifiek aantal altijd gereede exemplaren instellen voor de schaalgroepen per functie of afzonderlijke functies om uw functies geladen en gereed te houden voor uitvoering. Er zijn drie speciale groepen, zoals in schaalaanpassing per functie:
-
http- alle door HTTP geactiveerde functies in de app worden samen geschaald in hun eigen exemplaren. -
durable- alle durable triggered functies (Orchestration, Activity, Entity) in de app worden samen geschaald in hun eigen exemplaren. -
blob- alle door de blob (Event Grid) geactiveerde functies in de app worden samen geschaald in hun eigen exemplaren.
Gebruik http, durableof blob als de naam voor de instelling voor het waardepaar van de naam om altijd kant-en-klare aantallen voor deze groepen te configureren. Voor alle andere functies in de app moet u altijd gereed zijn voor elke afzonderlijke functie met behulp van de indeling function:<FUNCTION_NAME>=n.
Als u een of meer altijd gereede instantieaanduidingen wilt definiëren, gebruikt u de --always-ready-instances parameter met de az functionapp create opdracht. In dit voorbeeld wordt het aantal exemplaren dat altijd gereed is voor alle door HTTP geactiveerde functies ingesteld op 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
In dit voorbeeld wordt het aantal altijd gereede exemplaren voor alle Durable Trigger-functies 3 ingesteld op en wordt het aantal altijd gereede exemplaren 2 ingesteld op voor een door Service Bus geactiveerde functie met de naam 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
U kunt ook altijd kant-en-klare exemplaren voor een bestaande app wijzigen door instantieaanduidingen toe te voegen of te verwijderen of door het aantal bestaande instantiesaanduidingen te wijzigen.
In dit voorbeeld wordt de az functionapp scale config always-ready set opdracht gebruikt om het aantal exemplaren dat altijd gereed is voor de groep HTTP-triggers te wijzigen in 10:
az functionapp scale config always-ready set --resource-group <RESOURCE_GROUP> --name <APP_NAME> --settings http=10
Als u altijd gereede exemplaren wilt verwijderen, gebruikt u de az functionapp scale config always-ready delete opdracht, zoals in dit voorbeeld waarmee alle altijd gereede exemplaren uit de groep HTTP-triggers en ook een functie met de naam hello_world:
az functionapp scale config always-ready delete --resource-group <RESOURCE_GROUP> --name <APP_NAME> --setting-names http function:hello_world
Limieten voor HTTP-gelijktijdigheid instellen
Tenzij u specifieke limieten instelt, worden standaardinstellingen voor HTTP-gelijktijdigheid voor Flex Consumption-abonnementsapps bepaald op basis van de instelling voor de grootte van uw exemplaar. Zie gelijktijdigheid van HTTP-triggers voor meer informatie.
U kunt als volgt HTTP-gelijktijdigheidslimieten instellen voor een bestaande app:
Gebruik de az functionapp scale config set opdracht om specifieke HTTP-gelijktijdigheidslimieten in te stellen voor uw app, ongeacht de grootte van het exemplaar.
az functionapp scale config set --resource-group <RESOURCE_GROUP> --name <APP_NAME> --trigger-type http --trigger-settings perInstanceConcurrency=10
In dit voorbeeld wordt het gelijktijdigheidsniveau van de HTTP-trigger ingesteld op 10. Nadat u specifiek een HTTP-gelijktijdigheidswaarde hebt ingesteld, blijft die waarde behouden ondanks eventuele wijzigingen in de instelling voor de instantiegrootte van uw app.
Strategie voor site-update instellen
Het Flex Consumption-plan ondersteunt op unieke wijze twee verschillende site-updatestrategieën die bepalen hoe uw functie-app code-implementaties en configuratiewijzigingen verwerkt. Flex Consumption-plan-apps maken standaard gebruik van de Recreate-strategie, waarbij momenteel draaiende functies worden beëindigd tijdens implementaties. Als u implementaties zonder downtime wilt inschakelen, kunt u in plaats daarvan de RollingUpdate strategie configureren. Zie Site-updatestrategieën in Flex Consumption voor meer informatie.
Opmerking
Configuratie van site-updatestrategie is momenteel beschikbaar als openbare preview en is alleen beschikbaar via Bicep- of ARM-sjablonen. U kunt deze instelling niet configureren met behulp van de Azure CLI, Azure Portal of Visual Studio Code.
Configuratie van site-updatestrategie wordt momenteel niet ondersteund in de Azure CLI. Gebruik Bicep- of ARM-sjablonen zoals beschreven in site-update strategie configureren.
Momenteel ondersteunde regio's weergeven
De lijst met regio's weergeven die momenteel flexverbruiksabonnementen ondersteunen:
Als u dit nog niet hebt gedaan, meldt u zich aan bij Azure:
az loginMet de
az loginopdracht meldt u zich aan bij uw Azure-account.Gebruik de
az functionapp list-flexconsumption-locationsopdracht om de lijst met regio's te bekijken die momenteel flexverbruik in alfabetische volgorde ondersteunen.az functionapp list-flexconsumption-locations --query "sort_by(@, &name)[].{Region:name}" -o table
Wanneer u een app in Azure Portal maakt of visual Studio Code gebruikt, worden momenteel niet-ondersteunde regio's uit de regiolijst gefilterd.
Uw app bewaken in Azure
Azure Monitor biedt deze afzonderlijke sets met metrische gegevens waarmee u beter begrijpt hoe uw functie-app wordt uitgevoerd in Azure:
- Metrische platformgegevens: biedt inzichten op infrastructuurniveau
- Application Insights: biedt inzichten op codeniveau, waaronder traceringen en foutenlogboeken.
Als u dit nog niet hebt gedaan, moet u Application Insights in uw app inschakelen om het volgende te kunnen doen:
- Gedetailleerde uitvoeringstijden en afhankelijkheden bijhouden
- Prestaties van afzonderlijke functies bewaken
- Fouten en uitzonderingen analyseren
- Metrische platformgegevens correleren met toepassingsgedrag met aangepaste query's
Zie Monitor Azure Functions (Azure Functions bewaken) voor meer informatie.
Ondersteunde metrische gegevens
Voer dit script uit om alle metrische platformgegevens weer te geven die momenteel beschikbaar zijn voor uw 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
Vervang in dit voorbeeld <RESOURCE_GROUP> respectievelijk <APP_NAME> de namen van uw resourcegroep en functie-app. Met dit script wordt de volledig gekwalificeerde app-id opgehaald en worden de beschikbare metrische platformgegevens in een tabel geretourneerd.
Metrische gegevens weergeven
U kunt de huidige metrische gegevens bekijken in Azure Portal of met behulp van de Azure CLI.
In Azure Portal kunt u ook waarschuwingen voor metrische gegevens maken en grafieken en andere rapporten vastmaken aan dashboards in de portal.
Gebruik dit script om een rapport te genereren van de huidige metrische gegevens voor uw 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
Zie Azure Functions bewaken voor meer informatie over metrische gegevens voor Azure Functions.
Logboeken weergeven
Wanneer uw app is verbonden met Application Insights, kunt u de prestaties van uw app beter analyseren en problemen tijdens de uitvoering oplossen.
- Prestaties gebruiken om reactietijden en afhankelijkheden te analyseren
- Gebruik Fouten om eventuele fouten te identificeren die optreden na de migratie
- Maak aangepaste query's in Logboeken om het gedrag van de functie te analyseren. Voorbeeld:
Gebruik deze query om de slagingspercentages per exemplaar te vergelijken:
requests
| where timestamp > ago(7d)
| summarize successCount=countif(success == true), failureCount=countif(success == false) by bin(timestamp, 1h), cloud_RoleName
| render timechart
Gebruik deze query om het aantal exemplaren te analyseren dat actief uw functie heeft verwerkt:
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
Kosten weergeven
Omdat u uw app kunt afstemmen om de prestaties en de operationele kosten aan te passen, is het belangrijk om de kosten bij te houden die zijn gekoppeld aan het uitvoeren van uw app in het Flex Consumption-abonnement.
De huidige kosten weergeven:
Selecteer op de pagina van uw functie-app in Azure Portal de koppeling naar de resourcegroep.
Selecteer op de pagina van de resourcegroep Kostenbeheer>kostenanalyse.
Bekijk de huidige kosten en kostentrajecten van de app zelf.
Desgewenst selecteer Cost Management>waarschuwingen en vervolgens + Toevoegen om een nieuwe waarschuwing voor de app te maken.
Uw app verfijnen
Het Flex Consumption-abonnement biedt verschillende instellingen die u kunt afstemmen om de prestaties van uw app te verfijnen. De werkelijke prestaties en kosten kunnen variëren op basis van uw app-specifieke workloadpatronen en -configuratie. Zo kunnen hogere geheugeninstantiegrootten de prestaties voor geheugenintensieve bewerkingen verbeteren, maar met een hogere kosten per actieve periode.
Hier volgen enkele aanpassingen die u kunt aanbrengen om de prestaties af te stemmen ten opzichte van de kosten:
- Pas gelijktijdigheidsinstellingen aan om de doorvoer per exemplaar te maximaliseren.
- Kies de juiste geheugengrootte voor uw workload. Hogere geheugengrootten kosten meer, maar kunnen de prestaties verbeteren.