Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Gebruik Visual Studio Code om een functie te maken die reageert op HTTP-aanvragen van een sjabloon. Gebruik GitHub Copilot om de gegenereerde functiecode te verbeteren, code-updates lokaal te verifiëren en deze vervolgens te implementeren in het serverloze Flex Consumption-hostingabonnement in Azure Functions.
Gebruik Visual Studio Code om een customhandlerfunctie te maken die reageert op HTTP-aanvragen. Nadat u de code lokaal hebt gecontroleerd, implementeert u deze in het serverloze Flex Consumption-hostingabonnement in Azure Functions.
Aangepaste handlers kunnen worden gebruikt om functies in elke taal of runtime te maken door een HTTP-serverproces uit te voeren. Dit artikel ondersteunt zowel Go als Rust.
Voor het voltooien van deze quickstart worden kleine kosten in rekening gebracht van een paar dollarcenten of minder in uw Azure-account.
Zorg ervoor dat u bovenaan het artikel de gewenste ontwikkeltaal selecteert.
Vereiste voorwaarden
Een Azure-account met een actief abonnement. Gratis een account maken
Visual Studio Code op een van de ondersteunde platforms.
De Azure Functions-extensie voor Visual Studio Code.
C#-extensie voor Visual Studio Code.
De Java Development Kit, versie 8, 11, 17 of 21 (alleen Linux).
Apache Maven, versie 3.0 of hoger.
Het uitbreidingspakket Java
- Node.js 18.x of hoger. Gebruik de opdracht om uw versie te controleren.
PowerShell 7.2
Python-versies die ondersteund worden door Azure Functions. Zie Het installeren van Python voor meer informatie.
De Python-extensie voor Visual Studio Code.
- Go
- Roest
- Go (nieuwste versie wordt aanbevolen). Gebruik de opdracht om uw versie te controleren.
Core Tools installeren of bijwerken
De Azure Functions-extensie voor Visual Studio Code kan worden geïntegreerd met Azure Functions Core Tools, zodat u uw functies lokaal in Visual Studio Code kunt uitvoeren en fouten kunt opsporen met behulp van de Azure Functions runtime. Voordat u aan de slag gaat, is het een goed idee om Core Tools lokaal te installeren of een bestaande installatie bij te werken om de nieuwste versie te gebruiken.
Selecteer in Visual Studio Code F1 om het opdrachtenpalet te openen en zoek en voer de opdracht uit Azure Functions: Core Tools installeren of bijwerken.
Met deze opdracht wordt geprobeerd een installatie op basis van een pakket te starten van de nieuwste versie van Core Tools of een bestaande installatie op basis van een pakket bij te werken. Als u npm of Homebrew niet op uw lokale computer hebt geïnstalleerd, moet u Core Tools handmatig installeren of bijwerken.
Uw lokale project maken
In deze sectie gebruikt u Visual Studio Code om een lokaal Azure Functions project te maken in uw voorkeurstaal. Verderop in het artikel werkt u de functiecode bij, voert u deze uit en publiceert u deze vervolgens naar Azure.
Druk in Visual Studio Code op F1 om het opdrachtenpalet te openen. Zoek en voer de opdracht
Azure Functions: Create New Project...uit.Kies de maplocatie voor uw projectwerkruimte en kies Selecteren. U moet een nieuwe map maken of een lege map voor de projectwerkruimte kiezen. Kies geen projectmap die al deel uitmaakt van een werkruimte.
Geef de volgende informatie op bij de prompts:
Snel Selectie Een taal selecteren Kies . Selecteer een .NET runtime Kies .NET 8.0 LTS.Selecteer een sjabloon voor de eerste functie van uw project Kies . Geef een functienaam op Typ . Geef een naamruimte op Typ . Autorisatieniveau Kies , waarvoor een toegangssleutel is vereist om uw functie-eindpunt aan te roepen. Zie Autorisatieniveau voor meer informatie. Selecteer hoe u uw project wilt openen Kies . Snel Selectie Een taal selecteren Kies Java.Selecteer een versie van Java Kies Java 8,Java 11,Java 17ofJava 21, de Java versie waarop uw functies worden uitgevoerd in Azure. Kies een Java versie die u lokaal hebt geverifieerd.Een groeps-id opgeven Kies . Geef een artefact-id op Kies . Geef een versie op Kies . Geef een pakketnaam op Kies . Geef een app-naam op Kies . Selecteer een sjabloon voor de eerste functie van uw project Kies . Selecteer de buildtool voor het Java-project Kies . Selecteer hoe u uw project wilt openen Kies . Snel Selectie Een taal selecteren Kies . Een JavaScript-programmeermodel selecteren Kies . Selecteer een sjabloon voor de eerste functie van uw project Kies . Geef een functienaam op Typ . Autorisatieniveau Kies , waarvoor een toegangssleutel is vereist om uw functie-eindpunt aan te roepen. Zie Autorisatieniveau voor meer informatie. Selecteer hoe u uw project wilt openen Kies . Snel Selectie Een taal selecteren Kies . Een JavaScript-programmeermodel selecteren Kies . Selecteer een sjabloon voor de eerste functie van uw project Kies . Geef een functienaam op Typ . Autorisatieniveau Kies , waarvoor een toegangssleutel is vereist om uw functie-eindpunt aan te roepen. Zie Autorisatieniveau voor meer informatie. Selecteer hoe u uw project wilt openen Kies . Snel Selectie Een taal selecteren Kies Python.Selecteer een Python-interpreter om een virtuele omgeving te maken Kies de gewenste Python interpreter. Als er geen optie wordt weergegeven, typt u het volledige pad naar uw Python binair bestand. Selecteer een sjabloon voor de eerste functie van uw project Kies . Naam van de functie die u wilt maken Voer in. Autorisatieniveau Kies , waarvoor een toegangssleutel is vereist om uw functie-eindpunt aan te roepen. Zie Autorisatieniveau voor meer informatie. Selecteer hoe u uw project wilt openen Kies . Snel Selectie Selecteer een taal voor uw functieproject Kies . Selecteer een sjabloon voor de eerste functie van uw project Kies . Geef een functienaam op Typ . Autorisatieniveau Kies , waarvoor een toegangssleutel is vereist om uw functie-eindpunt aan te roepen. Zie Autorisatieniveau voor meer informatie. Selecteer hoe u uw project wilt openen Kies . Snel Selectie Selecteer een taal voor uw functieproject Kies . Selecteer een sjabloon voor de eerste functie van uw project Kies . Geef een functienaam op Typ . Autorisatieniveau Kies , waarvoor een toegangssleutel is vereist om uw functie-eindpunt aan te roepen. Zie Autorisatieniveau voor meer informatie. Selecteer hoe u uw project wilt openen Kies . Met behulp van deze informatie genereert Visual Studio Code een codeproject voor Azure Functions met een HTTP-triggerfunctieeindpunt. U kunt de lokale projectbestanden weergeven in de Explorer. Zie Gegenereerde projectbestanden voor meer informatie over bestanden die worden gemaakt.
Werk in het bestand local.settings.json de instelling bij zoals in het volgende voorbeeld:
"AzureWebJobsStorage": "UseDevelopmentStorage=true",Met deze instelling moet de lokale Functions-host de opslagemulator gebruiken voor de opslagverbinding die is vereist voor het Python v2-model. Wanneer u uw project naar Azure publiceert, gebruikt deze instelling in plaats daarvan het standaardopslagaccount. Als u een Azure Storage-account gebruikt tijdens de lokale ontwikkeling, stelt u hier de connectiestring voor uw opslagaccount in.
De emulator starten
Druk in Visual Studio Code op F1 om het opdrachtenpalet te openen. Zoek en selecteer in het opdrachtenpalet.
Controleer de onderste balk en verifieer of de emulatieservices van Azurite actief zijn. Zo ja, dan kunt u uw functie nu lokaal uitvoeren.
Uw functie maken en compileren
Het bestand function.json in de map HttpExample declareert een HTTP-triggerfunctie. U voltooit de functie door een handler toe te voegen en deze te compileren in een uitvoerbaar bestand.
- Go
- Roest
Druk op Ctrl+N (Cmd+N in macOS) om een nieuw bestand te maken. Sla het bestand op als handler.go in de hoofdmap van de functie-app (in dezelfde map als host.json).
Voeg de volgende code toe aan handler.go en sla het bestand op. Dit is uw aangepaste handler in Go.
package main import ( "fmt" "log" "net/http" "os" ) func helloHandler(w http.ResponseWriter, r *http.Request) { message := "This HTTP triggered function executed successfully. Pass a name in the query string for a personalized response.\n" name := r.URL.Query().Get("name") if name != "" { message = fmt.Sprintf("Hello, %s. This HTTP triggered function executed successfully.\n", name) } fmt.Fprint(w, message) } func main() { listenAddr := ":8080" if val, ok := os.LookupEnv("FUNCTIONS_CUSTOMHANDLER_PORT"); ok { listenAddr = ":" + val } http.HandleFunc("/api/HttpExample", helloHandler) log.Printf("About to listen on %s. Go to https://127.0.0.1%s/", listenAddr, listenAddr) log.Fatal(http.ListenAndServe(listenAddr, nil)) }Druk op Ctrl+Shift+` of selecteer Nieuwe terminal in het menu Terminal om een nieuwe geïntegreerde terminal te openen in Visual Studio Code.
Compileer uw aangepaste handler met de volgende opdracht. Een uitvoerbaar bestand met de naam
handler(handler.exeop Windows) wordt uitgevoerd naar de hoofdmap van de functie-app.go build handler.go
Uw functie-app configureren
De functiehost moet worden geconfigureerd om het binaire bestand van uw aangepaste handler uit te voeren wanneer deze wordt gestart.
Open host.json.
Stel in de sectie
customHandler.descriptionde waarde vandefaultExecutablePathin ophandler(op Windows stelt u deze in ophandler.exe).Voeg in de sectie een eigenschap toe met de naam en stel de waarde ervan in op . Deze maakt het programmeren voor functies die uitsluitend bestaan uit een HTTP-trigger eenvoudiger, omdat u een typische HTTP-aanvraag kunt gebruiken in plaats van de aangepaste handler request payload.
Controleer of de sectie eruitziet als in dit voorbeeld. Sla het bestand op.
"customHandler": { "description": { "defaultExecutablePath": "handler", "workingDirectory": "", "arguments": [] }, "enableForwardingHttpRequest": true }
De functie-app is geconfigureerd om het uitvoerbare bestand van de aangepaste handler te starten.
De functie lokaal uitvoeren
Visual Studio Code integreert met Azure Functions Core tools zodat u dit project kunt uitvoeren op uw lokale ontwikkelcomputer voordat u naar Azure publiceert.
Als u de functie lokaal wilt starten, drukt u op F5 of het pictogram Uitvoeren en foutopsporing in de activiteitenbalk aan de linkerkant. In het terminalvenster wordt de uitvoer van Core Tools weergegeven. Uw app wordt gestart in het deelvenster Terminal . U kunt het URL-eindpunt van uw lokaal uitgevoerde, door HTTP geactiveerde functie zien.
Schermopname van de uitvoer van de lokale functie VS Code.
Als u problemen ondervindt bij het uitvoeren van Windows, moet u ervoor zorgen dat de standaardterminal voor Visual Studio Code niet is ingesteld op WSL Bash.
Als Core Tools nog steeds wordt uitgevoerd in Terminal, kiest u het pictogram Azure op de activiteitenbalk. Vouw Local ProjectFunctions uit in de Werkruimte. Klik met de rechtermuisknop (Windows) of Ctrl - klik (macOS) op de nieuwe functie en kies Voer functie nu uit....
In Enter request body ziet u de berichttekstwaarde van
{ "name": "Azure" }. Druk op Enter om dit aanvraagbericht naar uw functie te verzenden.Wanneer de functie lokaal wordt uitgevoerd en een antwoord retourneert, wordt er een melding gegenereerd in Visual Studio Code. Informatie over de uitvoering van de functie wordt weergegeven in het deelvenster Terminal .
Met het Terminalpaneel in focus, druk op Ctrl + C om Core Tools te stoppen en de debugger los te koppelen.
Nadat u hebt gecontroleerd of de functie correct wordt uitgevoerd op uw lokale computer, kunt u desgewenst AI-hulpprogramma's, zoals GitHub Copilot in Visual Studio Code, gebruiken om door sjabloon gegenereerde functiecode bij te werken.
AI gebruiken om invoer te normaliseren en valideren
Dit voorbeeldprompt voor Copilot Chat werkt de bestaande functiecode bij om parameters op te halen uit de querystring of JSON-lichaam. Hiermee worden opmaak- of typeconversies toegepast en worden de parameters als JSON in het antwoord geretourneerd:
Modify the function to accept name, email, and age from the JSON body of the
request. If any of these parameters are missing from the query string, read
them from the JSON body. Return all three parameters in the JSON response,
applying these rules:
Title-case the name
Lowercase the email
Convert age to an integer if possible, otherwise return "not provided"
Use sensible defaults if any parameter is missing
Make sure that any added packages are compatible with the version of the packages already in the project
Modify the function to accept name, email, and age from the JSON body of the
request. If any of these parameters are missing from the query string, read
them from the JSON body. Return all three parameters in the JSON response,
applying these rules:
Title-case the name
Lowercase the email
Convert age to an integer if possible, otherwise return "not provided"
Use sensible defaults if any parameter is missing
Modify the function to accept name, email, and age from the JSON body of the
request. If any of these parameters are missing from the query string, read
them from the JSON body. Return all three parameters in the JSON response,
applying these rules:
Title-case the name
Lowercase the email
Convert age to an integer if possible, otherwise return "not provided"
Use sensible defaults if any parameter is missing
Update the FunctionTest.java file to test the new logic.
U kunt uw prompt zo nodig aanpassen om specifieke gegevens toe te voegen. Voer vervolgens de app opnieuw lokaal uit en controleer of deze werkt zoals verwacht nadat de code is gewijzigd. Gebruik deze keer een berichttekst zoals:
{ "name": "devon torres", "email": "torres.devon@contoso.com", "age": "34" }
Aanbeveling
GitHub Copilot wordt aangedreven door AI, dus verrassingen en fouten zijn mogelijk. Als er fouten optreden tijdens de uitvoering, plakt u het foutbericht in het chatvenster, selecteert u Agent modus en vraagt u Copilot om de fout op te lossen. Zie Copilot veelgestelde vragen voor meer informatie.
Wanneer de agentmodus wordt uitgevoerd, zijn de resultaten van deze aanpassing afhankelijk van de specifieke hulpprogramma's die beschikbaar zijn voor uw agent.
Wanneer u tevreden bent met uw app, gebruikt u Visual Studio Code om het project rechtstreeks naar Azure te publiceren.
Nadat u hebt gecontroleerd of de functie correct wordt uitgevoerd op uw lokale computer, gebruikt u Visual Studio Code om het project rechtstreeks naar Azure te publiceren.
Meld u aan bij Azure
Voordat u Azure resources kunt maken of uw app kunt publiceren, moet u zich aanmelden bij Azure.
Als u nog niet bent aangemeld, selecteert u in de balk Activiteit het pictogram Azure. Selecteer vervolgens onder ResourcesAangetekend bij Azure.
Als u al bent aangemeld en uw bestaande abonnementen kunt zien, gaat u naar de volgende sectie. Als u nog geen Azure account hebt, selecteert u Maak een Azure-account. Studenten kunnen een Azure-account voor studenten aanmaken.
Wanneer u in de browser wordt gevraagd, selecteert u uw Azure-account en meldt u zich aan met uw Azure accountreferenties. Als u een nieuw account maakt, kunt u zich aanmelden nadat uw account is gemaakt.
Nadat u zich hebt aangemeld, kunt u het nieuwe browservenster sluiten. De abonnementen die deel uitmaken van uw Azure-account, worden weergegeven in de zijbalk.
De functie-app maken in Azure
In deze sectie maakt u een functie-app in het Flex Consumption-abonnement, samen met gerelateerde resources in uw Azure-abonnement. Veel van de beslissingen voor het maken van resources worden voor u gemaakt op basis van standaardgedrag. Voor meer controle over de gemaakte resources moet u in plaats daarvan uw functie-app maken met geavanceerde opties.
Selecteer in Visual Studio Code F1 om het opdrachtenpalet te openen. Voer bij de prompt (
>) in en selecteer Azure Functions: Functie-app maken in Azure.Geef bij de prompts de volgende informatie op:
Snel Handeling Abonnement selecteren Selecteer het Azure-abonnement dat u wilt gebruiken. De prompt wordt niet weergegeven wanneer er slechts één abonnement zichtbaar is onder Resources. Voer de naam van een nieuwe functie-app in Voer een wereldwijd unieke naam in die geldig is in een URL-pad. De naam die u invoert, wordt gevalideerd om ervoor te zorgen dat deze uniek is in Azure Functions. Selecteer een locatie voor nieuwe resources Selecteer een Azure regio. Voor betere prestaties selecteert u een regio bij u in de buurt. Alleen regio's die worden ondersteund door Flex Consumption-abonnementen worden weergegeven. Een runtimestack selecteren Selecteer de taalversie die u momenteel lokaal uitvoert. Resourceverificatietype selecteren Selecteer Beheerde identiteit. Dit is de veiligste optie voor het maken van verbinding met het standaardhostopslagaccount. In het deelvenster Azure: Activiteitenlogboek geeft de Azure-extensie de status van afzonderlijke resources weer terwijl ze in Azure worden gemaakt.
Wanneer de functie-app is aangemaakt, worden de volgende gerelateerde resources in uw Azure-abonnement aangemaakt. De resources hebben een naam op basis van de naam die u hebt ingevoerd voor uw functie-app.
- Een resourcegroep, een logische container voor gerelateerde resources.
- Een functie-app, die de omgeving biedt voor het uitvoeren van uw functiecode. Met een functie-app kunt u functies groeperen in een logische eenheid, zodat u resources eenvoudiger kunt beheren, implementeren en delen binnen hetzelfde hostingabonnement.
- Een Azure App Service-plan, waarmee de onderliggende host voor uw functie-app wordt gedefinieerd.
- Een standaardaccount Azure Storage-account, dat wordt gebruikt door de Functions-host voor het onderhouden van status en andere informatie over uw functie-app.
- Een Application Insights-exemplaar dat is verbonden met de functie-app en waarmee het gebruik van uw functies in de app wordt bijgehouden.
- Een door de gebruiker toegewezen beheerde identiteit die wordt toegevoegd aan de rol Inzender voor opslagblobgegevens in het nieuwe standaardhostopslagaccount.
Nadat de functie-app is gemaakt en het implementatiepakket is toegepast, wordt er een melding weergegeven.
Aanbeveling
De Azure resources die vereist zijn voor uw functie-app, worden standaard gemaakt op basis van de naam die u voor uw functie-app invoert. De resources worden standaard aangemaakt met de functie-applicatie in dezelfde, nieuwe resourcegroep. Als u de namen van de gekoppelde resources wilt aanpassen of bestaande resources opnieuw wilt gebruiken, publiceert u het project met geavanceerde opties voor het maken ervan.
De aangepaste handler compileren voor Azure
In deze sectie compileert u uw project voor implementatie naar Azure in een functie-app met Linux. In de meeste gevallen moet u uw binaire bestand opnieuw compileren en uw configuratie aanpassen aan het doelplatform voordat u het publiceert naar Azure.
- Go
- Roest
Compileer de handler in Linux/x64 in de geïntegreerde terminal.
- MacOS
- Linux
- Windows
GOOS=linux GOARCH=amd64 go build handler.go
Er wordt een binair bestand met de naam gemaakt in de hoofdmap van de functie-app.
Het project implementeren in Azure
Belangrijk
Implementeren in een bestaande Function App overschrijft altijd de inhoud van die app in Azure.
Voer in het opdrachtenpalet Azure Functions: Deploy to Function App in en selecteer het vervolgens.
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.
Schermopname van het venster Uitvoer weergeven.
De functie uitvoeren in Azure
Druk op F1 om het opdrachtenpalet weer te geven en zoek en voer de opdracht uit
Azure Functions:Execute Function Now.... Selecteer uw abonnement als u hierom wordt gevraagd.Selecteer de resource van uw nieuwe functie-app en stel deze in als uw functie.
Voer bij "Enter request body type" in en druk vervolgens op Enter om dit aanvraagbericht naar uw functie te verzenden.
Wanneer de functie wordt uitgevoerd in Azure, wordt het antwoord weergegeven in het meldingengebied. Vouw de melding uit om het volledige antwoord te controleren.
Probleemoplossingsproces
Gebruik de volgende tabel om de meest voorkomende problemen op te lossen die optreden bij het gebruik van dit artikel.
| Probleem | Solution |
|---|---|
| Kunt u geen lokaal functieproject maken? | Zorg ervoor dat de Azure Functions-extensie is geïnstalleerd. |
| Kan de functie niet lokaal worden uitgevoerd? | Zorg ervoor dat u de nieuwste versie van Azure Functions Core Tools hebt geïnstalleerd. Wanneer u op Windows uitvoert, moet u ervoor zorgen dat de standaardterminalshell voor Visual Studio Code niet is ingesteld op WSL Bash. |
| Kunt u de functie niet implementeren in Azure? | Bekijk de uitvoer voor foutinformatie. Het belpictogram in de rechterbenedenhoek is een andere manier om de uitvoer weer te geven. Hebt u gepubliceerd op een bestaande functies-app? Met deze actie wordt de inhoud van die app in Azure overschreven. |
| Kunt u de cloudgebaseerde functietoepassing niet uitvoeren? | Vergeet niet om de querytekenreeks te gebruiken om parameters te verzenden of gebruik de aanvraagbody voor aangepaste handlers. |
De hulpbronnen opschonen
Wanneer u doorgaat met de volgende stap en een Azure Storage wachtrijbinding aan uw functie toevoegt, moet u al uw resources behouden om voort te bouwen op wat u al hebt gedaan.
Als dat niet het geval is, kunt u de volgende stappen gebruiken om de functie-app en de bijbehorende resources te verwijderen om te voorkomen dat er verdere kosten in rekening worden gebracht.
- Selecteer in Visual Studio Code het pictogram Azure om de Azure explorer te openen.
- Zoek uw resourcegroep in de sectie Resourcegroepen.
- Klik met de rechtermuisknop op de resourcegroep en selecteer Verwijderen.
Raadpleeg Kosten van verbruiksplannen inschatten voor meer informatie over de kosten van Functions.
Volgende stappen
U hebt Visual Studio Code gebruikt om een functie-app te maken met een eenvoudige door HTTP geactiveerde functie. In de volgende artikelen vouwt u die functie uit door verbinding te maken met Azure Cosmos DB of Azure Storage. Zie Add-bindingen aan een bestaande functie in Azure Functions voor meer informatie over het maken van verbinding met andere Azure-services. Zie Securing Azure Functions voor meer informatie over beveiliging.