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 taalspecifiek. 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 Flex Consumption-repository voor een voorbeeld van het maken van een app in een Flex Consumption-plan 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 die worden vermeld door de opdracht in de vorige stap.
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 in het vorige voorbeeld door
<STORAGE_NAME>een naam die geschikt is voor u en uniek in Azure Storage. Namen mogen drie tot 24 tekens bevatten die bestaan uit alleen cijfers en kleine letters.Standard_LRShiermee geeft u een algemeen account op dat door Azure Functions wordt ondersteund op basis van de vereisten van het opslagaccount. 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 17az 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<APP_NAME>door een wereldwijd unieke naam die bij u past. Het<APP_NAME>is ook de standaard domeinnaamserver (DNS) voor de function 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 voor meer informatie Monitor Azure Functions.
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 een functie-app in Azure. Als u deze implementatie wilt maken, 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.
Verpak voor Python-projecten de hoofdmap van uw project en vraag altijd een externe build aan. 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 opdracht
az login.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 opdracht
az login.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 opdracht
az login.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 opdracht
az login.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 opdracht
az login.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 de vereiste resources tijdens de implementatie te maken 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.xmlen 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 hetazure-functions-maven-plugin-element het volgende toe of haal de opmerkingen bij het<pricingTier>-element weg:<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 een exemplaaraantal groter dan nul instelt, betaalt u voor deze exemplaren, ongeacht of uw functies worden uitgevoerd of niet. Zie Facturering voor meer informatie.
-
Voordat u kunt implementeren, meldt u zich aan bij uw Azure-abonnement met behulp van de Azure CLI.
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 sjabloon
pom.xmlom 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 in uw functie-app geïmplementeerd, waarbij eventuele bestaande code wordt overschreven.
Integratie van virtuele netwerken configureren
U kunt integratie van virtuele netwerken inschakelen voor uw app in een Flex Consumption-abonnement wanneer u uw app maakt of op een later tijdstip. Voordat u integratie van virtuele netwerken inschakelt, controleert u het netwerkgedrag en de subnetvereisten die specifiek zijn voor Flex Consumption.
Hoe Flex Consumption-netwerken werken
Flex Consumption-exemplaren gebruiken niet elk een uniek IP-adres van het subnet waarmee u de app integreert. In plaats daarvan gebruikt een groep door platform beheerde netwerkgateways (intern voor de Infrastructuur voor Flexverbruik) IP-adressen van het subnet om alle apps te leveren die zijn geïntegreerd met dat subnet. Deze architectuur voor IP-multiplexing verschilt fundamenteel van Premium-abonnementen, waarbij elk exemplaar één IP-adres van het subnet gebruikt.
De richtlijn voor 40 IP's per app zorgt ervoor dat er voldoende IP-adressen zijn voor de platformgatewaygroep en andere infrastructuuronderdelen, maar dit is geen afgedwongen limiet. Plan dit minimum bij het aanpassen van de grootte van uw subnet, maar begrijp dat het werkelijke IP-verbruik doorgaans lager is. Het platform wijst dynamisch IP-adressen toe vanuit de gedeelde gatewaypool naarmate apps die met het subnet zijn geïntegreerd, uitschalen.
Grootte en vereisten voor subnetten
Kies een subnet met de juiste grootte voor uw Flex Consumption-apps. De volgende tabel bevat richtlijnen op basis van uw scenario:
| Scenario | Aanbevolen CIDR | Bruikbare IP-adressen | Aantekeningen |
|---|---|---|---|
| Eén Flex-app | /27 |
27 | Minimaal ondersteunde subnetgrootte voor één app |
| Meerdere Flex-apps in één subnet | /26 |
59 | Aanbevolen bij het hosten van meerdere apps en voor grootschalige workloads (meer dan 1000 exemplaren); biedt voldoende gatewaycapaciteit |
Delegatie van subnet
- Delegeer het subnet aan
Microsoft.App/environments. Deze delegatie verschilt van Premium- en Dedicated-abonnementen, die gebruikmaken vanMicrosoft.Web/serverFarms. -
Registreer de resourceprovider
Microsoft.Appin uw abonnement.
Gebruiksbeperkingen voor subnetten
- Het subnet kan nog niet worden gebruikt voor privé-eindpunten of service-eindpunten en kan niet worden gedelegeerd aan andere hostingabonnementen of -services.
- U kunt hetzelfde subnet niet delen tussen een Azure Container Apps-omgeving en een Flex Consumption-app.
- Subnetnamen mogen geen onderstrepingstekens (
_) bevatten. Dit is een huidige beperking van het Flex Consumption-abonnement.
Subnet delen
- U kunt hetzelfde subnet delen met meer dan één app die wordt uitgevoerd in een Flex Consumption-abonnement. Omdat netwerkresources echter worden gedeeld in alle apps, kan één functie-app van invloed zijn op de prestaties van anderen in hetzelfde subnet. Houd rekening met de totale vraag bij het inpakken van meerdere apps in een klein subnet.
- Het subnet en de app moeten zich in dezelfde regio bevinden.
IP-toewijzing en -planning
- Flex Consumption-apps wijzen geen uniek IP-adres toe aan elk exemplaar. In plaats daarvan gebruikt een groep netwerkgateways IP-adressen van het subnet. De richtlijn voor het reserveren van 40 IP-adressen per app zorgt ervoor dat er voldoende IP-adressen zijn voor de gatewaygroep en andere infrastructuuronderdelen, maar het werkelijke gebruik is doorgaans lager.
- Een
/27subnet (27 bruikbare IP-adressen) is voldoende voor één app die maximaal 1000 exemplaren ondersteunt vanwege IP-multiplexing. Gebruik voor meerdere apps of workloads op grote schaal een/26subnet om voldoende gatewaycapaciteit te bieden. - Wanneer veel apps een subnet delen en veel ervan worden opgeschaald met aanzienlijk uitgaand verkeer, kan de uitgaande netwerkdoorvoer een knelpunt worden in plaats van dat IP-adressen uitgeput raken. Evalueer de prestaties op uw geplande productieschaal.
Integratie van virtuele netwerken inschakelen wanneer u de app maakt
In de voorbeelden in deze sectie wordt ervan uitgegaan dat uw account al een virtueel netwerk en subnet bevat.
Schakel integratie van virtuele netwerken in door de az functionapp create opdracht uit te voeren en de --vnet en --subnet parameters op te geven. Het subnet moet worden gedelegeerd aan Microsoft.App/environments en moet ten minste /27 groot zijn. Zie Subnetgrootte en -vereisten voor meer informatie.
Maak het virtuele netwerk en subnet als u er nog geen hebt.
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 deze resources 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
Integratie van virtuele netwerken wijzigen of verwijderen
U kunt virtuele netwerkintegratie voor een bestaande app toevoegen, 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>
Problemen met netwerkprestaties oplossen
Wanneer een Flex Consumption-app wordt geïntegreerd met een subnet dat kleiner is dan de aanbevolen grootte, kan de prestaties afnemen naarmate de app wordt geschaald. Dit probleem kan ook optreden als u veel apps integreert met hetzelfde subnet wanneer ze worden uitgeschaald en aanzienlijk uitgaand verkeer hebben.
Symptomen van ondergedimensioneerde subnetten
Controleer op deze symptomen, die aangeven dat uitgaande capaciteit in plaats van IP-adressen de beperkende factor is:
- Verhoogde latentie bij uitgaande aanroepen naar afhankelijkheden
- Verbindingstime-outs met externe services
- Deze problemen nemen toe naarmate de app opschaalt, niet in de vorm van een plotselinge uitval
Belangrijk
Uitschalen zelf wordt niet geblokkeerd door subnetgrootte. De app blijft instanties toevoegen, zelfs als het subnet te klein is. Prestatievermindering vindt plaats in plaats van een harde schaallimiet.
Bewaking en risicobeperking
- Instrument Application Insights met metrische gegevens voor uitgaande afhankelijkheidslatentie: waarbij deze metrische waarde een vroegtijdig waarschuwingssignaal biedt voor ondergetekende subnetten.
- Voer een belastingstest op productieschaal uit voordat u de subnetgrootte vaststelt om te controleren of de grootte van uw subnet uw verwachte belasting aankan.
- Monitor met Azure Monitor: Ga naar Virtual Network>Subnet in Azure Monitor om IP-toewijzingsgegevens te bekijken via Azure Resource Graph- en KQL-query's.
-
Wijzig de juiste grootte van uw subnet volgens de richtlijnen in de vorige sectie. Een
/27minimum wordt sterk aanbevolen; een/26wordt aanbevolen voor meerdere apps.
Opmerking
Gebruik ten minste een /27 subnet om voldoende platformstabiliteit te garanderen. Subnetten die aanzienlijk kleiner zijn dan /27, kunnen problemen ondervinden bij het maken van gateways zonder expliciete foutmelding.
Implementatie-instellingen configureren
In het Flex Consumption-abonnement bevat een Azure Blob Storage container het implementatiepakket met de code van uw app. Implementaties gebruiken standaard hetzelfde opslagaccount (AzureWebJobsStorage) en verbindingsreeks die de Functions-runtime gebruikt om uw app te onderhouden. De toepassingsinstelling DEPLOYMENT_STORAGE_CONNECTION_STRING slaat de verbindingsreeks op. U kunt 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 elke app een eigen implementatiecontainer hebben. Als u voor elke app een unieke container gebruikt, voorkomt u dat implementatiepakketten worden overschreven. Dit gebeurt als apps dezelfde container hebben gedeeld.
Houd rekening met de volgende overwegingen bij het configureren van opslagverificatie voor de implementatie:
- Gebruik beheerde identiteiten als best practice om vanuit uw apps verbinding te maken 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, koppelt u de opgegeven identiteit aan de functie-app. U wijst ook de
Storage Blob Data Contributorrol toe die is gericht op het opslagaccount voor de implementatie aan de identiteit. - Wanneer u een door het systeem toegewezen beheerde identiteit gebruikt, maakt u een identiteit wanneer er nog geen geldige door het systeem toegewezen identiteit bestaat in uw app. Wanneer er een door het systeem toegewezen identiteit bestaat, wijst u de
Storage Blob Data Contributorrol die is toegewezen aan het opslagaccount voor de implementatie toe 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 StorageAccountConnectionString gebruikt, stelt u deze parameter in op de naam van de toepassingsinstelling die de verbindingsreeks bevat voor het opslagaccount voor de implementatie. Wanneer u UserAssignedIdentity instelt, stelt u deze parameter in 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
Stel de geheugengrootte van de instantie voor uw Flex Consumption-plan in bij het maken van uw app. Zie Instantiegrootten voor meer informatie over ondersteunde grootten.
Een instantiegeheugengrootte instellen die verschilt van de standaardgrootte bij het maken van uw app:
Geef de --instance-memory-parameter op in uw az 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 moment de instelling voor de geheugengrootte van de instantie wijzigen die door uw applicatie 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
Stel een specifiek aantal altijd gereede exemplaren in voor de schaalgroepen per functie of afzonderlijke functies om uw functies geladen en gereed te houden voor uitvoering. Er bestaan drie speciale groepen, zoals in schaalaanpassing per functie:
-
http- Alle door HTTP geactiveerde functies in de app worden samen geschaald in hun eigen instanties. -
durable- Alle Durable Functions (Orchestration, Activity, Entity) in de app worden gezamenlijk opgeschaald naar hun eigen instanties. -
blob- Alle door blob (Event Grid) geactiveerde functies in de app worden gezamenlijk geschaald naar 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 configureert u 'Altijd gereed' voor elke afzonderlijke functie met behulp van de notatie 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 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
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 actieve instanties in een bestaande app wijzigen door instantie-aanwijzingen toe te voegen of te verwijderen, of door het aantal bestaande instantie-aanwijzingen 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
Om altijd gereed exemplaren te verwijderen, gebruikt u het az functionapp scale config always-ready delete commando, zoals in dit voorbeeld waarbij alle altijd gereed exemplaren uit de groep HTTP-triggers en een functie met de naam hello_world worden verwijderd.
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
Als u geen specifieke limieten instelt, bepaalt het systeem de standaardwaarden voor HTTP-gelijktijdigheid voor apps van het Flex Consumption-plan op basis van de ingestelde instantiegrootte. 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 een HTTP-gelijktijdigheidswaarde hebt ingesteld, behoudt de app die waarde 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.
De Azure CLI biedt momenteel geen ondersteuning voor de configuratie van site-updatestrategie. Gebruik Bicep- of ARM-sjablonen zoals beschreven in site-update strategie configureren.
Tot een site beperkte certificaten configureren
Flex Consumption introduceert certificaten met sitebereik, een nieuw model waarin TLS/SSL-certificaten worden afgestemd op uw afzonderlijke functie-app in plaats van gedeeld tussen apps in dezelfde webruimte. In de volgende tabel ziet u de ondersteunde certificaattypen en hoe elk certificaat wordt toegevoegd aan uw functie-app:
| Certificaattype | Hoe toe te voegen | Telt mee voor |
|---|---|---|
| App Service-beheerd certificaat | Gemaakt in de portal voor een aangepast domein | Limiet voor privécertificaat |
| App Service-certificaat | Gekocht via Azure en vervolgens geïmporteerd | Limiet voor privécertificaat |
| Certificaat geïmporteerd uit Key Vault | Geïmporteerd uit Azure Key Vault | Limiet voor privécertificaat |
| Geüpload privécertificaat (.pfx) | Geüpload als een PFX-bestand | Limiet voor privécertificaat |
| Geüpload openbaar certificaat (.cer) | Geüpload als een CER-bestand | Limiet voor openbaar certificaat |
Overwegingen voor certificaten op siteniveau
- Ondersteuning voor het gebruik van sitegebonden certificaten voor apps die worden uitgevoerd in een Flex Consumption-plan is momenteel in preview.
- Bestaande apps die zijn gemaakt voordat deze functie beschikbaar werd, hebben momenteel geen migratiepad voor certificaten. Als u sitegebonden certificaten wilt gebruiken, maakt u een nieuwe Flex Consumption-functie-app.
- Azure CLI ondersteuning voor het beheren van certificaten binnen het sitebereik is nog niet beschikbaar. Gebruik ondertussen de Azure portal of ARM/Bicep-sjablonen om certificaten te beheren.
- Elke app ondersteunt maximaal drie privécertificaten en drie openbare certificaten.
- Privécertificaten moeten worden geëxporteerd als een PFX-bestand met wachtwoordbeveiliging dat alle tussenliggende certificaten en het basiscertificaat in de certificaatketen bevat.
- End-to-end-versleuteling (E2E) wordt momenteel niet ondersteund.
- ECC-certificaten (Elliptic Curve Cryptography) worden ondersteund wanneer ze worden geüpload als PFX.
- Omdat Flex Consumption wordt uitgevoerd op Linux, moet uw code certificaten laden van bestandspaden in plaats van uit het Windows certificaatarchief. Volg eerst de stappen in Een certificaat toegankelijk maken voor uw code om certificaten in de runtime-omgeving te laden. Zie vervolgens Load certificates in Linux/Windows containers voor hulp bij het lezen van certificaatbestanden uit uw toepassingscode.
Een certificaat toevoegen
U kunt certificaten op verschillende manieren aan uw app toevoegen, afhankelijk van het certificaattype. Voeg gratis beheerde en Azure certificaten rechtstreeks in de portal toe.
Selecteer een van de volgende tabbladen om te zien hoe u een beheerd, privé (.pfx), openbaar (.cer) of Key Vault beheerd certificaat toevoegt.
- Beheerd certificaat koppelen
- Privé uploaden (.pfx)
- Importeren uit Key Vault
- Openbaar uploaden (.cer)
Een gratis beheerd certificaat voor een aangepast domein maken en binden:
Ga in Azure Portal naar uw functie-app.
Vouw in het linkermenu Instellingen uit en selecteer Aangepaste domeinen.
Selecteer Aangepast domein toevoegen.
Selecteer onder TLS/SSL-certificaathet beheerde App Service-certificaat.
Selecteer onder TLS/SSL-typeSNI SSL.
Voltooi de domeinvalidatie en selecteer Toevoegen.
Het beheerde certificaat wordt automatisch gemaakt en gebonden aan het aangepaste domein. Het kan tot 10 minuten duren voordat het certificaat is uitgegeven.
Een certificaat toegankelijk maken voor uw code
Nadat u een certificaat hebt toegevoegd, moet u het expliciet toegankelijk maken voor uw functiecode.
Ga in Azure Portal naar uw functie-app.
Vouw in het linkermenu Instellingen uit en selecteer Certificaten.
Selecteer Eigen certificaten gebruiken (.pfx) of Certificaten voor openbare sleutels (.cer).
Selecteer ... (beletselteken) naast het certificaat dat u toegankelijk wilt maken en kies vervolgens Toegankelijk maken voor app-code.
Wanneer u Toegankelijk voor app-code inschakelt, laadt het platform het certificaat in de runtime-omgeving op alle exemplaren als een bestand.
Certificaatbestanden worden benoemd met vingerafdruk en in deze mappen geplaatst:
| Certificaattype | Pad |
|---|---|
| Openbare certificaten (.cer) | /var/ssl/certs |
| Privécertificaten (.pfx) | /var/ssl/private |
Een certificaat vernieuwen of bijwerken
Gratis beheerde certificaten worden automatisch vernieuwd door het platform. Voor alle andere certificaten is de wijze waarop u een verlopend certificaat bijwerkt, afhankelijk van de certificaatbron:
Certificates geïmporteerd uit Key Vault: Wanneer u een certificaat in Key Vault vernieuwt, wordt het bijgewerkte certificaat binnen 24 uur automatisch gesynchroniseerd met uw functie-app. De nieuwe certificaatversie wordt zonder handmatige tussenkomst naar alle instanties geladen.
Geüploade certificaten: upload het nieuwe certificaat en maak het vervolgens toegankelijk voor uw app-code. Als uw code verwijst naar het certificaat met vingerafdruk, werkt u eventuele vingerafdrukverwijzingen bij in uw code- of app-instellingen.
Momenteel ondersteunde regio's weergeven
Als u de lijst met regio's wilt weergeven die momenteel flexverbruiksabonnementen ondersteunen, raadpleegt u:
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 maakt in de Azure portal of met behulp van Visual Studio Code, worden momenteel niet-ondersteunde regio's uitgesloten.
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 Application Insights inschakelt in uw app, kunt u het volgende doen:
- Gedetailleerde uitvoeringstijden en afhankelijkheden bijhouden
- Prestaties van afzonderlijke functies bewaken
- Fouten en uitzonderingen analyseren
- Metrische platformgegevens correleren met toepassingsgedrag met behulp van aangepaste query's
Zie voor meer informatie Monitor Azure Functions.
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> en <APP_NAME> met de namen van uw resourcegroep en function 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)
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
Zie Azure Functions bewaken voor meer informatie over metrische gegevens voor Azure Functions.
Logboeken weergeven
Wanneer u uw app verbindt met Application Insights, kunt u de prestaties van uw app beter analyseren en problemen tijdens de uitvoering oplossen. In de Application Insights-resource voor uw app:
- Gebruik Prestaties om reactietijden en afhankelijkheden te analyseren.
- Gebruik fouten om fouten te identificeren die optreden na de migratie.
- Maak aangepaste query's in Logboeken om functiegedrag te analyseren.
Gebruik deze query bijvoorbeeld om de slagingspercentages per exemplaar te vergelijken:
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 uw functie actief 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.