Místní psaní kódu a testování funkcí Azure Functions

I když můžete vyvíjet a testovat Azure Functions v Azure Portal, mnoho vývojářů preferuje místní vývojové prostředí. Když používáte Functions, používání oblíbeného editoru kódu a vývojových nástrojů k vytváření a testování funkcí na místním počítači bude jednodušší. Místní funkce se můžou připojit k živým službám Azure a můžete je ladit na místním počítači pomocí úplného modulu runtime Functions.

Tento článek obsahuje odkazy na konkrétní vývojová prostředí pro váš upřednostňovaný jazyk. Poskytuje také některé sdílené pokyny pro místní vývoj, jako je například práce se souborem local.settings.json.

Místní vývojová prostředí

Způsob, jakým vyvíjíte funkce v místním počítači, závisí na jazyku a předvolbách nástrojů. Prostředí v následující tabulce podporují místní vývoj:

Prostředí Jazyky Description
Visual Studio Code Jazyk C# (knihovna tříd)
Izolovaný proces C# (.NET 5.0)
JavaScript
PowerShell
Python
Rozšíření Azure Functions pro VS Code přidává podporu functions do VS Code. Vyžaduje nástroje Core Tools. Podporuje vývoj v Linuxu, macOS a Windows při použití verze 2.x nástrojů Core Tools. Další informace najdete v tématu Vytvoření první funkce pomocí Visual Studio Code.
Příkazový řádek nebo terminál Jazyk C# (knihovna tříd)
Izolovaný proces C# (.NET 5.0)
JavaScript
PowerShell
Python
Azure Functions Core Tools poskytuje základní modul runtime a šablony pro vytváření funkcí, které umožňují místní vývoj. Verze 2.x podporuje vývoj v Linuxu, macOS a Windows. Všechna prostředí využívají Nástroje Core Tools pro místní modul runtime Functions.
Visual Studio 2019 Jazyk C# (knihovna tříd)
Izolovaný proces C# (.NET 5.0)
Nástroje Azure Functions jsou součástí vývojové úlohy AzureVisual Studio 2019 a novějších verzích. Umožňuje zkompilovat funkce v knihovně tříd a publikovat .dll do Azure. Obsahuje nástroje Core Tools pro místní testování. Další informace najdete v tématu Vývoj Azure Functions pomocí Visual Studio.
Maven (různé) Java Archetyp Maven podporuje nástroje Core Tools, které umožňují vývoj funkcí v Javě. Verze 2.x podporuje vývoj v Linuxu, macOS a Windows. Další informace najdete v tématu Vytvoření první funkce pomocí Javy a Mavenu. Podporuje také vývoj pomocí Eclipse a IntelliJ IDEA.

Důležité

Nepromíchejte místní vývoj s vývojem portálu ve stejné aplikaci funkcí. Když vytváříte a publikujete funkce z místního projektu, neměli byste se pokoušet udržovat ani upravovat kód projektu na portálu.

Každé z těchto místních vývojových prostředí umožňuje vytvářet projekty aplikací funkcí a používat předdefinované šablony funkcí k vytváření nových funkcí. Každý používá nástroje Core Tools, abyste mohli testovat a ladit funkce proti skutečnému modulu runtime Functions na vlastním počítači stejně jako jakékoli jiné aplikace. Projekt aplikace funkcí můžete také publikovat z libovolného z těchto prostředí do Azure.

Soubor místního nastavení

Soubor local.settings.json ukládá nastavení a nastavení aplikace používané místními vývojářskými nástroji. Nastavení v souboru local.settings.json se používají jenom při místním spuštění projektu.

Důležité

Protože soubor local.settings.json může obsahovat tajné kódy, jako jsou připojovací řetězce, neměli byste ho nikdy uložit do vzdáleného úložiště. Nástroje, které podporují funkce, poskytují způsoby synchronizace nastavení v souboru local.settings.json s nastavením aplikace v aplikaci funkcí, do které je projekt nasazený.

Soubor místního nastavení má tuto strukturu:

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

Tato nastavení se podporují při místním spouštění projektů:

