Gyakorlat – Azure-függvények helyi futtatása és tesztelése

Befejeződött

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.

  1. 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
    
  2. 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.

  3. 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.

  1. Lépjen az alkalmazás gyökérmappájába az Azure Cloud Shellben. Példa:

    cd ~/event-reporting
    
  2. 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] ------------------------------------------------------------------------
    
  3. 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.

  4. 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.

  1. Hozza létre az URL-címet a függvény API-jához:

    1. 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/
      
    2. 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
      
    3. 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
      
    4. Másolja ki a teljes létrehozott URL-címet a következő lépésekben való használatra.

  2. 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.

  3. 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.