Übung: Lokales Erstellen einer Funktion mithilfe der Core Tools

Abgeschlossen

Mit Azure Functions Core Tools können Sie Funktionen lokal auf Ihrem eigenen Computer entwickeln, indem Sie:

  • Dateien und Ordner erstellen, die für ein Functions-Projekt erforderlich sind
  • Einen Functions-Host bereitstellen, der lokal über das Stammverzeichnis Ihres Projekts ausgeführt wird

Sie möchten nun Ihre Arbeit mit Azure Functions beginnen, indem Sie eine Funktion zur einfachen Zinsberechnung lokal entwickeln. Mit der Zeit können Sie komplexere Funktionen erstellen, die zusammenarbeiten und andere Dienste und Datenbanken aufrufen. Die Verwendung von Core Tools zum Erstellen einer Funktion, die eine grundlegende Kreditberechnung durchführt, ist ein guter Anfang. Zudem möchten Sie Ihre Funktion zunächst auf Ihrem eigenen Computer testen, bevor Sie sie in Azure veröffentlichen. Sie können all dies über Azure Cloud Shell mithilfe des Core Tools-Toolsets tun.

Azure Cloud Shell enthält Core Tools, die Azure CLI sowie einen Editor zum Schreiben von Code. Vergewissern Sie sich, dass Sie oben Sandbox aktivieren ausgewählt haben, bevor Sie fortfahren.

Erstellen eines lokalen Azure Functions-Projekts

In dieser Übung verwenden Sie Cloud Shell, um Ihre erste JavaScript-Funktion mit Core Tools zu entwickeln. Cloud Shell enthält bereits die richtigen Versionen von Core Tools und Node.js.

  1. Führen Sie im Stammordner func init aus, um ein Funktionsprojekt in einem neuen loan-wizard-Ordner zu erstellen.

    func init loan-wizard
    
  2. Wenn Sie zur Auswahl einer Workerlaufzeit aufgefordert werden, wählen Sie 3 für node aus.

  3. Wenn Sie aufgefordert werden, eine Sprache auszuwählen, geben Sie 1 für javascript ein.

    Die Ausgabe listet die Dateien auf, die auf den Datenträger geschrieben werden, einschließlich der folgenden Dateien:

    • host.json unterstützt die Konfiguration auf App-Ebene sowohl für die Runtimeinstanz als auch für bestimmte Trigger- und Bindungstypen.
    • local.settings.json legt nur lokale Verhaltensweisen und Anwendungseinstellungen fest (lokale Umgebungsvariablen).
    • package.json ist eine JavaScript-spezifische Datei, die alle Pakete nachverfolgt, die Sie installieren und in Ihrem Code verwenden.
    • .gitignore und extensions.json sind Konfigurationsdateien, die vom Git-Tool für die Versionskontrolle und von Visual Studio Code verwendet werden. Sie können sie vorerst ignorieren.

Erstellen einer durch HTTP ausgelösten Funktion

Es ist an der Zeit, Ihre Funktion zu erstellen!

  1. Navigieren Sie in Cloud Shell zum neuen Verzeichnis loan-wizard.

    cd ~/loan-wizard
    
  2. Führen Sie func new aus, um den Funktionserstellungs-Assistenten zu starten.

    func new
    
  3. Wenn Sie aufgefordert werden, eine Vorlage auszuwählen, geben Sie 7 für HTTP-Trigger ein.

  4. Geben Sie simple-interest ein, wenn Sie aufgefordert werden, einen Funktionsnamen für den HTTP-Trigger einzugeben.

  5. Führen Sie den folgenden Befehl aus, um den Cloud Shell-Editor zu öffnen.

    code .
    

    Screenshot showing the simple-interest folder with the function.json file open in Cloud Shell code editor.

    Der Assistent erstellt im Funktionsprojekt unter src/functions eine neue Datei mit dem Namen simple-interest.js, die Standardvorlageninhalte enthält. Dieser Code unterstützt das Node.js v4-Programmiermodell für Azure Functions. Nehmen Sie sich etwas Zeit, um die Projektdateien im Editor zu untersuchen. Der Screenshot zeigt den erweiterten Ordner mit der im Editor geöffneten Datei simple-interest.js.

Implementieren der Funktion „simple-interest“

