A kód igény szerinti futtatása az Azure Functions használatával

Befejeződött

Most, hogy létrehoztunk egy függvényalkalmazást, nézzük meg, hogyan hozhat létre, konfigurálhat és hajthat végre függvényeket. A függvényt a következő gyakorlatban hajtjuk végre, így ebben a leckében nem kell semmilyen feladatot elvégeznie.

Triggerek

A függvények eseményvezéreltek, vagyis egy eseményre reagálva futnak. A függvényt elindító esemény típusát eseményindítónak nevezzük. Minden függvényt pontosan egy eseményindítóval kell konfigurálni.

A függvények végrehajtását HTTP-kérésekkel, ütemezett időzítővel és az alábbi Azure-szolgáltatások eseményeiből indíthatja el:

Azure-szolgáltatás Eseményindító leírása
Blob Storage Függvényt indít el új vagy frissített blob észlelésekor.
Azure Cosmos DB Függvényt indít el beszúrás vagy frissítés észlelésekor.
Event Grid Függvényt indít el, amikor esemény érkezik az Event Gridből.
Event Hubs Elindít egy függvényt, amikor esemény érkezik az Event Hubstól.
Queue Storage Függvényt indít el, amikor új elem érkezik egy várakozási sorba. A várakozó üzenetet a függvény bemeneteként adja át.
Service Bus Függvényt indít el egy Service Bus-sorból érkező üzenetre reagálva.

Kötések

A kötések deklaratív módon kapcsolhatók össze adatokkal és szolgáltatásokkal a függvényhez. A kötések különböző adatforrásokkal működnek együtt, ami azt jelenti, hogy nem kell írnia a kódot a függvényben az adatforrásokhoz való csatlakozáshoz és a kapcsolatok kezeléséhez. Ezt a feladatot a platform oldja meg ön helyett a kötés kódjának részeként. Minden kötésnek van egy iránya: a kód beolvassa az adatokat a bemeneti kötésekből, és adatokat ír a kimeneti kötésekbe. Minden függvény nulla vagy több kötéssel rendelkezhet a függvény által feldolgozott be- és kimenő adatok kezelésére.

Az eseményindítók olyan bemeneti kötések, amelyek bizonyos kód végrehajtását kezdeményezik.

Az Azure számos kötést biztosít a különböző tárolási és üzenetkezelési szolgáltatásokhoz való csatlakozáshoz.

Példa kötés definiálása

Egy példán mutatjuk be egy függvény konfigurálását egy bemeneti kötéssel (eseményindítóval) és egy kimeneti kötéssel. Tegyük fel, hogy új sort szeretnénk írni az Azure Table Storage-ba, amikor új üzenet jelenik meg az Azure Queue Storage-ban. Ez a forgatókönyv egy Azure Queue Storage-eseményindító és egy Azure Table Storage kimeneti kötés használatával valósítható meg.

Az alábbi kódrészlet a function.jsonfájlja ehhez a forgatókönyvhöz.

{
  "bindings": [
    {
      "name": "order",
      "type": "queueTrigger",
      "direction": "in",
      "queueName": "myqueue-items",
      "connection": "MY_STORAGE_ACCT_APP_SETTING"
    },
    {
      "name": "$return",
      "type": "table",
      "direction": "out",
      "tableName": "outTable",
      "connection": "MY_TABLE_STORAGE_ACCT_APP_SETTING"
    }
  ]
}

A JSON-konfiguráció azt határozza meg, hogy a függvény akkor aktiválódik, amikor egy üzenet bekerül egy myqueue-items nevű üzenetsorba. A függvény visszatérési értéke ezután az OutTable-ba lesz írva az Azure Table Storage-ban.

A PowerShell-függvények esetében a kimeneti kötések explicit módon íródnak a Push-OutputBinding parancsmaggal.

