Az Azure Functions helyi kódolása és tesztelése

Bár az Azure Functionst az Azure Portalon fejlesztheti és tesztelheti, sok fejlesztő a helyi fejlesztési élményt részesíti előnyben. A Functions használata esetén a kedvenc kódszerkesztővel és fejlesztői eszközökkel könnyebben hozhat létre és tesztelhet függvényeket a helyi számítógépen. A helyi függvények csatlakozhatnak az élő Azure-szolgáltatásokhoz, és a teljes Functions-futtatókörnyezettel hibakeresést végezhet a helyi számítógépen.

Ez a cikk az előnyben részesített nyelvhez tartozó adott fejlesztési környezetekre mutató hivatkozásokat tartalmaz. Emellett megosztott útmutatást is nyújt a helyi fejlesztéshez, például a local.settings.json fájllal való munkához.

Helyi fejlesztési környezetek

A helyi számítógépen a függvények fejlesztésének módja a nyelvtől és az eszközhasználati beállításoktól függ. A következő táblázatban szereplő környezetek támogatják a helyi fejlesztést:

Környezet Nyelvek Leírás
Visual Studio Code C# (folyamatban)
C# (izolált feldolgozói folyamat)
JavaScript
PowerShell
Python
A VS Code Azure Functions-bővítménye függvénytámogatást ad a VS Code-hoz. Az alapvető eszközökre van szükség. Támogatja a fejlesztést Linux, macOS és Windows rendszeren a Core Tools 2.x-es verziójának használatakor. További információ: Az első függvény létrehozása a Visual Studio Code használatával.
Parancssor vagy terminál C# (folyamatban)
C# (izolált feldolgozói folyamat)
JavaScript
PowerShell
Python
Az Azure Functions Core Tools biztosítja az alapvető futtatókörnyezetet és a függvények létrehozásához szükséges sablonokat, amelyek lehetővé teszik a helyi fejlesztést. A 2.x-es verzió támogatja a linuxos, macOS- és Windows-alapú fejlesztést. Minden környezet a helyi Functions-futtatókörnyezet alapvető eszközeire támaszkodik.
Visual Studio C# (folyamatban)
C# (izolált feldolgozói folyamat)
Az Azure Functions-eszközöket a Visual Studio Azure-fejlesztési számítási feladatai tartalmazzák, a Visual Studio 2019-től kezdve. Segítségével függvényeket állíthat össze egy osztálytárban, és közzéteheti a .dll az Azure-ban. Tartalmazza a helyi teszteléshez szükséges alapvető eszközöket. További információ: Azure Functions fejlesztése a Visual Studióval.
Maven (különböző) Java A Maven archetype támogatja a Core Toolst a Java-függvények fejlesztésének engedélyezéséhez. A 2.x-es verzió támogatja a linuxos, macOS- és Windows-alapú fejlesztést. További információ: Az első függvény létrehozása Java és Maven használatával. Az Eclipse és az IntelliJ IDEA használatával is támogatja a fejlesztést.

Feljegyzés

Az Azure Portal függvénykódjának szerkesztésére vonatkozó korlátozások miatt helyileg kell fejlesztenie a függvényeket, és közzé kell tennie a kódprojektet egy Azure-beli függvényalkalmazásban. További információ: Fejlesztési korlátozások az Azure Portalon

Ezen helyi fejlesztési környezetek mindegyike lehetővé teszi függvényalkalmazás-projektek létrehozását, és előre definiált függvénysablonok használatával új függvényeket hozhat létre. Mindegyik a Core Toolst használja, hogy a függvényeket ugyanúgy tesztelhesse és hibakeresést végezze el a saját gépén, mint bármely más alkalmazásban. A függvényalkalmazás-projektet ezen környezetek bármelyikéből közzéteheti az Azure-ban.

Helyi projektfájlok

A Functions-projektkönyvtár a projekt gyökérmappájában található alábbi fájlokat tartalmazza, nyelvtől függetlenül:

