Egyszerű Azure-függvény helyi létrehozása és tesztelése a Visual Studióval
A felhasználók az Azure Portalról írhatnak, hibakeresést és üzembe helyezhetnek egy Azure-függvényt. Előfordulhat azonban, hogy a függvények közvetlenül éles, előkészítési vagy tesztelési környezetben való írása nem megfelelő. Például automatizált egységteszteket írhat az Azure Functionshez, vagy az Azure Functions igény szerinti üzembe helyezését használhatja az Azure Functions-alkalmazásokban az Azure-ban. A fejlesztők általában az Azure Portal által biztosított környezet helyett inkább kódszerkesztőt és fejlesztőeszközöket használnak. A Visual Studio lehetővé teszi az Azure Functions-kód fejlesztését és kezelését más kódokkal és szolgáltatásokkal egyetlen projektben.
Az online luxusóra forgatókönyvében a fejlesztők már ismerik a Visual Studio 2022-t. Ezért dönt úgy, hogy az Azure-függvények létrehozásához a Visual Studiót használja elsődleges fejlesztőkörnyezetként. A Visual Studio ezen felül a függvények Azure-beli üzembe helyezése előtt végzett helyi teszteléshez is kitűnő környezetet biztosít.
Ebben a leckében megtanulhatja, hogyan használhatja a Visual Studióban elérhető eszközöket az Azure-függvények helyi számítógépen való létrehozásához és teszteléséhez.
Fontos
Ez a cikk támogatja a futtatókörnyezettel folyamatban futó .NET-osztálytárfüggvényeket. A C#-függvények folyamaton kívül is elfogyhatnak, és elkülöníthetők a Functions-futtatókörnyezettől. Az izolált feldolgozói folyamatmodell az egyetlen mód a .NET nem LTS-verzióinak futtatására, és .NET-keretrendszer alkalmazások futtatására a Functions-futtatókörnyezet aktuális verzióiban. További információ: .NET izolált feldolgozói folyamatfüggvények.
A Visual Studio telepítésének módosítása
Először állítsuk be a Visual Studiót a fejlesztési környezethez szükséges webes és felhőalapú eszközökkel.
Ha a Visual Studio 2022 helyileg van telepítve, nyissa meg a Visual Studio Installert, és a Visual Studio Community 2022-ben válassza a Módosítás lehetőséget.
Megnyílik a Módosítás – Visual Studio oldal.
A Számítási feladatok lapon jelölje be a ASP.NET és a webfejlesztés, valamint az Azure-fejlesztési jelölőnégyzeteket, majd válassza a Módosítás lehetőséget.
Az ellenőrzési párbeszédpanelen válassza az Igen lehetőséget. Megjelenik a Visual Studio Installer oldala, amely megjeleníti a telepített csomagok állapotát.
Azure Functions Tools-bővítmény a Visual Studióhoz
Az Azure Functions Tools egy Visual Studio-bővítmény, amely lehetővé teszi az Azure Functions helyi fejlesztési környezetben való létrehozását, tesztelését és üzembe helyezését. Az új Azure-függvényalkalmazás gyors létrehozásához ez a bővítmény egy sablont biztosít, amellyel közvetlenül a Visual Studióból hozhat létre és helyezhet üzembe egy függvényt az Azure-ban.
Az Azure Functions és a Web Jobs Tools bővítmény a Visual Studio 2022 része.
Azure-függvényalkalmazás
Egy függvényalkalmazás egy vagy több függvényt üzemeltet. Ez biztosítja a függvénykód környezetét és futtatókörnyezetét.
A függvényeket egy esemény aktiválja, nem pedig közvetlenül egy alkalmazásból. Megadhatja, hogy milyen típusú esemény aktiválja az egyes függvényeket az Azure-függvényalkalmazásban. A rendelkezésre álló események többek között a következők:
- Blobalapú eseményindító. Ez a függvénytípus akkor fut, amikor fájlt töltenek fel vagy módosítanak egy Azure-blobtárolóban.
- Eseményközpont-eseményindító. Az Event Hubs-eseményindítók akkor futtatják a függvényt, amikor egy eseményközpont üzenetet kap.
- Azure Cosmos DB-eseményindító. Ez az eseményindító akkor fut, amikor egy dokumentumot hozzáadnak vagy módosítanak egy Azure Cosmos DB-adatbázisban. Ez az eseményindító használható az Azure Cosmos DB más szolgáltatásokkal való integrálására. Ha például egy ügyfél megrendeléséhez tartozó dokumentumot adnak az adatbázishoz, az eseményindító használatával egy feldolgozási sorba küldheti a megrendelés egy másolatát.
- HTTP-eseményindító. A HTTP-eseményindítók akkor futtatják a függvényt, amikor HTTP-kérés keletkezik egy webalkalmazásban. Ez az eseményindító a webhookra való reagáláshoz is felhasználható. A webhookok visszahívások, amelyek akkor keletkeznek, ha egy webhelyen üzemeltetett elemet módosítanak. Létrehozhat például egy webhook által aktivált függvényt egy GitHub-adattárból, amikor az adattár egy eleme megváltozik.
- Üzenetsor-eseményindító. Ez az eseményindító elindítja a függvényt, amikor új elemet ad hozzá egy Azure Storage-üzenetsorhoz.
- Service Bus-üzenetsor eseményindító. Ez az eseményindító futtatja a függvényt, amikor új elemet ad hozzá egy Azure Service Bus-üzenetsorhoz.
- Service Bus-témakör eseményindító. Ez az eseményindító egy Service Bus-témakörbe érkező új üzenetre reagálva futtatja a függvényt.
- Időzítő-eseményindító. Ez az esemény rendszeres időközönként futtatja a függvényt egy ön által meghatározott ütemezés szerint.
Az alábbi táblázat a .NET Core vagy .NET-keretrendszer legmagasabb szintjét mutatja be, amelyet a Functions adott verziójával használhat.
Functions futtatókörnyezet verziója | Folyamatban | Izolált feldolgozói folyamat |
---|---|---|
Functions 4.x | .NET 6.0 | .NET 6.0 .NET 7.0 .NET 8.0 .NET-keretrendszer 4.8 |
Functions 1.x | .NET-keretrendszer 4.8 | n.a. |
Az Azure-függvényalkalmazások felügyeleti információkat, kódot és naplókat tárolnak az Azure Storage-ban. Az adatok tárolásához létre kell hoznia egy tárfiókot. A tárfióknak támogatnia kell az Azure-blobok, üzenetsorok, fájlok és táblák tárolását; erre a célra használjon általános Azure Storage-fiókot. A függvényhez használandó tárfiókot a fenti párbeszédpanel használatával adhatja meg.
A függvények jogosultsági vagy bizalmas műveleteket hajthatnak végre. Egy HTTP-kérés által aktivált függvény nyilvánosan is közzétehető. Egy ilyen függvény futtatásának lehetőségét érdemes a kijelölt csoportokra vagy felhasználókra korlátozni. A függvények védelméhez meg kell adnia a függvény aktiválásához szükséges hozzáférési jogosultságokat. A HTTP-kérések által aktivált függvények három hozzáférési jogosultsági szintet támogatnak:
- Névtelen. Hitelesítés nem szükséges, a függvényt bármelyik felhasználó aktiválhatja.
- Function. A HTTP-kérésnek meg kell adnia egy kulcsot, amellyel az Azure-függvény futtatókörnyezete hitelesíteni tudja a kérést. Ezt a kulcsot külön hozhatja létre, és az Azure Portal használatával tudja kezelni.
- Rendszergazda. Hasonló a függvényhez. A felhasználónak meg kell adnia egy kulcsot a függvényt aktiváló HTTP-kéréssel. A különbség az, hogy ez egy rendszergazdai kulcs. Ez a kulcs a függvényalkalmazás bármelyik függvényének eléréséhez felhasználható. A függvénykulcsokhoz hasonlóan ezt a kulcsot is külön hozhatja létre.
Ha a HTTP-kéréseken kívül más eseménnyel aktivált függvényt hoz létre, akkor meg kell adnia egy kapcsolati sztringet és minden más információt, amelyek birtokában a függvényalkalmazás hozzáférhet az eseményt aktiváló erőforráshoz. Ha például egy Blob Storage-esemény által aktivált függvényt ír, meg kell adnia a megfelelő Blob Storage-fiók kapcsolati sztring.
Egy Azure-függvény struktúrája
Az Azure-függvények statikus osztályként vannak implementálva. Az osztály biztosít egy Run
nevű statikus, aszinkron metódust, amely az osztály belépési pontjakét szolgál.
Az eseményindító értelmezési környezetét a Run
metódusnak átadott paraméterek határozzák meg. Http-eseményindító esetén a függvény egy HttpRequest objektumot kap. Ez az objektum tartalmazza a kérés fejlécét és törzsét. A kérés adataihoz a bármely HTTP-alkalmazásban rendelkezésre álló technikákkal férhet hozzá. A függvényre alkalmazott attribútumok meghatározzák az engedélyezési követelményeket (ebben az esetben névtelen ), valamint azokat a HTTP-műveleteket, amelyekre a függvény válaszol (GET és POST).
A Visual Studio által létrehozott alábbi kód példája megvizsgálja a kérés URL-címének részeként megadott lekérdezési sztringet, és egy név nevű paramétert keres. A kód egy StreamReaderrel is deszerializálja a kérés törzsét, és megpróbálja beolvasni a kérelemből a névnek is nevezett tulajdonság értékét. Ha a név a lekérdezési sztringben vagy a kérelem törzsében található, a rendszer a válaszban adja vissza a névértéket . Ellenkező esetben a függvény hibaüzenetet hoz létre a következő üzenettel: Adjon nevet a lekérdezési sztringnek vagy a kérelem törzsének.
public static class Function1
{
[FunctionName("Function1")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
string name = req.Query["name"];
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
dynamic data = JsonConvert.DeserializeObject(requestBody);
name = name ?? data?.name;
return name != null
? (ActionResult)new OkObjectResult($"Hello, {name}")
: new BadRequestObjectResult("Please pass a name on the query string or in the request body");
}
}
A függvény egy IActionResult objektumba csomagolt kimeneti adatokat és eredményeket tartalmazó értéket ad vissza. Az érték a kérésre adott HTTP-válasz törzsében lesz visszaadva.
A különböző típusú eseményindítók különböző bemeneti paramétereket és visszatérési típusokat kapnak. A következő példa egy blob-eseményindítóhoz generált kódot mutat be. Ebben a példában a blob tartalma egy Stream-objektumon keresztül lesz visszaadva, és a blob neve is meg van adva. Az eseményindító nem ad vissza adatokat; célja az adatok olvasása és feldolgozása a nevesített blobban.
public static class Function2
{
[FunctionName("Function2")]
public static void Run([BlobTrigger("samples-workitems/{name}", Connection = "xxxxxxxxxxxxxxxxxxxxxxx")]Stream myBlob, string name, ILogger log)
{
log.LogInformation($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes");
}
}
A függvények minden esetben átadnak egy ILogger-paramétert. A függvény ezt a paramétert használhatja naplóüzenetek írására, amelyeket a függvényalkalmazás a tárolóba ír későbbi elemzés céljából.
A függvények metaadatokat is tartalmaznak, amelyek meghatározzák az eseményindító típusát, a biztonsági követelményeket és az egyéb konkrét információkövetelményeket. A metaadatokat a HttpTrigger, a BlobTrigger vagy más triggerattribútumok használatával módosíthatja, ahogyan az a példákban is látható. A függvényt megelőző FunctionName attribútum a függvényalkalmazás által használt függvény azonosítója. Ennek a névnek nem kell megegyeznie a függvény nevével, de a félreértések elkerülése érdekében ajánlott szinkronban kezelni őket.
Azure-függvényalkalmazás helyi tesztelése
A Visual Debugger használatával helyileg hozhat létre és tesztelhet Egy Azure-függvényalkalmazást. A hibakereső elindításához nyomja le az F5 billentyűt, vagy a Hibakeresés menüben válassza a Hibakeresés indítása lehetőséget. Elindul a függvény futtatókörnyezetének helyi verziója. A függvények teszteléshez érhetők el. A példa a Függvény1 futtatókörnyezetet mutatja be, amely egy HTTP-esemény által aktivált függvény. Az URL-cím adja meg azt a végpontot, amelyhez a függvény éppen csatlakozik.
Ha megnyit egy webböngészőt, és megnyitja ezt az URL-címet, aktiválja a függvényt. Az alábbi ábrán egy törzs nélküli HTTP GET-kérésre generált válasz látható. A BadRequestObjectResult objektumot a függvényből visszaadó kód által létrehozott üzenet jelenik meg.
Ha megad egy névparamétert tartalmazó lekérdezési sztringet, a függvény beolvassa és feldolgozza az értéket.
Amíg a kód fut, a függvény futtatókörnyezet ablakában nyomkövetési üzenetek jelennek meg. A Visual Studio szokásos hibakeresési funkcióinak használatával töréspontokat állíthat be, és figyelemmel kísérheti a függvény folyamatvezérlését.