Koda och testa Azure Functions lokalt

Även om du kan utveckla och testa Azure Functions i Azure-portalen föredrar många utvecklare en lokal utvecklingsupplevelse. När du använder Functions blir det enklare att använda din favoritkodredigerare och utvecklingsverktyg för att skapa och testa funktioner på den lokala datorn. Dina lokala funktioner kan ansluta till Live Azure-tjänster och du kan felsöka dem på din lokala dator med hjälp av den fullständiga Functions-körningen.

Den här artikeln innehåller länkar till specifika utvecklingsmiljöer för önskat språk. Det ger också viss delad vägledning för lokal utveckling, till exempel att arbeta med local.settings.json-filen.

Lokala utvecklingsmiljöer

Hur du utvecklar funktioner på din lokala dator beror på dina språk - och verktygsinställningar. Miljöerna i följande tabell stöder lokal utveckling:

Environment Språk beskrivning
Visual Studio Code C# (pågår)
C# (isolerad arbetsprocess)
JavaScript
PowerShell
Python
Azure Functions-tillägget för VS Code lägger till Functions-stöd till VS Code. Kräver Core Tools. Stöder utveckling i Linux, macOS och Windows när du använder version 2.x av Core Tools. Mer information finns i Skapa din första funktion med Visual Studio Code.
Kommandotolken eller terminalen C# (pågår)
C# (isolerad arbetsprocess)
JavaScript
PowerShell
Python
Azure Functions Core Tools tillhandahåller kärnkörning och mallar för att skapa funktioner som möjliggör lokal utveckling. Version 2.x stöder utveckling i Linux, macOS och Windows. Alla miljöer förlitar sig på Core Tools för den lokala Functions-körningen.
Visual Studio C# (pågår)
C# (isolerad arbetsprocess)
Azure Functions-verktygen ingår i Azure-utvecklingsarbetsbelastningen i Visual Studio, från och med Visual Studio 2019. Gör att du kan kompilera funktioner i ett klassbibliotek och publicera .dll till Azure. Innehåller Core Tools för lokal testning. Mer information finns i Utveckla Azure Functions med Visual Studio.
Maven (olika) Java Maven-arketyp stöder Core Tools för att möjliggöra utveckling av Java-funktioner. Version 2.x stöder utveckling i Linux, macOS och Windows. Mer information finns i Skapa din första funktion med Java och Maven. Stöder även utveckling med Eclipse och IntelliJ IDEA.

Kommentar

På grund av begränsningar för redigering av funktionskod i Azure-portalen bör du utveckla dina funktioner lokalt och publicera kodprojektet till en funktionsapp i Azure. Mer information finns i Utvecklingsbegränsningar i Azure-portalen

Med var och en av dessa lokala utvecklingsmiljöer kan du skapa funktionsappprojekt och använda fördefinierade funktionsmallar för att skapa nya funktioner. Var och en använder Core Tools så att du kan testa och felsöka dina funktioner mot den verkliga Functions-körningen på din egen dator precis som andra appar. Du kan också publicera ditt funktionsappsprojekt från någon av dessa miljöer till Azure.

Lokala projektfiler

En Functions-projektkatalog innehåller följande filer i projektrotmappen, oavsett språk:

Filnamn beskrivning
host.json Mer information finns i referensen för host.json.
local.settings.json Inställningar som används av Core Tools när du kör lokalt, inklusive appinställningar. Mer information finns i filen med lokala inställningar.
.gitignore Förhindrar att den local.settings.json filen publiceras av misstag till en Git-lagringsplats. Mer information finns i filen med lokala inställningar.
.vscode\extensions.json Inställningar fil som används när du öppnar projektmappen i Visual Studio Code.

Andra filer i projektet beror på ditt språk och specifika funktioner. Mer information finns i utvecklarguiden för ditt språk.

Fil för lokala inställningar

I local.settings.json-filen lagras appinställningar och inställningar som används av lokala utvecklingsverktyg. Inställningar i filen local.settings.json används bara när du kör projektet lokalt. När du publicerar projektet i Azure måste du också lägga till nödvändiga inställningar i appinställningarna för funktionsappen.

