Arbeta med Azure Functions Core Tools
Med Azure Functions Core Tools kan du utveckla och testa funktioner på din lokala dator från kommandotolken eller terminalen. Dina lokala funktioner kan ansluta till Azure-livetjänster och du kan felsöka dina funktioner på din lokala dator med hjälp av den fullständiga Functions-körningen. Du kan även distribuera en funktionsapp till din Azure-prenumeration.
Viktigt
Blanda inte lokal utveckling med Portal utveckling i samma Function-app. När du skapar och publicerar funktioner från ett lokalt projekt bör du inte försöka att underhålla eller ändra projekt koden i portalen.
Utveckla funktioner på din lokala dator och publicera dem till Azure med hjälp av Core Tools genom att följa dessa grundläggande steg:
Förutsättningar
Azure Functions Core Tools för närvarande antingen på Azure CLI eller Azure PowerShell för autentisering med ditt Azure-konto. Det innebär att du måste installera något av dessa verktyg för att kunna publicera till Azure från Azure Functions Core Tools.
Core Tools-versioner
Det finns fyra versioner av Azure Functions Core Tools. Vilken version du använder beror på din lokala utvecklingsmiljö, val av språkoch vilken supportnivå som krävs.
Välj en versionsflik nedan om du vill veta mer om varje specifik version och detaljerade installationsanvisningar:
Stöder version 4.x av Functions-körningen. Den här versionen Windows, macOS och Linux och använder plattformsspecifika pakethanterare eller npm för installation. Det här är den rekommenderade versionen av Functions-körningen och Core Tools.
Du kan bara installera en version av Core Tools på en viss dator. Om inget annat anges gäller exemplen i den här artikeln version 3.x.
Installera Azure Functions Core Tools
Azure Functions Core Tools innehåller en version av samma körning som används Azure Functions som du kan köra på din lokala utvecklingsdator. Den innehåller också kommandon för att skapa funktioner, ansluta till Azure och distribuera funktionsprojekt.
Från och med version 2.x körs Core Tools Windows, macOSoch Linux.
I följande steg används ett Windows installationsprogram (MSI) för att installera Core Tools v4.x. Mer information om andra paketbaserade installationsprogram finns i Viktigt för Core Tools.
Ladda ned och kör installationsprogrammet för Core Tools, baserat på din version Windows:
- v4.x – Windows 64-bitars (rekommenderas. Visual Studio felsökning av kod kräver 64-bitars.)
- v4.x – Windows 32-bitars
Ändra Core Tools-versioner
När du byter till en annan version av Core Tools bör du använda samma pakethanterare som den ursprungliga installationen för att flytta till en annan paketversion. Om du till exempel har installerat Core Tools version 2.x med npm bör du använda följande kommando för att uppgradera till version 3.x:
npm install -g azure-functions-core-tools@3 --unsafe-perm true
Om du använde Windows installationsprogram (MSI) för att installera Core Tools på Windows bör du avinstallera den gamla versionen från Lägg till/ta bort program innan du installerar en annan version.
Skapa ett lokalt Functions-projekt
En Functions-projektkatalog innehåller följande filer och mappar, oavsett språk:
| Filnamn | Beskrivning |
|---|---|
| host.json | Mer information finns i host.json-referensen. |
| local.settings.json | Inställningar används av Core Tools när de körs lokalt, inklusive appinställningar. Mer information finns i lokala inställningar. |
| .gitignore | Förhindrar att filen local.settings.json av misstag publiceras på en Git-lagringsplats. Mer information finns i lokala inställningar |
| .vscode\extensions.json | Inställningar när du öppnar projektmappen i Visual Studio Code. |
Mer information om Functions-projektmappen finns i guiden Azure Functions för utvecklare.
Kör följande kommando i terminalfönstret eller från en kommandotolk för att skapa projektet och den lokala Git-lagringsplatsen:
func init MyFunctionProj
I det här exemplet skapas ett Functions-projekt i en ny MyFunctionProj mapp. Du uppmanas att välja ett standardspråk för projektet.
Följande överväganden gäller för projekt initiering:
Om du inte anger
--worker-runtimealternativet i kommandot uppmanas du att välja språk. Mer information finns i func init-referensen.När du inte anger ett projektnamn initieras den aktuella mappen.
Om du planerar att publicera projektet till en anpassad Linux-container använder du alternativet för att se till att en
--dockerfileDockerfile genereras för projektet. Mer information finns i Skapa en funktion i Linux med en anpassad avbildning.
Vissa språk kan ha ytterligare överväganden:
Som standard skapar version 2.x och senare versioner av Core Tools funktionsappsprojekt för .NET-körningen som C#-klassprojekt (.csproj). Version 3.x har också stöd för att skapa funktioner som körs på .NET 5.0 i en isolerad process. Dessa C#-projekt, som kan användas med Visual Studio eller Visual Studio Code, kompileras under felsökningen och vid publicering till Azure.
Använd
--csxparametern om du vill arbeta lokalt med C#-skriptfiler (.csx). Det här är samma filer som du får när du skapar funktioner i Azure Portal och när du använder version 1.x av Core Tools. Mer information finns i func init-referensen.
Registrera tillägg
Från och med körningsversion 2.x implementeras Functions-utlösare och -bindningar som .NET-tilläggspaket (NuGet). För kompilerade C#-projekt refererar du helt enkelt till NuGet-tilläggspaketen för de specifika utlösare och bindningar som du använder. HTTP-bindningar och timerutlösare kräver inte tillägg.
För att förbättra utvecklingsupplevelsen för icke-C#-projekt kan du använda Functions för att referera till ett versionstilläggspaket i din host.json-projektfil. Tilläggspaket gör alla tillägg tillgängliga för din app och tar bort risken för paketkompatibilitetsproblem mellan tillägg. Tilläggspaketet tar även bort kravet på att installera .NET Core 3.1 SDK och måste hantera filen extensions.csproj.
Tilläggspaket är den rekommenderade metoden för andra funktionsprojekt än projekt som uppfyller kraven i C#. För dessa projekt genereras tilläggssamlingsinställningen i filen host.json under initieringen. Om det fungerar kan du hoppa över hela avsnittet.
Använda tilläggspaket
Det enklaste sättet att installera bindnings tillägg är att aktivera paket för tillägg. När du aktiverar paket installeras en fördefinierad uppsättning tilläggs paket automatiskt.
Om du vill aktivera tilläggs paket öppnar du host.jspå filen och uppdaterar innehållet så att det matchar följande kod:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[1.*, 2.0.0)"
}
}
När det stöds av ditt språk bör tilläggspaketet redan vara aktiverat när du har anropat func init . Du bör lägga till tilläggspaket i host.json innan du lägger till bindningar i filen function.json. Mer information finns i Registrera Azure Functions bindningstillägg.
Installera tillägg uttryckligen
Det kan finnas fall i ett non-.NET-projekt när du inte kan använda tilläggspaketet, till exempel när du behöver rikta in dig på en specifik version av ett tillägg som inte ingår i paketet. I dessa sällsynta fall kan du använda Core Tools för att installera de specifika tilläggspaket som krävs av projektet lokalt. Mer information finns i Installera tillägg explicit.
Lokala inställningar
När du kör i en funktionsapp i Azure lagras de inställningar som krävs av dina funktioner på ett säkert sätt i appinställningarna. Under lokal utveckling läggs de här inställningarna i stället till Values i objektet i local.settings.jspå filen. I local.settings.jspå filen lagras även inställningar som används av lokala utvecklingsverktyg.
Eftersom local.settings.jspå kan innehålla hemligheter, till exempel anslutningssträngar, bör du aldrig lagra den på en fjärrlagringsplats. Mer information om lokala inställningar finns i Filen Med lokala inställningar.
Som standard migreras inte de här inställningarna automatiskt när projektet publiceras till Azure. Använd alternativet --publish-local-settings när du publicerar för att kontrollera att de här inställningarna har lagts till i funktionsappen i Azure. Värden i ConnectionStrings avsnittet publiceras aldrig.
Funktionsappens inställningsvärden kan också läsas i koden som miljövariabler. Mer information finns i avsnittet Miljövariabler i de här språkspecifika referensavsnitten:
När ingen giltig anslutningssträng för lagring har angetts för och emulatorn inte används [AzureWebJobsStorage] visas följande felmeddelande:
Saknade värde för AzureWebJobsStorage i local.settings.json. Detta krävs för alla utlösare förutom HTTP. Du kan köra "func azure functionapp fetch-app-settings" eller ange en <functionAppName> anslutningssträng i local.settings.json.
Hämta anslutningssträngar för lagring
Även om du använder Microsoft Azure Storage Emulator för utveckling kanske du vill köra lokalt med en faktisk lagringsanslutning. Förutsatt att du redan har skapat ett lagringskontokan du hämta en giltig anslutningssträng för lagring på något av följande sätt:
I Azure Portaldu efter och väljer Storage konton.

