Gyakorlat – Azure-függvények helyi futtatása és tesztelése
A korábbi leckékben megtanulta, hogyan hozhat létre kiszolgáló nélküli Web Service Azure-függvényt egy Maven-archetípusból. Azt is megtanulta, hogyan hozhatja létre és futtathatja a függvényt a Cloud Shellben, és hogyan konfigurálhatja a rendszerhéj-környezetet a függvény teszteléséhez.
Ebben a gyakorlatban egy HTTP-port Cloud Shellben való megnyitásához szerzett tudást alkalmazza a függvény teszteléséhez. Ezután hozza létre és futtassa a függvényt a Cloud Shellben, majd hozzon létre egy API URL-címet a függvény webböngészővel történő teszteléséhez.
HTTP-port megnyitása teszteléshez
Ahhoz, hogy távolról tesztelhesse a függvényt, meg kell nyitnia egy portot, hogy a HTTP-kérések megfeleltethetők legyenek a függvénynek. Ez a művelet létrehoz egy nyilvános URL-címet, amelyet a gyakorlat későbbi részében használ a függvény teszteléséhez.
Az Azure Cloud Shellben használja az alábbi cURL-parancsot a tesztelésre használt HTTP-port megnyitásához:
curl -X POST http://localhost:8888/openPort/7071
Amikor a port meg van nyitva, megjelenik egy JSON-válasz, amely az alábbi példához hasonlít:
{"message":"Port 7071 is open","url":"https://gateway.westus.console.azure.com/n/cc-12345678/cc-12345678/proxy/7071/"}
A JSON-válasz egyetlen sorba van összefűzve az előző példában látható módon. Azonban a következő példa bemutatja, hogyan jelenne meg egy formázott JSON-válasz:
{ "message": "Port 7071 is open", "url": "https://gateway.westus.console.azure.com/n/cc-12345678/cc-12345678/proxy/7071/" }
Ez a példa segít abban, hogy megvizsgálja a válaszban megjelenő adatokat.
Másolja ki az URL-címet a Cloud Shell-példányban megjelenő JSON-válaszból. A gyakorlat későbbi részében ezt az URL-címet használva tesztelheti a függvényt egy webböngészőben.
Függvények összeállítása és futtatása a Cloud Shellben
Miután megnyitotta a portot tesztelésre, létrehozhatja és futtathatja a függvényt.
Lépjen az alkalmazás gyökérmappájába az Azure Cloud Shellben. Példa:
cd ~/event-reporting
Használja az alábbi Maven-parancsot a projektkönyvtár kiürítéséhez és a függvény összeállításához:
mvn clean package
A Maven megjeleníti a buildelési folyamat futó állapotát. Amikor először hozza létre a függvényt, a Maven több tucat támogató fájlt tölt le; ezek a fájlok a pom.xml és host.json fájlokban felsorolt függőségek. Az alábbi kivonat egy sikeres összeállítás rövidített példáját szemlélteti:
[INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building Azure Java Functions 1.0-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] . . . [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 8.509 s [INFO] Finished at: 2020-01-01T04:55:05+00:00 [INFO] Final Memory: 57M/306M [INFO] ------------------------------------------------------------------------
Amikor a Maven befejezi a függvény összeállítását és csomagolását, a függvény futtatásához használja a következő Maven-parancsot:
mvn azure-functions:run
A Maven megjeleníti az indítási folyamat futó állapotát. Az alábbi kivonat egy sikeres indítás rövidített példáját szemlélteti:
[INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building Azure Java Functions 1.0-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- azure-functions-maven-plugin:1.4.1:run (default-cli) @ event-reporting --- [INFO] Azure Function App's staging directory found at: /home/user/event-reporting/target/azure-functions/event-reporting-20200101063700664 [INFO] Azure Functions Core Tools found. %%%%%% %%%%%% @ %%%%%% @ @@ %%%%%% @@ @@@ %%%%%%%%%%% @@@ @@ %%%%%%%%%% @@ @@ %%%% @@ @@ %%% @@ @@ %% @@ %% % Azure Functions Core Tools (2.7.2184 Commit hash: 5afacc827c2848e4debc23bb96604f1ffce09cc7) Function Runtime Version: 2.0.12961.0 . . . Hosting environment: Production Content root path: /home/user/event-reporting/target/azure-functions/event-reporting-20200101063700664 Now listening on: http://0.0.0.0:7071 Application started. Press Ctrl+C to shut down. Http Functions: HttpExample: [GET,POST] http://localhost:7071/api/HttpExample
A kiszolgáló nélküli függvény megkezdte a HTTP-kérések figyelését.
Másolja ki az URL-cím HTTP-port utáni részét, például:
/api/HttpExample
Ezt az URL-részletet a gyakorlat következő szakaszában használva tesztelheti a függvényt egy webböngészőben.
A függvény tesztelése webböngészőben
A gyakorlat korábbi részében megnyitott egy HTTP-portot tesztelésre; ez a port lehetővé teszi az alkalmazás webböngészőben való tesztelését. Ehhez a következőket kell tennie.
Hozza létre az URL-címet a függvény API-jához:
Keresse elő az URL-címet, amelyet a gyakorlat korábbi, HTTP-port megnyitása teszteléshez című szakaszában kimásolt, például:
https://gateway.westus.console.azure.com/n/cc-12345678/cc-12345678/proxy/7071/
Fűzze hozzá a függvényhez tartozó API URL-címrészletet, amelyet a gyakorlat Függvények összeállítása és futtatása a Cloud Shellben című szakaszában korábban kimásolt:
https://gateway.westus.console.azure.com/n/cc-12345678/cc-12345678/proxy/7071/api/HttpExample
Fűzzön hozzá egy lekérdezési sztringet, amely egy nevet ad az API URL-címéhez; például:
https://gateway.westus.console.azure.com/n/cc-12345678/cc-12345678/proxy/7071/api/HttpExample?name=Bob
Másolja ki a teljes létrehozott URL-címet a következő lépésekben való használatra.
Nyisson meg egy új lapot a webböngészőben, és illessze be a címsorba az előző lépések során létrehozott teljes URL-címet.
Amikor arra utasítja a webböngészőt, hogy kérje le az URL-címet, egy egyszerű szöveges üzenet jelenik meg, amely a lekérdezési sztringben megadott névre lesz személyre szabva. Példa:
Hello, Bob
Az Azure Cloud Shellben az alábbi példához hasonló állapotüzenetet kell látnia, amely jelzi, hogy a kérés teljesítése sikeres volt:
[1/1/20 7:08:11 AM] Executing HTTP request: { [1/1/20 7:08:11 AM] "requestId": "12345678-1234-1234-1234-123456789abc", [1/1/20 7:08:11 AM] "method": "GET", [1/1/20 7:08:11 AM] "uri": "/api/HttpExample" [1/1/20 7:08:11 AM] } [1/1/20 7:08:12 AM] Executing 'Functions.HttpExample' (Reason='This function was programmatically called via the host APIs.', Id=12345678-1234-1234-1234-123456789abc) [1/1/20 7:08:12 AM] Java HTTP trigger processed a request. [1/1/20 7:08:12 AM] Function "HttpExample" (Id: 12345678-1234-1234-1234-123456789abc) invoked by Java Worker [1/1/20 7:08:12 AM] Host lock lease acquired by instance ID '00000000000000000000000052DF09EB'. [1/1/20 7:08:12 AM] Executed 'Functions.HttpExample' (Succeeded, Id=12345678-1234-1234-1234-123456789abc) [1/1/20 7:08:13 AM] Executed HTTP request: { [1/1/20 7:08:13 AM] "requestId": "12345678-1234-1234-1234-123456789abc", [1/1/20 7:08:13 AM] "method": "GET", [1/1/20 7:08:13 AM] "uri": "/api/HttpExample", [1/1/20 7:08:13 AM] "identities": [ [1/1/20 7:08:13 AM] { [1/1/20 7:08:13 AM] "type": "WebJobsAuthLevel", [1/1/20 7:08:13 AM] "level": "Admin" [1/1/20 7:08:13 AM] } [1/1/20 7:08:13 AM] ], [1/1/20 7:08:13 AM] "status": 200, [1/1/20 7:08:13 AM] "duration": 1759 [1/1/20 7:08:13 AM] }
Ha nem látja a hibákat, akkor sikeresen tesztelte a függvényt helyileg!
A folytatás előtt váltson vissza a Cloud Shellre, és a Ctrl+C parancs lenyomásával zárja be a tesztkiszolgálót.
A következő leckében megtudhatja, hogyan helyezheti üzembe a függvényt az Azure Functionsben.