Koda och testa Azure Functions lokalt

Även om du kan utveckla och testa Azure Functions i Azure Portal 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 filen local.settings.json.

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:

Miljö Språk Description
Visual Studio Code C# (pågående)
C# (isolerad process)
JavaScript
PowerShell
Python
Det Azure Functions tillägget för VS Code lägger till Functions-stöd i VS Code. Kräver kärnverktygen. 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.
Kommandotolk eller terminal C# (pågående)
C# (isolerad process)
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ående)
C# (isolerad process)
De 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-arketypen 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.

Anteckning

Blanda inte lokal utveckling med portalutveckling i samma funktionsapp. När du skapar och publicerar funktioner från ett lokalt projekt kan du inte underhålla eller ändra projektkoden i 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 på samma sätt som andra appar. Du kan också publicera ditt funktionsappsprojekt från någon av dessa miljöer till Azure.

Fil för lokala inställningar

Filen local.settings.json lagrar appinställningar och inställningar som används av lokala utvecklingsverktyg. Inställningar i filen local.settings.json används endast när du kör projektet lokalt. När du publicerar projektet till 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ängar, bör du aldrig lagra den på en fjärrlagringsplats. Verktyg som stöder Functions tillhandahåller sätt att synkronisera inställningar i filen local.settings.json med appinställningarna i funktionsappen som projektet distribueras till.

Den lokala inställningsfilen 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 på truekrypteras alla värden med en lokal datornyckel. Används med func settings kommandon. Standardvärdet är false. Du kanske vill kryptera filen local.settings.json på den lokala datorn när den innehåller hemligheter, till exempel tjänstanslutningssträngar. 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 appinställning för anslutningssträngar, till exempel Connection för Blob Storage-utlösaren. För dessa egenskaper behöver du en programinställning som definierats i matrisen Values . Se den efterföljande tabellen för en lista över vanliga inställningar.
Värden måste vara strängar och inte JSON-objekt eller matriser. Inställningsnamn får 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ällningarna 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 host.json-inställningarna, 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 gå 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 När det är inställt på truetillåter begäranden withCredentials .
ConnectionStrings En samling. Använd inte den här samlingen för anslutningssträngarna som används av dina funktionsbindningar. Den här samlingen används endast av ramverk som vanligtvis hämtar anslutningssträngar från ConnectionStrings avsnittet i en konfigurationsfil, till exempel Entity Framework. Anslutningssträ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 av dina funktionsappinställningar. Om du skapar en SqlConnection i funktionskoden bör du lagra värdet för anslutningssträngen med dina andra anslutningar i Programinställningar i portalen.

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

Inställning Värden Beskrivning
AzureWebJobsStorage Anslutningssträng för lagringskonto, eller
UseDevelopmentStorage=true
Innehåller anslutningssträngen 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 azurite-emulatorn installerad lokalt och du anger AzureWebJobsStorage till UseDevelopmentStorage=trueanvänder Core Tools emulatorn. Emulatorn är användbar under utvecklingen, men du bör testa med en faktisk lagringsanslutning före distributionen.
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 PowerShell 7 ska användas när det körs lokalt. Om det inte anges 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 Portal, men med följande verktyg kan du också synkronisera appinställningar med lokala inställningar i projektet:

Nästa steg