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 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
I local.settings.json-filen lagras 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!
Eftersom local.settings.json kan innehålla hemligheter, till exempel niska veze, 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 true på 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 niska veze. 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 niska veze 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ä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ä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 niska veze som används av dina funktionsbindningar. Den här samlingen används endast av ramverk som vanligtvis får niska veze 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 funktionskoden bör du lagra värdet niska veze 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 niska veze ellerUseDevelopmentStorage=true |
Innehåller niska veze 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=true anvä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 niska veze som är inriktade på Live Azure-tjänster. Du kan rikta livetjänster genom att lägga till lämpliga niska veze 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.
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, även personligt identifierbar information (PII).
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:
- Visual Studio Code med ett tillägg från Visual Studio Marketplace, till exempel REST Client
- PowerShell Invoke-RestMethod
- Microsoft Edge – verktyg för nätverkskonsol
- Bruno
- hårlock
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
somUseDevelopmentStorage=true
. I AzureAzureWebJobsStorage
måste inställningen alltid vara niska veze för det lagringskonto som används av funktionsappen. Mer information finns iAzureWebJobsStorage
.
Nästa steg
- Mer information om lokal utveckling av kompilerade C#-funktioner (både processbaserad och isolerad arbetsprocess) med Visual Studio finns i Utveckla Azure Functions med Visual Studio.
- Mer information om lokal utveckling av funktioner med VS Code på en Mac-, Linux- eller Windows-dator finns i artikeln komma igång med Visual Studio Code för önskat språk:
- Mer information om hur du utvecklar funktioner från kommandotolken eller terminalen finns i Arbeta med Azure Functions Core Tools.