Functie-apps maken en beheren in het Flex Consumption-abonnement
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, waarbij 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 login
Met de
az login
opdracht meldt u zich aan bij uw Azure-account.Gebruik de
az functionapp list-flexconsumption-locations
opdracht om de lijst met regio's te bekijken die momenteel flexverbruik ondersteunen.az functionapp list-flexconsumption-locations --output table
Maak een resourcegroep in een van de momenteel ondersteunde regio's:
az group create --name <RESOURCE_GROUP> --location <REGION>
Vervang in de bovenstaande 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 false
Vervang
<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_LRS
geeft 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.0
C#-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 17
Voor 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 20
az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime python --runtime-version 3.11
Voor 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.4
In 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 create
de 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
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:
Belangrijk
Als u implementeert in een bestaande functie-app, wordt de inhoud van die app altijd overschreven in Azure.
Voer in het opdrachtenpalet Azure Functions in en selecteer vervolgens Azure Functions: Implementeren in functie-app.
Selecteer de functie-app die u zojuist hebt gemaakt. Wanneer u wordt gevraagd om eerdere implementaties te overschrijven, selecteert u Implementeren om uw functiecode te implementeren in de nieuwe functie-app-resource.
Wanneer de implementatie is voltooid, selecteert u Uitvoer weergeven om de resultaten van het maken en implementeren weer te geven, inclusief de Azure-resources die u hebt gemaakt. Als u de melding mist, selecteert u het belpictogram in de rechterbenedenhoek om deze opnieuw te zien.
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-plugin
volgende 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 login
Met de
az login
opdracht 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:deploy
Maven 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 create
opdracht uit, inclusief de--vnet
en--subnet
parameters, 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/<RESOURCER_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: HTTP naar Event Hubs met behulp van VNET-integratie
- Flexverbruik: geactiveerd vanuit Service Bus met behulp van VNET-integratie
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 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:
- 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 Contributor
rol 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 Contributor
rol 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 aanvullende opties op waarmee de implementatieopslag wordt aangepast:
Parameter | Description |
---|---|
--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 , UserAssignedIdentity en 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 gebruikt 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_ACCCOUNT_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_ACCCOUNT_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 Exemplaargeheugen 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-memory
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 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 4096 MB:
az functionapp scale config set --resource-group <resourceGroup> --name <APP_NAME> --instance-memory 4096
Het aantal exemplaren dat altijd gereed is instellen
U kunt een 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
, durable
of blob
als de naam voor de instelling voor het waardepaar van de naam om altijd gereede tellingen 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
.
Gebruik de --always-ready-instances
parameter met de az functionapp create
opdracht om een of meer altijd gereede instantieaanduidingen te definiëren. 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.
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 login
Met de
az login
opdracht meldt u zich aan bij uw Azure-account.Gebruik de
az functionapp list-flexconsumption-locations
opdracht om de lijst met regio's te bekijken die momenteel flexverbruik ondersteunen.az functionapp list-flexconsumption-locations --output table
Wanneer u een app in Azure Portal maakt of visual Studio Code gebruikt, worden momenteel niet-ondersteunde regio's uit de regiolijst gefilterd.