Ez a példa egyszerű módon mutatja be a kötések függvényekhez való konfigurálását. A kimenetet e-mailként módosíthatjuk SendGrid-kötéssel, vagy egy eseményt egy Service Busra, hogy értesítsük az architektúránk egy másik összetevőjét. Akár több kimeneti kötést is létrehozhatunk az adatok különböző szolgáltatásokba való leküldéséhez.

Tipp.

A function.json tartalmának megtekintéséhez és szerkesztéséhez az Azure Portal kezdőlapján válassza ki a függvényalkalmazást, majd a panelen válassza a JSON nézetet. Az Erőforrás JSON nézete megjeleníti az erőforrás-azonosítót és a szerkeszthető JSON-kódot. A JSON nézet bezárásához válassza az X lehetőséget a panel jobb felső sarkában.

A Functions által támogatott nyelvek közül nem minden használja a function.json fájlt a függvények definiálásához.

Függvény létrehozása az Azure Portalon

Az Azure Functions előre definiált függvénysablonokkal rendelkezik, amelyek egy adott eseményindító-típuson alapulnak. Ezek a sablonok a választott nyelven megkönnyítik az első függvény létrehozásának megkezdését.

Ez a modul nem támogatott a Functions által támogatott összes nyelv esetében, és maga a portál nem támogatja a Függvények által támogatott összes nyelven a függvények létrehozását.

A function.json fájlt függvények definiálására használó támogatott nyelvek esetén ezeket a függvényeket közvetlenül az Azure Portalon hozhatja létre és szerkesztheti. Ezek a portál által támogatott nyelvek a következők: JavaScript, PowerShell, Python és C# szkript (.csx). A függvényeket közvetlenül a kódban definiáló nyelveket a portálon kívül kell fejleszteni, és üzembe kell helyezni az Azure-ban. Ezek a nem portális támogatott nyelvek a következők: C#, Java, Python (v2 programozási modell) és JavaScript/TypeScript (Node.js v4 programozási modell).

Függvénysablonok

Amikor létrehozza az első függvényt a portálon, kiválaszthat egy előre definiált eseményindítót a függvényhez. A beállítások alapján az Azure létrehoz egy alapértelmezett kódot és konfigurációs információt, például eseménynapló-bejegyzést hoz létre a bemeneti adatok fogadásakor.

Ha kiválaszt egy sablont a Függvény hozzáadása panelen, egyszerűen elérheti a leggyakoribb fejlesztési környezeteket, eseményindítókat és függőségeket. Amikor függvényt hoz létre az Azure Portalon, több mint 20 sablon közül választhat. A létrehozás után tovább testre szabhatja a kódot.

Amikor sablonból hoz létre függvényt, több fájl is létrejön, beleértve a konfigurációs fájlt, afunction.jsonés a forráskódfájlt ,index.js.

A függvényalkalmazáshoz úgy hozhat létre vagy szerkeszthet függvényeket, hogy a Függvényalkalmazás menü Függvények kategóriájában a Függvények kategóriát választja.

Amikor kiválaszt egy függvényt, amelyet a függvényalkalmazásban hozott létre, megnyílik a Függvény panel. Ha a Függvény menüBen a Kód + Teszt lehetőséget választja, a parancssávon található műveletekhez férhet hozzá a kód teszteléséhez és futtatásához, a végrehajtott módosítások mentéséhez vagy elvetéséhez, illetve a közzétett URL-cím beszerzéséhez. Ha a parancssávon a Tesztelés/Futtatás lehetőséget választja, futtathatja a lekérdezési sztringeket és értékeket tartalmazó kérelmek használati eseteit. A függvény kódmező feletti elérési útja megjeleníti a megnyitott fájl nevét. Kiválaszthat egy adott fájlt a legördülő menüből, hogy tesztelje vagy szerkessze, például function.json.

Képernyőkép a függvénykódról és a tesztszerkesztőről, amelyen a bővített Teszt/Futtatás nézet látható, és a menübeállítások ki vannak emelve.