Die Funktionsstandardimplementierung, die die Core Tools für uns in simple-interest.js erstellt haben, sucht in der Abfragezeichenfolge oder im Text der eingehenden HTTP-Anforderung nach einer Eingabe mit dem Namen name und gibt die Zeichenfolge Hello, [name] zurück. Dadurch wird die Verwendung eines HTTP-Triggers gut veranschaulicht. Ersetzen Sie nun jedoch diesen Code durch einen Code, der basierend auf drei Eingabeparametern eine einfache Zinsberechnung durchführt.

  1. Erweitern Sie im Bereich DATEIEN des Editors den Ordner src>functions, und wählen Sie simple-interest.js aus, um die Datei im Editor zu öffnen.

  2. Ersetzen Sie den vollständigen Inhalt von simple-interest.js durch den folgenden Code:

    const { app } = require('@azure/functions');
    
    app.http('simple-interest', {
        methods: ['GET','POST'],
        authLevel: 'anonymous',
        handler: async (request, context) => {
            const principal = parseFloat(request.query.get('principal'));
            const rate = parseFloat(request.query.get('rate'));
            const term = parseFloat(request.query.get('term'));
    
          if ([principal, rate, term].some(isNaN)) {
            // If any empty or non-numeric values, return a 400 response with an
            // error message
            return {
              status: 400,
              body: "Please supply principal, rate and term in the query string"
            };
          } else {
            // Otherwise set the response body to the product of the three values
            return { body: principal * rate * term };
          }
        }
    });
    

    Dieses Skript sucht in der Abfragezeichenfolge der HTTP-Anforderung nach Parametern mit den Namen principal, rate, und term. Anschließend wird das Ergebnis der einfachen Zinsberechnung (principal * rate * term) zurückgegeben.

  3. Speichern Sie die Datei, indem Sie STRG+S drücken, und schließen Sie den Editor, indem Sie STRG+Q drücken.

Ausführen der Funktion in Cloud Shell

Zur lokalen Ausführung und zum Testen Ihrer neuen Funktion verwenden Sie func start, um die Functions-Runtime (func.exe) in einem Hintergrundprozess zu starten, sodass Sie die Befehlszeile während der Ausführung verwenden können. Anschließend verwenden Sie das Befehlszeilentool curl, um mit der Funktion zu interagieren.

Wenn Sie Core Tools von Ihrem eigenen Computer verwenden, können Sie einfach curl in einem zweiten Terminalfenster oder einem Webbrowser verwenden. Die von Core Tools erzeugte Ausgabe wird im ersten Terminalfenster in Echtzeit angezeigt. In Cloud Shell sind Sie auf ein einzelnes Terminal beschränkt, daher müssen Sie Core Tools (func.exe) als Hintergrundprozess ausführen.

  1. Führen Sie den folgenden Befehl zum unbeaufsichtigten Starten des Funktionshosts im Hintergrund aus:

    func start &> ~/output.txt &
    

    Wie bei func new sollte sich Cloud Shell weiterhin im Verzeichnis loan-wizard befinden.

    Der Funktionshost schreibt nun seine Ausgabe in die Datei ~/output.txt. Sie können die Befehlszeile weiterhin verwenden, während sie ausgeführt wird.

    Überprüfen Sie mithilfe des Befehls ps, ob der Prozess func ausgeführt wird.

  2. Geben Sie den folgenden Befehl ein, um das Ausgabeprotokoll zu sehen.

    code ~/output.txt
    

    In der Ausgabe wird eine Meldung angezeigt, dass Functions: simple-interest: sowohl als GET-als auch als POST HTTP-Anforderung http://localhost:7071/api/simple-interest verfügbar ist.

    Hinweis

    Wenn eine Fehlermeldung angezeigt wird, wählen Sie STRG+C aus, um den Host zu beenden. Stellen Sie sicher, dass der Inhalt der Codedatei mit dem Beispiel identisch ist.

    Diese Localhost-URL wird nicht im Web veröffentlicht. Auf sie kann nur über Tools zugegriffen werden, die in Ihrer Cloud Shell-Sitzung ausgeführt werden.

  3. Drücken Sie STRG+Q, um den Editor zu schließen.

  4. Führen Sie den folgenden Befehl aus, um eine HTTP GET-Anforderung an Ihre lokal ausgeführte Funktion zu senden.

    curl "http://localhost:7071/api/simple-interest" -w "\n"
    

    Die Ausgabe (Please supply principal, rate and term in the query string) zeigt an, dass Ihre Funktion erfolgreich aufgerufen wurde und eine Antwort zurückgeben werden kann. Sie rufen sie aber nicht wie vorgesehen auf. Sie müssen noch die Parameter als Teil der HTTP-Anforderung bereitstellen.

  5. Rufen Sie die Funktion erneut auf. Geben Sie dieses Mal für jeden Parameter der Abfragezeichenfolge einen Wert an.

    curl "http://localhost:7071/api/simple-interest?principal=5000&rate=.035&term=36" -w "\n"
    

    Dieses Mal lautet die Ausgabe 6300. Ihre Funktion funktioniert erwartungsgemäß!

  6. Geben Sie den folgenden Befehl ein, um erneut das Ausgabeprotokoll anzuzeigen.

    code ~/output.txt
    

    Nach den Startprotokolleinträgen sehen Sie eine Reihe von Protokolleinträgen mit Zeitstempel für jedes Mal, wenn Sie die Funktion mit curl aufgerufen haben:

    [2024-02-20T06:25:56.700Z] Executing 'Functions.simple-interest' (Reason='This function was programmatically called via the host APIs.', Id=5daf20c3-f204-41bb-a5b9-021acaf17c04)
    [2024-02-20T06:25:56.893Z] Executed 'Functions.simple-interest' (Succeeded, Id=5daf20c3-f204-41bb-a5b9-021acaf17c04, Duration=228ms)
    
    
  7. Drücken Sie STRG+Q, um den Editor zu schließen.