Azure-functies lokaal programmeren en testen

Hoewel u Azure Functions kunt ontwikkelen en testen in Azure Portal, geven veel ontwikkelaars de voorkeur aan een lokale ontwikkelervaring. Wanneer u Functions gebruikt, kunt u met uw favoriete code-editor en ontwikkelhulpprogramma's functies op uw lokale computer maken en testen. Uw lokale functies kunnen verbinding maken met live Azure-services en u kunt fouten opsporen op uw lokale computer met behulp van de volledige Functions-runtime.

Dit artikel bevat koppelingen naar specifieke ontwikkelomgevingen voor uw voorkeurstaal. Het biedt ook enkele gedeelde richtlijnen voor lokale ontwikkeling, zoals het werken met het local.settings.json-bestand.

Lokale ontwikkelomgevingen

De manier waarop u functies op uw lokale computer ontwikkelt, is afhankelijk van uw taal - en hulpprogrammavoorkeuren. De omgevingen in de volgende tabel ondersteunen lokale ontwikkeling:

Omgeving Talen Beschrijving
Visual Studio Code C# (in-process)
C# (geïsoleerd werkproces)
JavaScript
Powershell
Python
De Azure Functions-extensie voor VS Code voegt Functions-ondersteuning toe aan VS Code. Hiervoor zijn de Core Tools vereist. Ondersteunt ontwikkeling in Linux, macOS en Windows wanneer u versie 2.x van de Core Tools gebruikt. Zie Uw eerste functie maken met Visual Studio Code voor meer informatie.
Opdrachtprompt of terminal C# (in-process)
C# (geïsoleerd werkproces)
JavaScript
Powershell
Python
Azure Functions Core Tools biedt de kernruntime en sjablonen voor het maken van functies, waardoor lokale ontwikkeling mogelijk is. Versie 2.x ondersteunt ontwikkeling in Linux, macOS en Windows. Alle omgevingen zijn afhankelijk van Core Tools voor de lokale Functions-runtime.
Visual Studio C# (in-process)
C# (geïsoleerd werkproces)
De Azure Functions-hulpprogramma's zijn opgenomen in de Azure-ontwikkelworkload van Visual Studio, te beginnen met Visual Studio 2019. Hiermee kunt u functies in een klassebibliotheek compileren en de .dll publiceren naar Azure. Bevat de Core Tools voor lokale tests. Zie Azure Functions ontwikkelen met Visual Studio voor meer informatie.
Maven (diverse) Java Maven-archetype ondersteunt Core Tools om de ontwikkeling van Java-functies mogelijk te maken. Versie 2.x ondersteunt ontwikkeling in Linux, macOS en Windows. Zie Uw eerste functie maken met Java en Maven voor meer informatie. Ondersteunt ook ontwikkeling met Behulp van Eclipse en IntelliJ IDEA.

Notitie

Vanwege beperkingen voor het bewerken van functiecode in Azure Portal moet u uw functies lokaal ontwikkelen en uw codeproject publiceren naar een functie-app in Azure. Zie Ontwikkelingsbeperkingen in Azure Portal voor meer informatie

Met elk van deze lokale ontwikkelomgevingen kunt u functie-app-projecten maken en vooraf gedefinieerde functiesjablonen gebruiken om nieuwe functies te maken. Elk maakt gebruik van de Core Tools, zodat u uw functies kunt testen en fouten kunt opsporen in de echte Functions-runtime op uw eigen computer, net zoals elke andere app. U kunt uw functie-app-project ook publiceren vanuit een van deze omgevingen naar Azure.

Lokale projectbestanden

Een Functions-projectmap bevat de volgende bestanden in de hoofdmap van het project, ongeacht de taal:

Bestandsnaam Beschrijving
host.json Zie de host.json-verwijzing voor meer informatie.
local.settings.json Instellingen gebruikt door Core Tools bij het lokaal uitvoeren, inclusief app-instellingen. Zie het bestand met lokale instellingen voor meer informatie.
.gitignore Hiermee voorkomt u dat het local.settings.json-bestand per ongeluk wordt gepubliceerd naar een Git-opslagplaats. Zie het bestand met lokale instellingen voor meer informatie.
.vscode\extensions.json Instellingen bestand dat wordt gebruikt bij het openen van de projectmap in Visual Studio Code.

Andere bestanden in het project zijn afhankelijk van uw taal en specifieke functies. Zie de ontwikkelaarshandleiding voor uw taal voor meer informatie.

Lokale instellingsbestand

In het local.settings.json-bestand worden app-instellingen en -instellingen opgeslagen die worden gebruikt door lokale ontwikkelhulpprogramma's. Instellingen in het local.settings.json-bestand worden alleen gebruikt wanneer u het project lokaal uitvoert. Wanneer u uw project publiceert naar Azure, moet u ook alle vereiste instellingen toevoegen aan de app-instellingen voor de functie-app.

Belangrijk

Omdat de local.settings.json geheimen kan bevatten, zoals verbindingsreeks s, moet u deze nooit opslaan in een externe opslagplaats. Hulpprogramma's die Functies ondersteunen, bieden manieren om instellingen in het local.settings.json-bestand te synchroniseren met de app-instellingen in de functie-app waarmee uw project wordt geïmplementeerd.