Välj ditt lagringskonto, välj Åtkomstnycklar i Inställningar och kopiera sedan ett av värdena för Anslutningssträng.

Skapa en funktion
Kör följande kommando för att skapa en funktion i ett befintligt projekt:
func new
När du kör version 3.x/2.x uppmanas du att välja en mall på standardspråket func new för funktionsappen. Därefter uppmanas du att välja ett namn för funktionen. I version 1.x måste du också välja språk.
Du kan också ange funktionsnamnet och mallen i func new kommandot . I följande exempel används alternativet för --template att skapa en HTTP-utlösare med namnet MyHttpTrigger :
func new --template "Http Trigger" --name MyHttpTrigger
I det här exemplet skapas en Queue Storage-utlösare med namnet MyQueueTrigger :
func new --template "Queue Trigger" --name MyQueueTrigger
Mer information finns i func new kommandot.
Köra funktioner lokalt
Om du vill köra ett Functions-projekt kör du Functions-värden från projektets rotkatalog. Värden aktiverar utlösare för alla funktioner i projektet. Kommandot start varierar beroende på ditt projektspråk.
func start
Anteckning
Version 1.x av Functions-körningen kräver i stället func host start . Mer information finns i Azure Functions Core Tools referens.
När Functions-värden startar matar den ut URL:en för HTTP-utlösta funktioner, som i följande exempel:
Found the following functions: Host.Functions.MyHttpTrigger Job host started Http Function MyHttpTrigger: http://localhost:7071/api/MyHttpTrigger
Viktigt
När du kör lokalt tillämpas inte auktorisering för HTTP-slutpunkter. Det innebär att alla lokala HTTP-begäranden hanteras som authLevel = "anonymous" . Mer information finns i artikeln HTTP-bindning.
Skicka testdata till en funktion
Om du vill testa funktionerna lokalt startar du Functions-värden och anropar slutpunkter på den lokala servern med HTTP-begäranden. Vilken slutpunkt du anropar beror på typen av funktion.
Anteckning
I exemplen i det här avsnittet används verktyget cURL för att skicka HTTP-begäranden från terminalen eller en kommandotolk. Du kan använda val av verktyg för att skicka HTTP-begäranden till den lokala servern. Verktyget cURL är tillgängligt som standard i Linux-baserade system och Windows 10 version 17063 och senare. På äldre Windows måste du först ladda ned och installera cURL-verktyget.
Mer allmän information om hur du testar funktioner finns i Strategies for testing your code in Azure Functions.
HTTP- och webhook-utlösta funktioner
Du anropar följande slutpunkt för att lokalt köra HTTP- och webhook-utlösta funktioner:
http://localhost:{port}/api/{function_name}
Se till att använda samma servernamn och port som Functions-värden lyssnar på. Du ser detta i de utdata som genereras när du startar funktionsvärden. Du kan anropa den här URL:en med valfri HTTP-metod som stöds av utlösaren.
Följande cURL-kommando utlöser MyHttpTrigger snabbstartsfunktionen från en GET-begäran med namnparametern som skickas i frågesträngen.
curl --get http://localhost:7071/api/MyHttpTrigger?name=Azure%20Rocks
I följande exempel är samma funktion som anropas från ett POST-begärande som skriver namnet i begärandetexten:
curl --request POST http://localhost:7071/api/MyHttpTrigger --data '{"name":"Azure Rocks"}'
Du kan göra GET-begäranden från en webbläsare och skicka data i frågesträngen. För alla andra HTTP-metoder måste du använda cURL, Fiddler, Postman eller ett liknande HTTP-testverktyg som stöder POST-begäranden.
Funktioner som inte utlöses av HTTP
För alla funktioner förutom HTTP- och Event Grid-utlösare kan du testa dina funktioner lokalt med hjälp av REST genom att anropa en särskild slutpunkt som kallas för en administrationsslutpunkt. Funktionen utlöses när den här slutpunkten anropas med en HTTP POST-begäran på den lokala servern.
Om du Event Grid utlösta funktioner lokalt kan du läsa Lokal testning med visningswebbappen.
Om du vill kan du skicka testdata till körningen i brödtexten i POST-begäran. Den här funktionen liknar fliken Test i Azure Portal.
Du anropar följande administratörsslutpunkt för att utlösa icke-HTTP-funktioner:
http://localhost:{port}/admin/functions/{function_name}
Om du vill skicka testdata till administratörsslutpunkten för en funktion måste du ange data i brödtexten i ett POST-begärandemeddelande. Meddelandetexten måste ha följande JSON-format:
{
"input": "<trigger_input>"
}
Värdet <trigger_input> innehåller data i ett format som förväntas av funktionen. Följande cURL-exempel är en POST till en QueueTriggerJS funktion. I det här fallet är indata en sträng som motsvarar det meddelande som förväntas finnas i kön.
curl --request POST -H "Content-Type:application/json" --data '{"input":"sample queue data"}' http://localhost:7071/admin/functions/QueueTrigger
När du anropar en administratörsslutpunkt i funktionsappen i Azure måste du ange en åtkomstnyckel. Mer information finns i Funktionsåtkomstnycklar.
Publicera till Azure
Den Azure Functions Core Tools stöder tre typer av distribution:
| Distributionstyp | Kommando | Beskrivning |
|---|---|---|
| Project filer | func azure functionapp publish |
Distribuerar funktionsprojektfiler direkt till funktionsappen med hjälp av zip-distribution . |
| Anpassad container | func deploy |
Distribuerar projektet till en Linux-funktionsapp som en anpassad Docker-container. |
| Kubernetes-kluster | func kubernetes deploy |
Distribuerar din Linux-funktionsapp som en anpassad Docker-container till ett Kubernetes-kluster. |
Innan du publicerar
Viktigt
Du måste ha Azure CLI eller Azure PowerShell installerat lokalt för att kunna publicera till Azure från Core Tools.
En projektmapp kan innehålla språkspecifika filer och kataloger som inte ska publiceras. Undantagna objekt visas i en .funcignore-fil i rotprojektmappen.
Du måste redan ha skapat en funktionsapp i din Azure-prenumeration, som du ska distribuera koden till. Projekt som kräver kompilering bör byggas så att binärfilerna kan distribueras.
Information om hur du skapar en funktionsapp från kommandotolken eller terminalfönstret med hjälp av Azure CLI eller Azure PowerShell finns i Skapa en funktionsapp för serverlös körning.
Viktigt
När du skapar en funktionsapp i Azure Portal används version 3.x av funktionskörningen som standard. Om du vill att funktionsappen ska använda version 1.x av körningen följer du anvisningarna i Kör på version 1.x. Du kan inte ändra körningsversionen för en funktionsapp som har befintliga funktioner.
Distribuera projektfiler
Om du vill publicera din lokala kod till en funktionsapp i Azure använder du publish kommandot :
func azure functionapp publish <FunctionAppName>
Följande överväganden gäller för den här typen av distribution:
När du publicerar skriver du över befintliga filer i funktionsappen.
Använd alternativet
--publish-local-settingsför att automatiskt skapa appinställningar i funktionsappen baserat på värden i filen local.settings.json.En fjärrbygge utförs på kompilerade projekt. Detta kan styras med hjälp av
--no-buildalternativet.Projektet distribueras så att det körs från distributionspaketet. Om du vill inaktivera det här rekommenderade distributionsläget använder du
--nozipalternativet.Java använder Maven för att publicera ditt lokala projekt till Azure. Använd i stället följande kommando för att publicera till Azure:
mvn azure-functions:deploy. Azure-resurser skapas under den första distributionen.Du får ett felmeddelande om du försöker publicera till en
<FunctionAppName>som inte finns i din prenumeration.
Kubernetes-kluster
Med Functions kan du också definiera functions-projektet som ska köras i en Docker-container. Använd alternativet --docker för för func init att generera en Dockerfile för ditt specifika språk. Den här filen används sedan när du skapar en container som ska distribueras.
Core Tools kan användas för att distribuera projektet som en anpassad containeravbildning till ett Kubernetes-kluster. Vilket kommando du använder beror på vilken typ av skalning som används i klustret.
Följande kommando använder Dockerfile för att generera en container och distribuera den till ett Kubernetes-kluster.
func kubernetes deploy --name <DEPLOYMENT_NAME> --registry <REGISTRY_USERNAME>
Mer information finns i Distribuera en funktionsapp till Kubernetes.
Information om hur du publicerar en anpassad container till Azure utan Kubernetes finns i Skapa en funktion i Linux med hjälp av en anpassad container.
Övervakningsfunktioner
Det rekommenderade sättet att övervaka körningen av dina funktioner är genom att integrera med Azure Application Insights. Du kan också strömma körningsloggar till din lokala dator. Mer information finns i Övervaka Azure Functions.
Integrering Insights program
Integrering Insights program bör aktiveras när du skapar funktionsappen i Azure. Om din funktionsapp av någon anledning inte är ansluten till en Application Insights-instans är det enkelt att göra den här integreringen i Azure Portal. Mer information finns i Enable Application Insights integration (Aktivera Application Insights-integrering).
Aktivera strömningsloggar
Du kan visa en dataström med loggfiler som genereras av dina funktioner i en kommandoradssession på den lokala datorn.
Inbyggd loggströmning
Använd kommandot func azure functionapp logstream för att börja ta emot strömningsloggar för en specifik funktionsapp som körs i Azure, som i följande exempel:
func azure functionapp logstream <FunctionAppName>
Anteckning
Inbyggd loggströmning har ännu inte aktiverats i Core Tools för funktionsappar som körs på Linux i en förbrukningsplan. För dessa värdplaner måste du i stället använda Live Metrics Stream för att visa loggarna nästan i realtid.
Live-ström med mätvärden
Du kan visa Live Metrics Stream för funktionsappen i ett nytt webbläsarfönster genom att inkludera --browser alternativet , som i följande exempel:
func azure functionapp logstream <FunctionAppName> --browser
Den här typen av strömningsloggar kräver att Application Insights-integrering är aktiverat för din funktionsapp.
Nästa steg
Lär dig hur du utvecklar, testar och publicerar Azure Functions med hjälp av Azure Functions Core Tools Microsoft Learn-modulen Azure Functions Core Tools har öppen källkod och finns på GitHub.
Om du vill skicka in en bugg- eller funktionsbegäran öppnar du GitHub problem.