Viktigt!

Eftersom local.settings.json kan innehålla hemligheter, till exempel anslutningssträng s, bör du aldrig lagra den på en fjärrlagringsplats. Verktyg som stöder Functions ger sätt att synkronisera inställningar i den local.settings.json filen med appinställningarna i funktionsappen som projektet distribueras till.

Filen med lokala inställningar har den här strukturen:

{
  "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>"
  }
}

De här inställningarna stöds när du kör projekt lokalt:

Inställning beskrivning
IsEncrypted När den här inställningen är inställd truepå krypteras alla värden med en lokal datornyckel. Används med func settings kommandon. Standardvärdet är false. Du kanske vill kryptera local.settings.json filen på den lokala datorn när den innehåller hemligheter, till exempel tjänst anslutningssträng. Värden dekrypterar automatiskt inställningarna när den körs. func settings decrypt Använd kommandot innan du försöker läsa lokalt krypterade inställningar.
Values Samling programinställningar som används när ett projekt körs lokalt. Dessa nyckel/värde-par (strängsträng) motsvarar programinställningar i funktionsappen i Azure, till exempel AzureWebJobsStorage. Många utlösare och bindningar har en egenskap som refererar till en anslutningssträng appinställning, till exempel Connection för Blob Storage-utlösaren. För dessa egenskaper behöver du en programinställning som definierats i matrisen Values . I den efterföljande tabellen finns en lista över vanliga inställningar.
Värden måste vara strängar och inte JSON-objekt eller matriser. Inställningsnamn kan inte innehålla en dubbel understrykning (__) och bör inte innehålla ett kolon (:). Dubbla understrykningstecken reserveras av körningen och kolonet är reserverat för att stödja beroendeinmatning.
Host Inställningar i det här avsnittet anpassar functions-värdprocessen när du kör projekt lokalt. De här inställningarna är separata från inställningarna för host.json, som även gäller när du kör projekt i Azure.
LocalHttpPort Anger standardporten som används när du kör den lokala Functions-värden (func host start och func run). Kommandoradsalternativet --port har företräde framför den här inställningen. När du till exempel kör i Visual Studio IDE kan du ändra portnumret genom att navigera till fönstret Projektegenskaper –> Felsöka och uttryckligen ange portnumret i ett host start --port <your-port-number> kommando som kan anges i fältet "Programargument".
CORS Definierar ursprung som tillåts för resursdelning mellan ursprung (CORS). Ursprung anges som en kommaavgränsad lista utan blanksteg. Jokertecknets värde (*) stöds, vilket tillåter begäranden från alla ursprung.
CORSCredentials Tillåter begäranden när det är inställt på true.withCredentials
ConnectionStrings En samling. Använd inte den här samlingen för de anslutningssträng som används av dina funktionsbindningar. Den här samlingen används endast av ramverk som vanligtvis får anslutningssträng från ConnectionStrings avsnittet i en konfigurationsfil, till exempel Entity Framework. Anslut ionssträngar i det här objektet läggs till i miljön med providertypen System.Data.SqlClient. Objekt i den här samlingen publiceras inte i Azure med andra appinställningar. Du måste uttryckligen lägga till dessa värden i Connection strings samlingen med dina funktionsappinställningar. Om du skapar en SqlConnection i funktionskoden bör du lagra värdet anslutningssträng med dina andra anslutningar i Program Inställningar i portalen.

Följande programinställningar kan inkluderas i matrisen Values när du kör lokalt:

