Sdílet prostřednictvím


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

I když můžete vyvíjet a testovat azure Functions na webu 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áš preferovaný 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 na 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 Popis
Visual Studio Code C# (v procesu)
C# (izolovaný pracovní proces)
JavaScript
PowerShell
Python
Rozšíření Azure Functions pro VS Code přidává podporu funkcí do VS Code. Vyžaduje nástroje Core Tools. Podporuje vývoj v systémech Linux, 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í editoru Visual Studio Code.
Příkazový řádek nebo terminál C# (v procesu)
C# (izolovaný pracovní proces)
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 systémech Linux, macOS a Windows. Všechna prostředí využívají Nástroje Core Tools pro místní modul runtime Functions.
Visual Studio C# (v procesu)
C# (izolovaný pracovní proces)
Nástroje Azure Functions jsou součástí sady Visual Studio pro vývoj, počínaje sadou Visual Studio 2019. Umožňuje kompilovat 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í sady Visual Studio.
Maven (různé) Java Archetyp Maven podporuje nástroje Core Tools, které umožňují vývoj funkcí Java. Verze 2.x podporuje vývoj v systémech Linux, 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.

Poznámka:

Vzhledem k omezením úprav kódu funkce na webu Azure Portal byste měli vyvíjet funkce místně a publikovat projekt kódu do aplikace funkcí v Azure. Další informace najdete v tématu Omezení vývoje na webu Azure Portal.

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 otestovat a ladit funkce proti skutečnému modulu runtime Functions na vlastním počítači stejně jako v jakékoli jiné aplikaci. Projekt aplikace funkcí můžete publikovat také z libovolného z těchto prostředí do Azure.

Místní soubory projektu

Adresář projektu Functions obsahuje následující soubory v kořenové složce projektu bez ohledu na jazyk:

Název souboru Popis
host.json Další informace najdete v host.json referenčních informacích.
local.settings.json Nastavení používaná nástroji Core Tools při místním spuštění, včetně nastavení aplikace. Další informace najdete v souboru místních nastavení.
.gitignore Zabrání náhodnému publikování souboru local.settings.json do úložiště Git. Další informace najdete v souboru místních nastavení.
.vscode\extensions.json Soubor nastavení použitý při otevírání složky projektu v editoru Visual Studio Code.

Jiné soubory v projektu závisí na vašem jazyce a konkrétních funkcích. Další informace najdete v příručce pro vývojáře pro váš jazyk.

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 v místním prostředí projektu. Při publikování projektu do Azure nezapomeňte do nastavení aplikace pro aplikaci funkcí přidat všechna požadovaná nastavení.

Důležité

Protože local.settings.json může obsahovat tajné kódy, jako jsou připojovací řetězec, nikdy byste je neměli ukládat do vzdáleného úložiště. Nástroje, které podporují funkci, 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 v místním počítači můžete chtít zašifrovat, pokud obsahuje tajné kódy, jako jsou připojovací řetězec 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í aplikace 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í řetězec, jako je Connection trigger ú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 (:). Dvojité podtržení znaků je vyhrazeno modulem runtime a dvojtečka je vyhrazena pro podporu injektáže závislostí.
Host Nastavení v této části při místním spuštění projektů přizpůsobí proces hostitele služby 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 host start --port <your-port-number> prostředí sady Visual Studio můžete změnit číslo portu tak, že přejdete do okna Vlastnosti projektu –> Ladění a explicitně zadáte číslo portu v příkazu, který lze zadat v poli Argumenty aplikace.
CORS Definuje zdroje povolené pro sdílení prostředků mezi zdroji (CORS). Origins are supplied as a comma-separated list with no spaces. Hodnota se zástupným znakem (*) je podporovaná, což 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ězec používané vazbami funkcí. Tuto kolekci používají pouze architektury, které obvykle získávají připojovací řetězec 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ými nastaveními aplikace. Tyto hodnoty musíte explicitně přidat do Connection strings kolekce nastavení vaší aplikace funkcí. Pokud vytváříte SqlConnection v kódu funkce, měli byste uložit hodnotu připojovací řetězec s ostatními připojeními v Nastavení aplikace na portálu.

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

Nastavení Hodnoty Popis
AzureWebJobsStorage připojovací řetězec účtu úložiště nebo
UseDevelopmentStorage=true
Obsahuje připojovací řetězec pro účet úložiště Azure. Vyžaduje se při použití triggerů jiných než HTTP. Další informace najdete v referenčních informacích AzureWebJobsStorage .
Pokud máte místně nainstalovaný emulátor Azurite a nastavíte AzureWebJobsStorage na UseDevelopmentStorage=true, Core Tools používá emulátor. Další informace naleznete v tématu Emulátor místního úložiště.
AzureWebJobs.<FUNCTION_NAME>.Disabled true|false Pokud chcete zakázat funkci 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 Postup zakázání funkcí ve službě Azure Functions.
FUNCTIONS_WORKER_RUNTIME dotnet
dotnet-isolated
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á jenom při místním spuštění. Verze modulu runtime PowerShellu je určená powerShellVersion nastavením konfigurace webu při spuštění v Azure, která se dá nastavit na portálu.