Het bestand met lokale instelling heeft de volgende structuur:

{
  "IsEncrypted": false,
  "Values": {
    "FUNCTIONS_WORKER_RUNTIME": "<language worker>",
    "AzureWebJobsStorage": "<connection-string>",
    "MyBindingConnection": "<binding-connection-string>",
    "AzureWebJobs.HttpExample.Disabled": "true"
  },
  "Host": {
    "LocalHttpPort": 7071,
    "CORS": "*",
    "CORSCredentials": false
  },
  "ConnectionStrings": {
    "SQLConnectionString": "<sqlclient-connection-string>"
  }
}

Deze instellingen worden ondersteund wanneer u projecten lokaal uitvoert:

Instelling Beschrijving
IsEncrypted Wanneer deze instelling is ingesteld op true, worden alle waarden versleuteld met een lokale machinesleutel. Gebruikt met func settings-opdrachten. De standaardwaarde is false. Mogelijk wilt u het bestand local.settings.json versleutelen op uw lokale computer wanneer het geheimen bevat, zoals serviceverbindingsreeksen. De host ontsleutelt de instellingen automatisch wanneer deze wordt uitgevoerd. Gebruik de opdracht func settings decrypt voordat u lokaal versleutelde instellingen probeert te lezen.
Values Verzameling toepassingsinstellingen die worden gebruikt wanneer een project lokaal wordt uitgevoerd. De sleutelwaardeparen (tekenreeks-tekenreeks) corresponderen met toepassingsinstellingen in uw functie-app in Azure, zoals AzureWebJobsStorage. Veel triggers en bindingen hebben een eigenschap die verwijst naar een app-instelling voor verbindingsreeksen, bijvoorbeeld Connection voor Blob-opslagtrigger. Voor deze eigenschappen hebt u een toepassingsinstelling nodig die is gedefinieerd in de matrix Values. Bekijk de onderliggende tabel voor een lijst met veelgebruikte instellingen.
Waarden moeten tekenreeksen zijn en geen JSON-objecten of matrices. Namen van instellingen mogen geen dubbele onderstreping (__) bevatten en mogen geen dubbele punt (:) bevatten. Dubbele onderstrepingstekens worden gereserveerd tijdens de runtime en de dubbele punt is gereserveerd voor afhankelijkheidsinjectie.
Host Met de instellingen in dit gedeelte wordt het Functions-hostproces aangepast wanneer u projecten lokaal uitvoert. Deze instellingen staan los van de host.json-instellingen, die ook van toepassing zijn wanneer u projecten uitvoert in Azure.
LocalHttpPort Hiermee stelt u de standaardpoort in die wordt gebruikt wanneer de lokale Functions-host wordt uitgevoerd (func host start en func run). De opdrachtregeloptie --port heeft voorrang op deze instelling. Wanneer u bijvoorbeeld in Visual Studio IDE wordt uitgevoerd, kunt u het poortnummer wijzigen door naar het venster Projecteigenschappen -> Fouten opsporen te navigeren en expliciet het poortnummer op te geven in een host start --port <your-port-number> opdracht die kan worden opgegeven in het veld Toepassingsargumenten.
CORS Definieert de oorsprong die is toegestaan voor CORS (Cross-origin-resource delen). Oorsprongen worden aangeleverd als een door komma's gescheiden lijst zonder spaties. De jokertekenwaarde (*) wordt ondersteund, waardoor aanvragen van elke oorsprong worden toegestaan.
CORSCredentials Als deze instelling is ingesteld op true, zijn withCredentials-verzoeken toegestaan.
ConnectionStrings Een verzameling. Gebruik deze verzameling niet voor de verbindingsreeksen die worden gebruikt door uw functiebindingen. Deze verzameling wordt alleen gebruikt door frameworks die doorgaans een verbindingsreeks krijgen van het gedeelte ConnectionStrings van een configuratiebestand, bijvoorbeeld Entity Framework. Verbindingsreeksen in dit object zijn toegevoegd aan de omgeving met het providertype van System.Data.SqlClient. Items in deze verzameling worden niet gepubliceerd naar Azure met andere app-instellingen. U moet deze waarden expliciet toevoegen aan de verzameling Connection strings van de instellingen van uw functie-app. Als u een SqlConnection maakt in uw functiecode, moet u de verbindingsreekswaarde bewaren met uw andere verbindingen in Toepassingsinstellingen in de portal.

De volgende toepassingsinstellingen kunnen worden opgenomen in de matrix Values wanneer deze lokaal wordt uitgevoerd:

Instelling Waarden Beschrijving
AzureWebJobsStorage Verbindingsreeks van opslagaccount of
UseDevelopmentStorage=true
Bevat de verbindingsreeks voor een Azure-opslagaccount. Vereist wanneer andere triggers dan HTTP worden gebruikt. Raadpleeg de referentie AzureWebJobsStorage voor meer informatie.
Wanneer u de Azurite Emulator lokaal hebt geïnstalleerd en u instelt op AzureWebJobsStorageUseDevelopmentStorage=true, gebruikt Core Tools de emulator. Zie Lokale opslagemulator voor meer informatie.
AzureWebJobs.<FUNCTION_NAME>.Disabled true|false Als u een functie wilt uitschakelen wanneer u lokaal iets uitvoert, voegt u "AzureWebJobs.<FUNCTION_NAME>.Disabled": "true" toe aan de verzameling, waar <FUNCTION_NAME> de naam van de functie is. Zie Functies uitschakelen in Azure Functions voor meer informatie.
FUNCTIONS_WORKER_RUNTIME dotnet
dotnet-isolated
node
java
powershell
python
Geeft de doeltaal van de Functions-runtime aan. Vereist voor versie 2.x en hoger van de Functions-runtime. Deze instelling wordt gegenereerd voor uw project door Core Tools. Raadpleeg de referentie FUNCTIONS_WORKER_RUNTIME voor meer informatie.
FUNCTIONS_WORKER_RUNTIME_VERSION ~7 Geeft aan dat u PowerShell 7 gebruikt wanneer u lokaal werkt. Zo niet, dan wordt PowerShell Core 6 gebruikt. Deze instelling wordt alleen gebruikt bij lokaal uitvoeren. De PowerShell-runtimeversie wordt bepaald door de powerShellVersion siteconfiguratie-instelling, wanneer deze wordt uitgevoerd in Azure, die kan worden ingesteld in de portal.

Instellingen synchroniseren

Wanneer u uw functies lokaal ontwikkelt, moeten alle lokale instellingen die voor uw app zijn vereist, ook aanwezig zijn in app-instellingen van de functie-app waarop uw code wordt geïmplementeerd. Mogelijk moet u ook de huidige instellingen van de functie-app downloaden naar uw lokale project. Hoewel u app-instellingen handmatig kunt configureren in Azure Portal, kunt u met de volgende hulpprogramma's ook app-instellingen synchroniseren met lokale instellingen in uw project:

Triggers en bindingen

Wanneer u uw functies lokaal ontwikkelt, moet u rekening houden met trigger- en bindingsgedrag. Voor HTTP-triggers kunt u gewoon het HTTP-eindpunt op de lokale computer aanroepen met behulp van http://localhost/. Voor niet-HTTP-geactiveerde functies zijn er verschillende opties om lokaal uit te voeren:

  • De eenvoudigste manier om bindingen tijdens lokale ontwikkeling te testen, is door gebruik te maken van verbindingsreeks s die gericht zijn op live Azure-services. U kunt liveservices targeten door de juiste verbindingsreeks-instellingen toe te voegen in de Values matrix in het local.settings.json-bestand. Wanneer u dit doet, zijn lokale uitvoeringen tijdens het testen van invloed op liveservicegegevens. Daarom kunt u overwegen om afzonderlijke services in te stellen voor gebruik tijdens het ontwikkelen en testen en vervolgens over te schakelen naar verschillende services tijdens de productie.
  • Voor triggers op basis van opslag kunt u een lokale opslagemulator gebruiken.
  • U kunt niet-HTTP-triggerfuncties handmatig uitvoeren met behulp van speciale beheerderseindpunten. Zie Voor meer informatie handmatig een niet-HTTP geactiveerde functie uitvoeren.

Tijdens lokale tests moet u de host lokaal uitvoeren die wordt geleverd door Core Tools (func.exe). Zie Azure Functions Core Tools voor meer informatie.

Lokale opslagemulator

Tijdens lokale ontwikkeling kunt u de lokale Azurite-emulator gebruiken bij het testen van functies met Azure Storage-bindingen (Queue Storage, Blob Storage en Table Storage), zonder verbinding te hoeven maken met externe opslagservices. Azurite kan worden geïntegreerd met Visual Studio Code en Visual Studio en u kunt het ook uitvoeren vanaf de opdrachtprompt met behulp van npm. Zie De Azurite-emulator gebruiken voor lokale Azure Storage-ontwikkeling voor meer informatie.

De volgende instelling in de Values verzameling van het local.settings.json-bestand vertelt de lokale Functions-host om Azurite te gebruiken voor de standaardverbinding AzureWebJobsStorage :

"AzureWebJobsStorage": "UseDevelopmentStorage=true"

Met deze instellingswaarde maakt elke Azure Storage-trigger of -binding die als verbinding wordt gebruikt AzureWebJobsStorage verbinding met Azurite wanneer deze lokaal wordt uitgevoerd. Houd rekening met deze overwegingen bij het gebruik van opslagemulatie tijdens lokale uitvoering:

  • U moet Azurite hebben geïnstalleerd en uitgevoerd.
  • U moet testen met een werkelijke opslagverbinding met Azure-services voordat u naar Azure publiceert.
  • Wanneer u uw project publiceert, moet u de AzureWebJobsStorage instelling niet publiceren als UseDevelopmentStorage=true. In Azure moet de AzureWebJobsStorage instelling altijd de verbindingsreeks zijn van het opslagaccount dat wordt gebruikt door uw functie-app. Zie AzureWebJobsStorage voor meer informatie.

Volgende stappen