Az előző képen az ablaktábla Bemenet és Kimenet lapjai láthatók. A Bemenet lap kiválasztásával létrehozhatja és tesztelheti a függvényt lekérdezési paraméterek hozzáadásával és a lekérdezési sztring értékeinek megadásával. A Kimenet lap megjeleníti a kérés eredményeit.

Az Azure-függvény tesztelése

Miután létrehozott egy függvényt a portálon, tesztelni kell. Két megközelítés létezik:

  • Tesztelés a portálon
  • Manuális futtatás

Tesztelés az Azure Portalon

Függvényeit az Azure Portalon is kényelmesen tesztelheti. A képernyőképen korábban ismertetett módon a Futtatás lehetőséget választhatja ezen a panelen. Az eredmények automatikusan megjelennek a Kimenet lapon, és megnyílik a Naplók panel az állapot megjelenítéséhez.

Függvény manuális futtatása

A függvény elindítható a konfigurált trigger manuális aktiválásával. Ha például HTTP-eseményindítót használ, az alábbi HTTP-teszteszközökkel http-kérést kezdeményezhet a függvényvégpont URL-címére:

Figyelemfelhívás

Olyan helyzetekben, ahol bizalmas adatokkal rendelkezik, például hitelesítő adatokkal, titkos kódokkal, hozzáférési jogkivonatokkal, API-kulcsokkal és más hasonló információkkal, mindenképpen használjon olyan eszközt, amely védi az adatokat. Tartalmazza a szükséges biztonsági funkciókat, az offline vagy helyileg működő eszközt, amely nem szinkronizálja az adatokat a felhőbe, és nem követeli meg, hogy online fiókba jelentkezzen be. Így csökkentheti a bizalmas adatok nyilvános közzétételével járó kockázatokat.

A HTTP-eseményindító URL-végpontját a függvénydefiníció portálján a Függvény URL-címének lekérése lehetőség kiválasztásával szerezheti be.

Monitorozási és Application Insights-irányítópult

A függvények figyelésének lehetősége a fejlesztés során és éles üzemben is nélkülözhetetlen. Az Azure Portal egy monitorozási irányítópultot biztosít, amelyet az Application Insights integrációjának engedélyezésével kapcsolhat be. A Függvényalkalmazás menü Beállítások területén válassza az Application Insights lehetőséget, válassza az Application Insights bekapcsolása, majd az Alkalmaz lehetőséget. A párbeszédpanelen válassza az Igen lehetőséget. Az Application Insights irányítópultja gyors módot kínál a függvényműveletek előzményeinek megtekintésére az Application Insights által kitöltött időbélyeg, eredménykód, időtartam és műveletazonosító megjelenítésével.

Képernyőkép a HTTP-függvény Application Insights irányítópultjáról a függvényeredményekkel, a megfelelő HTTP-állapotkódokkal és a Kiemelt Figyelés menüelemekkel.

Streamnaplók panel

Miután engedélyezte az Application Insightst az Azure Portalon, hibakeresés céljából hozzáadhat naplózási utasításokat a függvényhez. Az egyes nyelvekhez tartozó metódusok egy "naplózási" objektumot adnak át, amellyel naplóadatokat adhat hozzá a Kód + Teszt panel Naplók paneljéhez egy teszt futtatásakor.

Írjon naplókba a kódból az log objektum metódusával context , amelyet a rendszer átad a kezelőnek. Az alábbi példa az alapértelmezett naplószintre ír (információ):

context.log('Enter your logging statement here');

A következő példában látható módon írjon naplókba a kódból a Write-Host parancsmag használatával:

Write-Host "Enter your logging statement here"

Hibák, hibák, figyelmeztetések és anomáliák

A Függvény menü Vizsgálat kategóriájának metrikáival vagy beállításaival figyelheti a teljesítményt, diagnosztizálhatja a hibákat, vagy több tucat előre definiált munkafüzetet konfigurálhat a függvényalkalmazás kezeléséhez. A kód fordítási hibáitól és figyelmeztetéseitől a használati statisztikákig minden szerepkör szerint.