Übung: Lokales Ausführen und Testen einer Azure-Funktion

Abgeschlossen

In früheren Lektionen haben Sie gelernt, wie Sie eine serverlose Azure-Funktion als Webdienst mit einem Maven-Archetyp erstellen. Außerdem haben Sie erfahren, wie Sie Ihre Funktion in der Cloud Shell erstellen und ausführen und wie Sie Ihre Shellumgebung konfigurieren, um Ihre Funktion zu testen.

In dieser Übung wenden Sie das erlernte Wissen an, um einen HTTP-Port in der Cloud Shell zu öffnen, damit Sie die Funktion testen können. Dann verwenden Sie die Cloud Shell, um die Funktion zu erstellen und auszuführen, und Sie erstellen eine API-URL, um Ihre Funktion mit einem Webbrowser zu testen.

Öffnen eines HTTP-Ports zum Testen

Bevor Sie die Funktion per Remoteverbindung testen können, müssen Sie zunächst einen Port öffnen, sodass HTTP-Anforderungen der Funktion zugeordnet werden. Diese Aktion erstellt eine öffentliche URL, die Sie später in dieser Übung verwenden, um die Funktion zu testen.

  1. Verwenden Sie in Azure Cloud Shell den folgenden cURL-Befehl, um einen HTTP-Port für Tests zu öffnen:

    curl -X POST http://localhost:8888/openPort/7071
    
  2. Wenn der Port geöffnet ist, wird eine JSON-Antwort angezeigt, die dem folgenden Beispiel ähnelt:

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

    Die JSON-Antwort wird in einer einzelnen Zeile verkettet, wie im folgenden Beispiel gezeigt. Im folgenden Beispiel wird jedoch veranschaulicht, wie die JSON-Antwort mit einer Formatierung aussehen würde:

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

    Anhand dieses Beispiels sollten Sie die Daten untersuchen können, die in der Antwort enthalten sind.

  3. Kopieren Sie die URL aus der JSON-Antwort in die Instanz von Cloud Shell. Sie werden diese URL später in dieser Übung verwenden, um die Funktion in einem Webbrowser zu testen.

Erstellen und Ausführen der Funktion in Cloud Shell

Nachdem Sie den Port zum Testen geöffnet haben, können Sie die Funktion erstellen und ausführen.

  1. Wechseln Sie in Azure Cloud Shell zum Stammordner der Anwendung. Beispiel:

    cd ~/event-reporting
    
  2. Verwenden Sie den folgenden Maven-Befehl, um das Projektverzeichnis zu bereinigen und die Funktion zu erstellen:

    mvn clean package
    

    Maven zeigt den Status „Wird ausgeführt“ für den Erstellungsvorgang an. Wenn Sie die Funktion erstmalig erstellen, lädt Maven zahlreiche Hilfsdateien herunter. Diese Dateien sind die Abhängigkeiten, die in den Dateien pom.xml und host.json aufgeführt sind. Der folgende Ausschnitt zeigt ein gekürztes Beispiel für einen erfolgreichen Build:

    [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. Wenn Maven das Erstellen und Verpacken der Funktion abgeschlossen hat, verwenden Sie den folgenden Maven-Befehl, um die Funktion auszuführen:

    mvn azure-functions:run
    

    Maven zeigt den Status „Wird ausgeführt“ für den Startvorgang an. Der folgende Ausschnitt zeigt ein gekürztes Beispiel für einen erfolgreichen Start:

    [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
    
    

    Die serverlose Funktion lauscht nun auf HTTP-Anforderungen.

  4. Kopieren Sie den URL-Abschnitt nach dem HTTP-Port. Beispiel:

    /api/HttpExample
    

    Sie werden diesen URL-Ausschnitt im nächsten Abschnitt dieser Übung verwenden, um die Funktion in einem Webbrowser zu testen.

Testen der Funktion in einem Webbrowser

An früherer Stelle in dieser Übung haben Sie einen HTTP-Port zum Testen geöffnet. Mit diesem Port können Sie die Anwendung in einem Webbrowser testen. Führen Sie dazu die folgenden Schritte aus:

  1. Konstruieren Sie die URL für die API der Funktion:

    1. Rufen Sie die URL ab, die Sie zuvor im Abschnitt Öffnen eines HTTP-Ports zum Testen dieser Übung kopiert haben. Beispiel:

      https://gateway.westus.console.azure.com/n/cc-12345678/cc-12345678/proxy/7071/
      
    2. Fügen Sie den Auszug aus der API-URL der Funktion an, die Sie zuvor im Abschnitt Erstellen und Ausführen der Funktion in Cloud Shell dieser Übung kopiert haben. Beispiel:

      https://gateway.westus.console.azure.com/n/cc-12345678/cc-12345678/proxy/7071/api/HttpExample
      
    3. Fügen Sie eine Abfragezeichenfolge an, die der API-URL einen Namen übergibt. Beispiel:

      https://gateway.westus.console.azure.com/n/cc-12345678/cc-12345678/proxy/7071/api/HttpExample?name=Bob
      
    4. Kopieren Sie diese vollständig konstruierte URL für die Verwendung in den folgenden Schritten.

  2. Öffnen Sie eine neue Registerkarte im Webbrowser, und fügen Sie die vollständig konstruierte URL aus den vorherigen Schritten in das Adressfeld ein.

  3. Wenn Sie den Webbrowser anweisen, die URL anzufordern, wird eine Klartextnachricht an den Webbrowser zurückgegeben, die auf den Namen personalisiert wird, den Sie in der Abfragezeichenfolge angegeben haben. Beispiel:

    Hello, Bob
    

    In Azure Cloud Shell wird eine Statusmeldung angezeigt, die dem folgenden Beispiel ähnelt und angibt, dass die Anforderung erfolgreich verarbeitet wurde:

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

Wenn keine Fehler angezeigt werden, haben Sie die Funktion erfolgreich lokal getestet.

Wechseln Sie vor dem Fortfahren zurück zu Cloud Shell, und drücken Sie STRG+C, um den Testserver zu schließen.

In der nächsten Lerneinheit erfahren Sie, wie Sie Ihre Funktion in Azure Functions bereitstellen.