Synchronizace nastavení

Při místním vývoji funkcí musí být v nastavení aplikace aplikace, do které je váš kód nasazený, všechna místní nastavení požadovaná vaší aplikací. Možná budete také muset stáhnout aktuální nastavení z aplikace funkcí do místního projektu. Nastavení aplikace můžete na webu Azure Portal nakonfigurovat ručně, ale následující nástroje také umožňují synchronizovat nastavení aplikace s místním nastavením v projektu:

Triggery a vazby

Při místním vývoji funkcí je potřeba vzít v úvahu chování triggerů a vazeb. Pro triggery HTTP můžete jednoduše volat koncový bod HTTP na místním počítači pomocí http://localhost/. U funkcí, které nejsou aktivované protokolem HTTP, existuje několik možností, jak spustit místně:

  • Nejjednodušší způsob, jak otestovat vazby během místního vývoje, je použít připojovací řetězec, které cílí na živé služby Azure. Živé služby můžete cílit tak, že do pole v Values souboru local.settings.json přidáte příslušná nastavení připojovací řetězec. Když to uděláte, místní spuštění během testování ovlivní živá data služby. Z tohoto důvodu zvažte nastavení samostatných služeb, které se mají použít během vývoje a testování, a pak přejděte na různé služby během produkčního prostředí.
  • Pro triggery založené na úložišti můžete použít emulátor místního úložiště.
  • Funkce triggeru jiného typu než HTTP můžete spustit ručně pomocí speciálních koncových bodů správce. Další informace najdete v tématu Ruční spuštění funkce neaktivované protokolem HTTP.

Během místního testování musíte spustit hostitele poskytovaného nástroji Core Tools (func.exe) místně. Další informace najdete v tématu Azure Functions Core Tools.

Testovací nástroje HTTP

Během vývoje je snadné volat všechny koncové body funkce z webového prohlížeče, když podporují metodu HTTP GET. Pro jiné metody HTTP, které podporují datové části, jako je POST nebo PUT, ale musíte k vytvoření a odeslání těchto požadavků HTTP do koncových bodů funkce použít testovací nástroj HTTP.

Upozornění

V situacích, kdy vaše požadavky musí obsahovat citlivá data, nezapomeňte použít nástroj, který chrání vaše data a snižuje riziko zveřejnění citlivých dat veřejnosti. Mezi citlivá data, která byste měli chránit, patří: přihlašovací údaje, tajné kódy, přístupové tokeny, klíče rozhraní API, data geografické polohy, dokonce i identifikovatelné osobní údaje (PII).

Svá data můžete zabezpečit tak, že zvolíte testovací nástroj HTTP, který funguje offline nebo místně, nesynchronizuje vaše data do cloudu a nevyžaduje přihlášení k online účtu. Některé nástroje můžou také chránit vaše data před náhodným vystavením implementací konkrétních funkcí zabezpečení.

Vyhněte se používání nástrojů, které centrálně ukládají historii požadavků HTTP (včetně citlivých informací), nedodržují osvědčené postupy zabezpečení ani nerespektují obavy týkající se ochrany osobních údajů dat.

Zvažte použití jednoho z těchto nástrojů k bezpečnému odesílání požadavků HTTP do koncových bodů funkce:

Emulátor místního úložiště

Během místního vývoje můžete při testování funkcí pomocí vazeb Azure Storage (Queue Storage, Blob Storage a Table Storage) použít místní emulátor Azurite, aniž byste se museli připojovat ke vzdáleným službám úložiště. Azurite se integruje se sadou Visual Studio Code a sadou Visual Studio a můžete ji také spustit z příkazového řádku pomocí npm. Další informace najdete v tématu Použití emulátoru Azurite pro místní vývoj ve službě Azure Storage.

Následující nastavení v Values kolekci souboru local.settings.json říká místnímu hostiteli Functions, aby pro výchozí AzureWebJobsStorage připojení používal Azurite:

"AzureWebJobsStorage": "UseDevelopmentStorage=true"

S touto hodnotou nastavení se všechny triggery nebo vazby azure Storage, které se při místním spuštění používají AzureWebJobsStorage jako připojení, připojují k Azurite. Při použití emulace úložiště během místního spouštění mějte na paměti tyto aspekty:

  • Musíte mít nainstalovaný a spuštěný Azurite.
  • Před publikováním do Azure byste měli otestovat skutečné připojení úložiště ke službám Azure.
  • Při publikování projektu nepublikujte AzureWebJobsStorage nastavení jako UseDevelopmentStorage=true. V Azure AzureWebJobsStorage musí být toto nastavení vždy připojovací řetězec účtu úložiště používaného vaší aplikací funkcí. Další informace najdete na webu AzureWebJobsStorage.

Další kroky