Inställning Värden beskrivning
AzureWebJobsStorage Lagringskonto anslutningssträng, eller
UseDevelopmentStorage=true
Innehåller anslutningssträng för ett Azure Storage-konto. Krävs när du använder andra utlösare än HTTP. Mer information finns i referensen AzureWebJobsStorage .
När du har installerat Azurite-emulatorn lokalt och du har angett AzureWebJobsStorage till UseDevelopmentStorage=trueanvänder Core Tools emulatorn. Mer information finns i Lokal lagringsemulator.
AzureWebJobs.<FUNCTION_NAME>.Disabled true|false Om du vill inaktivera en funktion när den körs lokalt lägger du till "AzureWebJobs.<FUNCTION_NAME>.Disabled": "true" i samlingen, där <FUNCTION_NAME> är namnet på funktionen. Mer information finns i Inaktivera funktioner i Azure Functions.
FUNCTIONS_WORKER_RUNTIME dotnet
dotnet-isolated
node
java
powershell
python
Anger målspråket för Functions-körningen. Krävs för version 2.x och senare av Functions-körningen. Den här inställningen genereras för projektet av Core Tools. Mer information finns i referensen FUNCTIONS_WORKER_RUNTIME .
FUNCTIONS_WORKER_RUNTIME_VERSION ~7 Anger att du ska använda PowerShell 7 när du kör lokalt. Om den inte har angetts används PowerShell Core 6. Den här inställningen används bara när du kör lokalt. PowerShell-körningsversionen bestäms av platskonfigurationsinställningen powerShellVersion när den körs i Azure, som kan anges i portalen.

Synkronisera inställningar

När du utvecklar dina funktioner lokalt måste alla lokala inställningar som krävs av din app också finnas i appinställningarna för funktionsappen som koden distribueras till. Du kan också behöva ladda ned aktuella inställningar från funktionsappen till ditt lokala projekt. Du kan konfigurera appinställningar manuellt i Azure-portalen, men med följande verktyg kan du även synkronisera appinställningar med lokala inställningar i projektet:

Utlösare och bindningar

När du utvecklar dina funktioner lokalt måste du ta hänsyn till utlösar- och bindningsbeteenden. För HTTP-utlösare kan du helt enkelt anropa HTTP-slutpunkten på den lokala datorn med hjälp av http://localhost/. För icke-HTTP-utlösta funktioner finns det flera alternativ att köra lokalt:

  • Det enklaste sättet att testa bindningar under lokal utveckling är att använda anslutningssträng som är inriktade på Live Azure-tjänster. Du kan rikta livetjänster genom att lägga till lämpliga anslutningssträng inställningar i matrisen Values i local.settings.json-filen. När du gör detta påverkar lokala körningar under testning livetjänstdata. Därför bör du överväga att konfigurera separata tjänster som ska användas under utveckling och testning och sedan växla till olika tjänster under produktionen.
  • För lagringsbaserade utlösare kan du använda en lokal lagringsemulator.
  • Du kan köra icke-HTTP-utlösarfunktioner manuellt med hjälp av särskilda administratörsslutpunkter. Mer information finns i Köra en icke HTTP-utlöst funktion manuellt.

Under lokal testning måste du köra värden som tillhandahålls av Core Tools (func.exe) lokalt. Mer information finns i Azure Functions Core Tools.

Emulator för lokal lagring

Under den lokala utvecklingen kan du använda den lokala Azurite-emulatorn när du testar funktioner med Azure Storage-bindningar (Queue Storage, Blob Storage och Table Storage) utan att behöva ansluta till fjärrlagringstjänster. Azurite integreras med Visual Studio Code och Visual Studio, och du kan också köra det från kommandotolken med npm. Mer information finns i Använda Azurite-emulatorn för lokal Azure Storage-utveckling.

Följande inställning i Values samlingen av filen local.settings.json instruerar den lokala Functions-värden att använda Azurite för standardanslutningen AzureWebJobsStorage :

"AzureWebJobsStorage": "UseDevelopmentStorage=true"

Med det här inställningsvärdet ansluter alla Azure Storage-utlösare eller bindningar som använder AzureWebJobsStorage som anslutning till Azurite när de körs lokalt. Tänk på följande när du använder lagringsemulering under lokal körning:

  • Du måste ha Azurite installerat och körs.
  • Du bör testa med en faktisk lagringsanslutning till Azure-tjänster innan du publicerar till Azure.
  • När du publicerar projektet ska du inte publicera inställningen AzureWebJobsStorage som UseDevelopmentStorage=true. I Azure AzureWebJobsStorage måste inställningen alltid vara anslutningssträng för det lagringskonto som används av funktionsappen. Mer information finns i AzureWebJobsStorage.

Nästa steg