Nastavení Popis
IsEncrypted Pokud je toto nastavení nastavené na true, všechny hodnoty se šifrují pomocí klíče místního počítače. Používá se s func settings příkazy. Výchozí hodnota je false. Soubor local.settings.json můžete chtít zašifrovat na místním počítači, když obsahuje tajné kódy, jako jsou připojovací řetězce služby. Hostitel automaticky dešifruje nastavení při spuštění. func settings decrypt Před pokusem o čtení místně šifrovaného nastavení použijte příkaz.
Values Kolekce nastavení aplikací používaná při místním spuštění projektu Tyto páry klíč-hodnota (řetězec) odpovídají nastavení aplikace ve vaší aplikaci funkcí v Azure, například AzureWebJobsStorage. Mnoho triggerů a vazeb má vlastnost, která odkazuje na nastavení aplikace připojovacího řetězce, jako je Connectiontrigger úložiště objektů blob. Pro tyto vlastnosti potřebujete nastavení aplikace definované v Values poli. Seznam běžně používaných nastavení najdete v následující tabulce.
Hodnoty musí být řetězce, nikoli objekty JSON nebo pole. Názvy nastavení nesmí obsahovat dvojité podtržení (__) a nemělo by obsahovat dvojtečku (:). Znaky dvojitého podtržení jsou vyhrazeny modulem runtime a dvojtečka je vyhrazena pro podporu injektáže závislostí.
Host Nastavení v této části při místním spouštění projektů přizpůsobte proces hostitele Functions. Tato nastavení jsou oddělená od nastavení host.json, která platí také při spouštění projektů v Azure.
LocalHttpPort Nastaví výchozí port použitý při spuštění místního hostitele functions (func host start a func run). Možnost --port příkazového řádku má přednost před tímto nastavením. Například při spuštění v integrovaném vývojovém prostředí (IDE) Visual Studio můžete změnit číslo portu tak, že přejdete do okna "Project Vlastnosti –> Ladění" a explicitně zadáte číslo portu v host start --port <your-port-number> příkazu, který lze zadat do pole Argumenty aplikace.
CORS Definuje zdroje povolené pro sdílení prostředků mezi zdroji (CORS). Původy jsou zadány jako seznam oddělený čárkami bez mezer. Je podporována hodnota se zástupnými znaky (*), která umožňuje požadavky z libovolného původu.
CORSCredentials Pokud je tato možnost nastavená na true, povolí withCredentials požadavky.
ConnectionStrings Kolekce. Tuto kolekci nepoužívejte pro připojovací řetězce používané vazbami funkcí. Tuto kolekci používají jenom architektury, které obvykle získávají připojovací řetězce z ConnectionStrings oddílu konfiguračního souboru, jako je Entity Framework. Připojovací řetězce v tomto objektu se přidají do prostředí s typem zprostředkovatele System.Data.SqlClient. Položky v této kolekci se nepublikují do Azure s jiným nastavením aplikace. Tyto hodnoty musíte explicitně přidat do Connection strings kolekce nastavení aplikace funkcí. Pokud vytváříte SqlConnection kód funkce, měli byste hodnotu připojovacího řetězce uložit s ostatními připojeními v Nastavení aplikace na portálu.

Při spuštění místně je možné do Values pole zahrnout následující nastavení aplikace:

Nastavení Hodnoty Popis
AzureWebJobsStorage Storage připojovací řetězec účtu nebo
UseDevelopmentStorage=true
Obsahuje připojovací řetězec pro účet úložiště Azure. Vyžadováno při použití jiných triggerů než HTTP. Další informace najdete v referenčních informacích AzureWebJobsStorage .
Pokud máte místně nainstalovanou Emulator Azurite a nastavíte AzureWebJobsStorage ji na UseDevelopmentStorage=true, Core Tools používá emulátor. Emulátor je užitečný při vývoji, ale před nasazením byste měli otestovat skutečné připojení k úložišti.
AzureWebJobs.<FUNCTION_NAME>.Disabled true|false Pokud chcete funkci zakázat při místním spuštění, přidejte "AzureWebJobs.<FUNCTION_NAME>.Disabled": "true" ji do kolekce, kde <FUNCTION_NAME> je název funkce. Další informace najdete v tématu Jak zakázat funkce v Azure Functions.
FUNCTIONS_WORKER_RUNTIME dotnet
node
java
powershell
python
Označuje cílový jazyk modulu runtime Functions. Vyžaduje se pro modul runtime Functions verze 2.x a vyšší. Toto nastavení se vygeneruje pro váš projekt nástrojem Core Tools. Další informace najdete v referenčních informacích FUNCTIONS_WORKER_RUNTIME .
FUNCTIONS_WORKER_RUNTIME_VERSION ~7 Označuje použití PowerShellu 7 při místním spuštění. Pokud není nastavená, použije se PowerShell Core 6. Toto nastavení se používá pouze při místním spuštění. Verze modulu runtime PowerShellu je určena powerShellVersion nastavením konfigurace webu, když běží v Azure, která se dá nastavit na portálu.

Další kroky