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 | A Core Tools által helyi futtatáskor használt beállítások, 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 | A Projektmappa Visual Studio Code-ban való megnyitásakor használt beállításfájl. |
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. A local.settings.json fájl beállításait csak akkor használja a rendszer, 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 |
Az ebben a szakaszban található beállítások testre szabják a Functions-gazdagép folyamatát, amikor helyileg futtat projekteket. 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 true ké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 . Az objektumban található kapcsolati sztringek a System.Data.SqlClient szolgáltatótípussal vannak hozzáadva a környezethez. 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, a kapcsolati sztring értéket a többi kapcsolattal együtt kell tárolnia a portál Alkalmazásbeállítások lapján. |
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 vagyUseDevelopmentStorage=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 AzureWebJobsStorage UseDevelopmentStorage=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.
HTTP-teszteszközök
A fejlesztés során egyszerűen meghívhatja bármelyik függvényvégpontot egy webböngészőből, ha támogatják a HTTP GET metódust. A hasznos adatokat támogató egyéb HTTP-metódusok, például a POST vagy a PUT esetében azonban http-teszteszközt kell használnia ezeknek a HTTP-kéréseknek a függvényvégpontokhoz való létrehozásához és elküldéséhez.
Figyelemfelhívás
Olyan esetekben, amikor a kéréseknek bizalmas adatokat kell tartalmazniuk, mindenképpen használjon olyan eszközt, amely védi az adatokat, és csökkenti a bizalmas adatok nyilvános felfedésének kockázatát. A védeni kívánt bizalmas adatok közé tartozhatnak a hitelesítő adatok, titkos kódok, hozzáférési jogkivonatok, API-kulcsok, földrajzi helyadatok, vagy akár személyazonosításra alkalmas adatok (PII).
Az adatok biztonságossá tételéhez válasszon olyan HTTP-teszteszközt, amely offline vagy helyileg működik, nem szinkronizálja az adatokat a felhőbe, és nem igényli az online fiókba való bejelentkezést. Bizonyos eszközök bizonyos biztonsági funkciók implementálásával megvédhetik az adatokat a véletlen expozíciótól.
Ne használjon olyan eszközöket, amelyek központilag tárolják a HTTP-kérések előzményeit (beleértve a bizalmas adatokat is), ne kövesse az ajánlott biztonsági eljárásokat, és ne tartsa tiszteletben az adatvédelmi szempontokat.
Fontolja meg az alábbi eszközök egyikének használatát a HTTP-kérések függvényvégpontokra történő biztonságos küldéséhez:
- Visual Studio Code a Visual Studio Marketplace bővítményével, például REST-ügyféllel
- PowerShell Invoke-RestMethod
- Microsoft Edge – Hálózati konzol eszköz
- Bruno
- csavarodik
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ástUseDevelopmentStorage=true
. Az Azure-ban aAzureWebJobsStorage
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.