Fájlnév Leírás
host.json További információ: host.json hivatkozás.
local.settings.json Gépház a Core Tools használja helyi futtatáskor, beleértve az alkalmazásbeállításokat is. További információ: helyi beállítások fájlja.
.gitignore Megakadályozza, hogy a local.settings.json fájl véletlenül közzé legyen téve egy Git-adattárban. További információ: helyi beállítások fájlja.
.vscode\extensions.json Gépház fájl, amelyet a projektmappa Visual Studio Code-ban való megnyitásakor használnak.

A projekt más fájljai a nyelvtől és az adott függvénytől függenek. További információkért tekintse meg a nyelv fejlesztői útmutatóját.

Local settings file (Helyi beállításfájl)

A local.settings.json fájl tárolja a helyi fejlesztési eszközök által használt alkalmazásbeállításokat és beállításokat. Gépház a local.settings.json fájl csak akkor használatos, ha helyileg futtatja a projektet. Amikor közzéteszi a projektet az Azure-ban, mindenképpen adja hozzá a szükséges beállításokat a függvényalkalmazás alkalmazásbeállításaihoz.

Fontos

Mivel a local.settings.json tartalmazhat titkos kulcsokat, például kapcsolati sztring, soha ne tárolja távoli adattárban. A Functionst támogató eszközök lehetővé teszik a local.settings.json fájl beállításainak szinkronizálását azon függvényalkalmazás alkalmazásbeállításaival , amelyekre a projektet telepítik.

A helyi beállításfájl struktúrája a következő:

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

Ezek a beállítások támogatottak a projektek helyi futtatásakor:

Beállítás Leírás
IsEncrypted Ha ez a beállítás be van állítva true, a rendszer minden értéket helyi gépkulcsgal titkosít. Parancsokkal használható func settings . Az alapértelmezett érték false. A local.settings.json fájlt titkos kulcsok, például szolgáltatás kapcsolati sztring esetén érdemes lehet titkosítani a helyi számítógépen. A gazdagép futás közben automatikusan visszafejti a beállításokat. A helyileg titkosított beállítások olvasása előtt használja a func settings decrypt parancsot.
Values A projekt helyi futtatásakor használt alkalmazásbeállítások gyűjteménye. Ezek a kulcs-érték (sztring-sztring) párok megfelelnek az Azure-beli függvényalkalmazás alkalmazásbeállításainak, például AzureWebJobsStorage. Számos eseményindító és kötés rendelkezik olyan tulajdonságokkal, amelyek egy kapcsolati sztring alkalmazásbeállításra hivatkoznak, például Connection a Blob Storage-eseményindítóhoz. Ezekhez a tulajdonságokhoz a tömbben Values definiált alkalmazásbeállításra van szükség. A gyakran használt beállítások listáját a következő táblázatban találja.
Az értékeknek sztringeknek kell lenniük, nem pedig JSON-objektumoknak vagy tömböknek. A beállításnevek nem tartalmazhatnak dupla aláhúzást (__), és nem tartalmazhatnak kettőspontot (:). A kettős aláhúzás karaktereket a futtatókörnyezet lefoglalja, a kettőspont pedig a függőséginjektálás támogatására van fenntartva.
Host Gépház ebben a szakaszban testre szabhatja a Functions-gazdafolyamatot a projektek helyi futtatásakor. Ezek a beállítások eltérnek a host.json beállításaitól, amelyek az Azure-beli projektek futtatásakor is érvényesek.
LocalHttpPort Beállítja a helyi Functions-gazdagép (func host start és func run) futtatásakor használt alapértelmezett portot. A --port parancssori beállítás elsőbbséget élvez ezzel a beállítással szemben. Ha például a Visual Studio IDE-ben fut, módosíthatja a portszámot a "Project Properties – Debug" (Projekttulajdonságok –> Hibakeresés) ablakra lépve, és explicit módon megadhatja a portszámot egy host start --port <your-port-number> olyan parancsban, amely az "Alkalmazásargumentumok" mezőben adható meg.
CORS Meghatározza a forrásközi erőforrásmegosztáshoz (CORS) engedélyezett forrásokat. A forrásokat vesszővel elválasztott listaként, szóközök nélkül adja meg. A helyettesítő karakterek (*) értéke támogatott, ami lehetővé teszi a kéréseket bármilyen forrásból.
CORSCredentials Ha be van állítva, engedélyezi withCredentials a truekéréseket.
ConnectionStrings Gyűjtemény. Ne használja ezt a gyűjteményt a függvénykötések által használt kapcsolati sztring. Ezt a gyűjteményt csak olyan keretrendszerek használják, amelyek általában kapcsolati sztring kapnak egy konfigurációs fájl szakaszából, például az Entity FrameworkbőlConnectionStrings. Csatlakozás objektumban lévő sztringeket a rendszer hozzáadja a környezethez a következő szolgáltatótípussal:System.Data.SqlClient. A gyűjtemény elemei nem jelennek meg az Azure-ban más alkalmazásbeállításokkal. Ezeket az értékeket explicit módon kell hozzáadnia a Connection strings függvényalkalmazás beállításainak gyűjteményéhez. Ha a függvénykódban hoz létre egy SqlConnection értéket, akkor a kapcsolati sztring értéket a többi kapcsolattal együtt kell tárolnia az Alkalmazás Gépház a portálon.

