Dela via


Koda och testa Azure Functions lokalt

När det är möjligt bör du skapa och verifiera ditt Azure Functions-kodprojekt i en lokal utvecklingsmiljö. Azure Functions Core Tools tillhandahåller en lokal körningsversion av Azure Functions som integreras med populära utvecklingsverktyg för en integrerad utveckling, felsökning och distributioner. Dina lokala funktioner kan till och med ansluta till Live Azure-tjänster.

Den här artikeln innehåller några delade riktlinjer för lokal utveckling, till exempel att arbeta med filenlocal.settings.json. Den länkar också till miljöspecifik vägledning för utveckling.

Tips/Råd

Du hittar detaljerad information om hur du utvecklar funktioner lokalt i de länkade IDE-specifika vägledningsartiklarna.

Lokala utvecklingsmiljöer

Hur du utvecklar funktioner på din lokala dator beror på dina språk - och verktygsinställningar. Se till att välja önskat språk överst i artikeln.

Tips/Råd

All lokal utveckling är beroende av Azure Functions Core Tools för att tillhandahålla körning av funktioner för felsökning i en lokal miljö.

Du kan använda dessa utvecklingsmiljöer för att koda funktioner lokalt på önskat språk:

Miljö beskrivning
Visual Studio Azure Functions-verktygen ingår i Azure-utvecklingsarbetsbelastningen i Visual Studio. Gör att du kan kompilera och distribuera C#-funktionskoden till Azure som ett .NET-klassbibliotek. Innehåller Core Tools för lokal testning. Mer information finns i Skapa din första C#-funktion i Azure med Hjälp av Visual Studio
Visual Studio Code Azure Functions-tillägget för Visual Studio Code lägger till Functions-stöd i Visual Studio Code. Kräver kärnverktygen. Stöder utveckling i Linux, macOS och Windows. Mer information finns i Skapa din första funktion med Visual Studio Code.
Kommandotolken eller terminalen Azure Functions Core Tools tillhandahåller kärnkörning och mallar för att skapa funktioner som möjliggör lokal utveckling. Stöder utveckling i Linux, macOS och Windows. Mer information finns i Skapa en C#-funktion i Azure från kommandoraden.
Miljö beskrivning
Maven Maven-arketyp använder Core Tools för att möjliggöra utveckling av Java-funktioner. Stöder utveckling i Linux, macOS och Windows. Mer information finns i Skapa din första funktion med Java och Maven.
Visual Studio Code Azure Functions-tillägget för Visual Studio Code lägger till Functions-stöd i Visual Studio Code. Kräver kärnverktyg. Stöder utveckling i Linux, macOS och Windows. Mer information finns i Skapa din första funktion med Visual Studio Code.
IntelliJ IDEA Maven-archetyp och Core Tools låter dig utveckla dina funktioner med hjälp av IntelliJ. Mer information finns i Skapa din första Java-funktion i Azure med IntelliJ.
Eclipse Med Maven-arketyp och kärnverktyg kan du utveckla dina funktioner med Eclipse. Mer information finns i Skapa din första Java-funktion i Azure med ecplise.
Miljö beskrivning
Visual Studio Code Azure Functions-tillägget för Visual Studio Code lägger till Functions-stöd i Visual Studio Code. Kräver grundverktygen. Stöder utveckling i Linux, macOS och Windows. Mer information finns i Skapa din första funktion med Visual Studio Code.
Kommandotolken eller terminalen Azure Functions Core Tools tillhandahåller kärnkörning och mallar för att skapa funktioner som möjliggör lokal utveckling. Stöder utveckling i Linux, macOS och Windows. Mer information finns i Skapa en Node.js funktion i Azure från kommandoraden.
Miljö beskrivning
Visual Studio Code Azure Functions-tillägget för Visual Studio Code lägger till Functions-stöd i Visual Studio Code. Kräver Kärnverktyg. Stöder utveckling i Linux, macOS och Windows. Mer information finns i Skapa din första funktion med Visual Studio Code.
Kommandotolken eller terminalen Azure Functions Core Tools tillhandahåller kärnkörning och mallar för att skapa funktioner som möjliggör lokal utveckling. Stöder utveckling i Linux, macOS och Windows. Mer information finns i Skapa en PowerShell-funktion i Azure från kommandoraden.
Miljö beskrivning
Visual Studio Code Azure Functions-tillägget för Visual Studio Code lägger till Functions-stöd i Visual Studio Code. Kräver kärnverktygen. Stöder utveckling i Linux, macOS och Windows. Mer information finns i Skapa din första funktion med Visual Studio Code.
Kommandotolken eller terminalen Azure Functions Core Tools tillhandahåller kärnkörning och mallar för att skapa funktioner som möjliggör lokal utveckling. Stöder utveckling i Linux, macOS och Windows. Mer information finns i Skapa en Python-funktion i Azure från kommandoraden.

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 de körs 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ällningsfil 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

Filen local.settings.json lagrar appinställningar och inställningar som används av lokala utvecklingsverktyg. Inställningar i local.settings.json filen används endast 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!

local.settings.json Eftersom filen kan innehålla hemligheter, till exempel anslutningssträngar, bör du vara försiktig med att använda källkontroll. Verktyg som stöder Functions ger sätt att synkronisera inställningar i local.settings.json filen med appinställningarna i funktionsappen som projektet distribueras till.

Filen local.settings.json 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ärdprogrammet dekrypterar automatiskt inställningarna när det 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örtiden, medan kolonet är reserverat för att stödja beroendeinjektion.
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 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ärd (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 När den är inställd på true, tillåter withCredentials begäranden.
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. 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 med dina funktionsappinställningar. Om du skapar en SqlConnection i din funktionskod bör du lagra anslutningssträngens värde tillsammans 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 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
Specificerar målspråket för Functions-körningsmiljön. 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 Portal, 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 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 kan lokala körningar under testningen påverka dina produktionstjänster. Överväg i stället att konfigurera separata tjänster som ska användas under utveckling och testning och sedan byta 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 funktion som inte är HTTP-utlöst manuellt.

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

HTTP-testverktyg

Under utvecklingen är det enkelt att anropa någon av dina funktionsslutpunkter från en webbläsare när de stöder HTTP GET-metoden. För andra HTTP-metoder som stöder nyttolaster, till exempel POST eller PUT, måste du dock använda ett HTTP-testverktyg för att skapa och skicka dessa HTTP-begäranden till funktionsslutpunkterna.

Varning

För scenarier där dina begäranden måste innehålla känsliga data ska du använda ett verktyg som skyddar dina data och minskar risken för att exponera känsliga data för allmänheten. Känsliga data som du bör skydda kan vara: autentiseringsuppgifter, hemligheter, åtkomsttoken, API-nycklar, geoplatsdata, till och med personliga data.

Du kan skydda dina data genom att välja ett HTTP-testverktyg som fungerar antingen offline eller lokalt, inte synkroniserar dina data till molnet och inte kräver att du loggar in på ett onlinekonto. Vissa verktyg kan också skydda dina data från oavsiktlig exponering genom att implementera specifika säkerhetsfunktioner.

Undvik att använda verktyg som lagrar historiken för HTTP-begäranden centralt (inklusive känslig information), inte följer bästa säkerhetsmetoder eller inte respekterar datasekretess.

Överväg att använda något av dessa verktyg för att skicka HTTP-begäranden på ett säkert sätt till funktionsslutpunkterna:

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öra.
  • 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.