Cvičení – místní spuštění a otestování funkce služby Azure Functions

Dokončeno

V předchozích lekcích jste zjistili, jak vytvořit funkci Azure Functions bez serveru z archetypu Maven. Dozvěděli jste se také, jak sestavit a spustit funkci v Cloud Shellu a jak nakonfigurovat prostředí pro testování funkce.

V tomto cvičení použijete znalosti, které jste získali k otevření portu HTTP v Cloud Shellu pro testování funkce. Pak sestavte a spusťte funkci v Cloud Shellu a vytvořte adresu URL rozhraní API pro otestování funkce pomocí webového prohlížeče.

Otevření portu HTTP pro testování

Než budete moct funkci otestovat vzdáleně, musíte otevřít port, aby se požadavky HTTP mapovaly na vaši funkci. Tato akce vygeneruje veřejnou adresu URL, kterou použijete později v tomto cvičení k otestování funkce.

  1. V Azure Cloud Shellu pomocí následujícího příkazu cURL otevřete port HTTP pro testování:

    curl -X POST http://localhost:8888/openPort/7071
    
  2. Když je port otevřený, zobrazí se odpověď JSON, která se podobá následujícímu příkladu:

    {"message":"Port 7071 is open","url":"https://gateway.westus.console.azure.com/n/cc-12345678/cc-12345678/proxy/7071/"}
    

    Odpověď JSON se zřetědí do jednoho řádku, jak je znázorněno v předchozím příkladu. Následující příklad ukazuje, jak by odpověď JSON vypadala, pokud byla naformátovaná:

    {
        "message": "Port 7071 is open",
        "url": "https://gateway.westus.console.azure.com/n/cc-12345678/cc-12345678/proxy/7071/"
    }
    

    Tento příklad by vám měl pomoct prozkoumat data, která jsou obsažena v odpovědi.

  3. Zkopírujte adresu URL z odpovědi JSON ve vaší instanci Cloud Shellu. Později v tomto cvičení použijete tuto adresu URL k otestování funkce ve webovém prohlížeči.

Sestavení a spuštění funkce v Cloud Shellu

Po otevření portu pro testování můžete sestavit a spustit funkci.

  1. V Azure Cloud Shellu přejděte do kořenové složky vaší aplikace. Příklad:

    cd ~/event-reporting
    
  2. K vyčištění adresáře projektu a sestavení funkce použijte následující příkaz Mavenu:

    mvn clean package
    

    Maven zobrazí spuštěný stav procesu sestavení. Při prvním sestavení funkce Maven stáhne desítky podpůrných souborů; tyto soubory jsou závislosti uvedené v pom.xml a host.json soubory. Následující úryvek ukazuje zkrácený příklad úspěšného sestavení:

    [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. Jakmile Maven dokončí sestavování a balení funkce, spusťte funkci pomocí následujícího příkazu Mavenu:

    mvn azure-functions:run
    

    Maven zobrazí spuštěný stav procesu spuštění. Následující úryvek ukazuje zkrácený příklad úspěšného spuštění:

    [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
    
    

    Vaše bezserverová funkce teď naslouchá požadavkům HTTP.

  4. Zkopírujte část s adresou URL za portem HTTP, například:

    /api/HttpExample
    

    Tento výňatek adresy URL použijete v další části tohoto cvičení k otestování funkce ve webovém prohlížeči.

Otestování funkce z webového prohlížeče

Dříve v tomto cvičení jste otevřeli port HTTP pro testování; tento port umožňuje otestovat aplikaci ve webovém prohlížeči. K tomu poslouží následující postup.

  1. Vytvořte adresu URL pro rozhraní API vaší funkce:

    1. Načtěte adresu URL, kterou jste dříve zkopírovali v části Otevření portu HTTP pro testování tohoto cvičení, například:

      https://gateway.westus.console.azure.com/n/cc-12345678/cc-12345678/proxy/7071/
      
    2. Připojte úryvek z adresy URL rozhraní API vaší funkce, který jste si zkopírovali dříve v části Sestavení a spuštění funkce v Cloud Shellu tohoto cvičení, například:

      https://gateway.westus.console.azure.com/n/cc-12345678/cc-12345678/proxy/7071/api/HttpExample
      
    3. Připojte řetězec dotazu, který předá název adrese URL rozhraní API, například:

      https://gateway.westus.console.azure.com/n/cc-12345678/cc-12345678/proxy/7071/api/HttpExample?name=Bob
      
    4. Tuto plně vytvořenou adresu URL si zkopírujte. Budete ji používat v následujících krocích.

  2. Ve webovém prohlížeči otevřete novou kartu a do pole adresy vložte plně vytvořenou adresu URL z předchozích kroků.

  3. Když webovému prohlížeči dáte pokyn, aby požádal o adresu URL, zobrazí se zpráva ve formátu prostého textu vrácená do webového prohlížeče, která je přizpůsobena názvu, který jste předali v řetězci dotazu. Příklad:

    Hello, Bob
    

    V Azure Cloud Shellu by se měla zobrazit stavová zpráva podobná té v následujícímu příkladu, která indikuje, že žádost byla úspěšně zpracována:

    [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] }
    

Pokud se nezobrazí žádné chyby, úspěšně jste funkci otestovali místně.

Než budete pokračovat, přepněte zpět do Cloud Shellu a stisknutím kombinace kláves CTRL+C zavřete testovací server.

V další lekci se dozvíte, jak funkci nasadit do Azure Functions.