A tömbben helyi futtatáskor a Values következő alkalmazásbeállításokat lehet megadni:

Beállítás Értékek Leírás
AzureWebJobsStorage Tárfiók kapcsolati sztring vagy
UseDevelopmentStorage=true
Egy Azure Storage-fiók kapcsolati sztring tartalmazza. HTTP-nek nem megfelelő eseményindítók használatakor szükséges. További információkért lásd a AzureWebJobsStorage hivatkozást.
Ha az Azurite Emulator helyileg van telepítve, és be van állítva AzureWebJobsStorageUseDevelopmentStorage=true, a Core Tools az emulátort használja. További információ: Local Storage Emulator.
AzureWebJobs.<FUNCTION_NAME>.Disabled true|false Ha helyileg szeretne letiltani egy függvényt, adja hozzá "AzureWebJobs.<FUNCTION_NAME>.Disabled": "true" a gyűjteményhez, ahol <FUNCTION_NAME> a függvény neve szerepel. További információ: Függvények letiltása az Azure Functionsben.
FUNCTIONS_WORKER_RUNTIME dotnet
dotnet-isolated
node
java
powershell
python
A Functions-futtatókörnyezet célnyelvét jelzi. A Functions-futtatókörnyezet 2.x és újabb verziójához szükséges. Ezt a beállítást a Core Tools hozza létre a projekthez. További információkért tekintse meg a FUNCTIONS_WORKER_RUNTIME hivatkozást.
FUNCTIONS_WORKER_RUNTIME_VERSION ~7 Azt jelzi, hogy a PowerShell 7-et használja helyi futtatáskor. Ha nincs beállítva, a Rendszer a PowerShell Core 6-ot használja. Ezt a beállítást csak helyi futtatáskor használja a rendszer. A PowerShell-futtatókörnyezet verzióját a powerShellVersion webhelykonfigurációs beállítás határozza meg, amikor az Azure-ban fut, amely a portálon állítható be.

Beállítások szinkronizálása

A függvények helyi fejlesztésekor az alkalmazás által igényelt helyi beállításoknak meg kell jelenniük annak a függvényalkalmazásnak az alkalmazásbeállításaiban is, amelyre a kód telepítve van. Előfordulhat, hogy a függvényalkalmazás aktuális beállításait is le kell töltenie a helyi projektbe. Bár manuálisan is konfigurálhatja az alkalmazásbeállításokat az Azure Portalon, az alábbi eszközök lehetővé teszik az alkalmazásbeállítások szinkronizálását a projekt helyi beállításaival is:

Eseményindítók és kötések

Amikor helyileg fejleszti a függvényeket, figyelembe kell vennie az eseményindítók és kötések viselkedését. HTTP-eseményindítók esetén egyszerűen meghívhatja a HTTP-végpontot a helyi számítógépen a használatával http://localhost/. A nem HTTP által aktivált függvények esetében több lehetőség is van a helyi futtatásra:

  • A helyi fejlesztés során a kötések tesztelésének legegyszerűbb módja az élő Azure-szolgáltatásokat célzó kapcsolati sztring használata. Az élő szolgáltatásokat úgy célozhatja meg, hogy hozzáadja a megfelelő kapcsolati sztring beállításokat a Values local.settings.json fájl tömbjében. Ha ezt teszi, a tesztelés során végrehajtott helyi végrehajtások hatással vannak az élő szolgáltatás adataira. Emiatt érdemes lehet külön szolgáltatásokat beállítani a fejlesztés és tesztelés során, majd az éles üzem során különböző szolgáltatásokra váltani.
  • A tárolóalapú eseményindítókhoz használhat helyi tárolóemulátort.
  • A nem HTTP-eseményindító függvényeket manuálisan is futtathatja speciális rendszergazdai végpontok használatával. További információ: Nem HTTP-aktivált függvény manuális futtatása.

A helyi tesztelés során helyileg kell futtatnia a Core Tools (func.exe) által biztosított gazdagépet. További információ: Azure Functions Core Tools.

Helyi tárolóemulátor

A helyi fejlesztés során a helyi Azurite emulátort használhatja a függvények Azure Storage-kötésekkel (Queue Storage, Blob Storage és Table Storage) való teszteléséhez anélkül, hogy távoli tárolási szolgáltatásokhoz kellene csatlakoznia. Az Azurite integrálható a Visual Studio Code-tal és a Visual Studióval, és a parancssorból is futtathatja az npm használatával. További információ: Az Azurite emulátor használata helyi Azure Storage-fejlesztéshez.

A local.settings.json fájl gyűjteményében az Values alábbi beállítás azt jelzi, hogy a helyi Functions-gazdagép az Azurite-ot használja az alapértelmezett AzureWebJobsStorage kapcsolathoz:

"AzureWebJobsStorage": "UseDevelopmentStorage=true"

Ezzel a beállítási értékkel a kapcsolatként használt AzureWebJobsStorage Azure Storage-eseményindítók vagy kötések helyi futtatáskor csatlakoznak az Azurite-hoz. Tartsa szem előtt ezeket a szempontokat a tárolóemuláció helyi végrehajtás során történő használatakor:

  • Telepítenie és futtatnia kell az Azurite-t.
  • Az Azure-szolgáltatásokhoz való tényleges tárolási kapcsolattal kell tesztelnie, mielőtt közzétennénk az Azure-ban.
  • A projekt közzétételekor ne tegye közzé a AzureWebJobsStorage beállítást UseDevelopmentStorage=true. Az Azure-ban a AzureWebJobsStorage beállításnak mindig a függvényalkalmazás által használt tárfiók kapcsolati sztring kell lennie. További információ: AzureWebJobsStorage.

Következő lépések

  • Ha többet szeretne megtudni a lefordított C# függvények (mind a folyamatban lévő, mind az izolált feldolgozói folyamat) Visual Studióval történő helyi fejlesztéséről, olvassa el az Azure Functions fejlesztése a Visual Studióval című témakört.
  • Ha többet szeretne megtudni a függvények helyi fejlesztéséről a VS Code használatával Mac, Linux vagy Windows rendszerű számítógépen, tekintse meg a Visual Studio Code első lépéseket ismertető cikkét a kívánt nyelvhez:
  • Ha többet szeretne megtudni a parancssorból vagy a terminálról származó függvények fejlesztéséről, olvassa el az Azure Functions Core Tools használata című témakört.