Bedarfsgesteuertes Ausführen Ihres Codes mit Azure Functions

Abgeschlossen

Nachdem wir nun eine Funktions-App erstellt haben, sehen wir uns an, wie eine Funktion erstellt, konfiguriert und ausgeführt wird. Wir führen unsere Funktion in der nächsten Übung aus, sodass Sie keine Aufgaben in dieser Lerneinheit ausführen müssen.

Trigger

Funktionen sind ereignisgesteuert, d.h., sie werden als Reaktion auf ein Ereignis ausgeführt. Der Ereignistyp, der eine Funktion startet, wird als Trigger bezeichnet. Jede Funktion muss mit genau einem Trigger konfiguriert werden.

Sie können die Ausführung der Funktion durch HTTP-Anforderungen, einen geplanten Timer und Ereignisse der folgenden Azure-Diensten auslösen:

Azure-Dienst Beschreibung des Triggers
Blob Storage Startet eine Funktion, wenn ein neues oder aktualisiertes Blob erkannt wird.
Azure Cosmos DB Startet eine Funktion, wenn Einfügungen und Aktualisierungen erkannt werden.
Event Grid Startet eine Funktion, wenn ein Ereignis von Event Grid empfangen wird.
Event Hubs Startet eine Funktion, wenn ein Ereignis von Event Hubs empfangen wird.
Queue Storage Startet eine Funktion, wenn ein neues Element in einer Warteschlange eingeht. Die Warteschlangennachricht wird als Eingabe für die Funktion bereitgestellt.
Service Bus Startet eine Funktion als Reaktion auf Nachrichten aus einer Service Bus-Warteschlange.

Bindungen

Eine Bindung ist eine deklarative Möglichkeit, Daten und Dienste mit Ihrer Funktion zu verbinden. Bindungen interagieren mit verschiedenen Datenquellen. Das bedeutet, dass Sie den Code nicht in Ihre Funktion schreiben müssen, um eine Verbindung mit Datenquellen herzustellen und Verbindungen zu verwalten. Die Plattform nimmt Ihnen diese komplexen Aufgaben als Teil des Bindungscodes ab. Jede Bindung hat eine Richtung: Ihr Code liest Daten aus Eingabe-Bindungen und schreibt Daten in Ausgabe-Bindungen. Jede Funktion kann null oder mehr Bindungen haben, um die von der Funktion verarbeiteten Ein- und Ausgabedaten zu verwalten.

Ein Trigger ist eine Art von Eingabebindung, die die Fähigkeit hat, die Ausführung von Code zu initiieren.

Azure bietet eine große Anzahl von Bindungen zum Herstellen von Verbindungen mit verschiedenen Speicher- und Messagingdiensten.

Definieren einer Beispielbindung

Sehen wir uns ein Beispiel zum Konfigurieren einer Funktion mit einer Eingabebindung (Trigger) und einer Ausgabebindung an. Ein Beispiel: Sie möchten immer dann eine neue Zeile in Azure Table Storage schreiben, wenn in Azure Queue Storage eine neue Nachricht eintrifft. Dieses Szenario kann mit einem Azure Queue Storage-Trigger und einer Azure Table Storage-Ausgabebindung implementiert werden.

Der folgende Codeausschnitt zeigt die Datei function.json für dieses Szenario.

{
  "bindings": [
    {
      "name": "order",
      "type": "queueTrigger",
      "direction": "in",
      "queueName": "myqueue-items",
      "connection": "MY_STORAGE_ACCT_APP_SETTING"
    },
    {
      "name": "$return",
      "type": "table",
      "direction": "out",
      "tableName": "outTable",
      "connection": "MY_TABLE_STORAGE_ACCT_APP_SETTING"
    }
  ]
}

In unserer JSON-Konfiguration wird angegeben, dass unsere Funktion getriggert wird, wenn eine Nachricht zu einer Warteschlange namens myqueue-items hinzugefügt wird. Der Rückgabewert Ihrer Funktion wird in die Tabelle outTable in Azure Table Storage geschrieben.

Für PowerShell-Funktionen werden Ausgabebindungen explizit mit dem Cmdlet Push-OutputBinding geschrieben.

In diesem Beispiel wird einfach dargestellt, wie wir Bindungen für eine Funktion konfigurieren. Wir könnten die Ausgabe in eine E-Mail mit einer SendGrid-Bindung ändern oder ein Ereignis in einen Service Bus setzen, um eine andere Komponente in unserer Architektur zu benachrichtigen. Wir könnten sogar mehrere Ausgabebindungen haben, um Daten an verschiedene Dienste zu pushen.

Tipp

Sie können die Inhalte von function.json über das Azure-Portal anzeigen und bearbeiten, indem Sie Ihre Funktions-App über die Startseite auswählen und dann rechts JSON-Ansicht auswählen. In der JSON-Ressourcenansicht werden die Ressourcen-ID und der bearbeitbare JSON-Code angezeigt. Wählen Sie das Symbol X in der oberen rechten Ecke des Bereichs aus, um die JSON-Ansicht zu schließen.

Nicht alle von Functions unterstützten Sprachen verwenden die Datei „function.json“, um Funktionen zu definieren.

Erstellen einer Funktion im Azure-Portal

Azure Functions stellt vordefinierte Funktionsvorlagen bereit, die auf einem bestimmten Typ von Auslöser basieren. Diese Vorlagen in der von Ihnen gewählten Sprache machen es Ihnen leicht, Ihre erste Funktion zu erstellen.

Dieses Modul wird nicht für alle von Functions unterstützten Sprachen unterstützt, und das Portal selbst bietet keine Unterstützung für das Erstellen von Funktionen in allen von Functions unterstützten Sprachen.

Für unterstützte Sprachen, die die Datei „function.json“ zur Definition von Funktionen verwenden, können Sie diese Funktionen direkt im Azure-Portal erstellen und bearbeiten. Zu den vom Portal unterstützten Sprachen gehören: JavaScript, PowerShell, Python und C# Script (.csx). Für Sprachen, die Funktionen direkt im Code definieren, muss die Entwicklung außerhalb des Portals und die Bereitstellung in Azure erfolgen. Zu diesen nicht vom Portal unterstützten Sprachen gehören: C#, Java, Python (v2-Programmiermodell) und JavaScript/TypeScript (Node.js v4-Programmiermodell).

Funktionsvorlagen

Wenn Sie Ihre erste Funktion im Portal erstellen, können Sie einen vordefinierten Trigger für Ihre Funktion auswählen. Basierend auf Ihrer Auswahl generiert Azure Standardcode und Konfigurationsinformationen, z. B. das Erstellen eines Ereignisprotokolleintrags, wenn Eingabedaten empfangen werden.

Das Auswählen einer Vorlage aus dem Bereich Funktion hinzufügen ermöglicht den einfachen Zugriff auf die gängigsten Entwicklungsumgebungen, Auslöser und Abhängigkeiten. Wenn Sie im Azure-Portal eine Funktion erstellen, können Sie aus mehr als 20 Vorlagen auswählen. Nach dem Erstellen können Sie den Code weiter anpassen.

Wenn Sie eine Funktion aus einer Vorlage erstellen, werden mehrere Dateien erstellt, einschließlich einer Konfigurationsdatei, function.json, und einer Quellcodedatei, index.js.

Sie können Funktionen für Ihre Funktions-App erstellen oder bearbeiten, indem Sie Funktionen unter der Kategorie Funktionen aus dem Menü „Funktions-App“ auswählen.

Wenn Sie eine Funktion auswählen, die Sie in Ihrer Funktions-App erstellt haben, wird der Bereich „Funktion“ geöffnet. Durch Auswahl von Programmieren und testen im Menü „Funktion“ haben Sie Zugriff auf die Aktionen in der Befehlsleiste. Sie können den Code testen oder ausführen, vorgenommene Änderungen speichern oder verwerfen oder die veröffentlichte URL abrufen. Durch das Auswählen von Test/Run (Testen/Ausführen) in der Befehlsleiste können Sie Anwendungsfälle für Anforderungen ausführen, die Abfragezeichenfolgen und -werte enthalten. Im Pfad der Funktion über dem Codefeld wird der Name der geöffneten Datei angezeigt. Sie können eine bestimmte Datei, z. B. function.json, aus der Dropdownliste auswählen, um sie zu testen oder zu bearbeiten.

Screenshot: Der Funktionscode- und Test-Editor mit der erweiterten „Test/Run“-Ansicht, in der die Menüoptionen hervorgehoben sind

Im vorherigen Bild enthält der Bereich auf der rechten Seite die Registerkarten Eingabe und Ausgabe. Wenn Sie die Registerkarte Eingabe auswählen, können Sie die Funktion erstellen und testen, indem Sie Abfrageparameter hinzufügen und Werte für Ihre Abfragezeichenfolge angeben. In der Registerkarte Ausgabe werden die Ergebnisse der Anforderung angezeigt.

Testen der Azure-Funktion

Nachdem Sie eine Funktion im Portal erstellt haben, sollten Sie sie testen. Es gibt zwei Ansätze:

  • Testen der Funktion im Portal
  • Manuelles Ausführen

Testen im Azure-Portal

Das Azure-Portal bietet auch eine praktische Möglichkeit, Ihre Funktionen zu testen. Befolgen Sie hierzu die vorherigen Beschreibungen (siehe Screenshot oben). Wenn Sie in diesem Bereich die Option Ausführen auswählen, werden die Ergebnisse automatisch in der Registerkarte Ausgabe angezeigt, und der Bereich Protokolle wird geöffnet, um den Status anzuzeigen.

Manuelles Ausführen der Funktion

Sie können eine Funktion starten, indem Sie den konfigurierten Trigger manuell auslösen. Wenn Sie beispielsweise einen HTTP-Trigger verwenden, können Sie eines der folgenden HTTP-Testtools verwenden, um eine HTTP-Anforderung an Ihre Funktionsendpunkt-URL zu initiieren:

Achtung

Für Szenarien, in denen Sie über vertrauliche Daten wie Anmeldeinformationen, Geheimnisse, Zugriffstoken, API-Schlüssel und andere ähnliche Informationen verfügen, sollten Sie ein Tool verwenden, das Ihre Daten mit den erforderlichen Sicherheitsfunktionen schützt, offline oder lokal funktioniert, Ihre Daten nicht mit der Cloud synchronisiert und keine Anmeldung bei einem Onlinekonto erfordert. Auf diese Weise verringern Sie das Risiko, dass vertrauliche Daten an die Öffentlichkeit gelangen.

Sie können den URL-Endpunkt eines HTTP-Triggers abrufen, indem Sie auf der Funktionsdefinitionsseite im Portal Funktions-URL abrufen auswählen.

Überwachung und Application Insights-Dashboard

Die Fähigkeit, Ihre Funktionen zu überwachen, ist während der Entwicklung und in der Produktion unerlässlich. Das Azure-Portal bietet ein Überwachungsdashboard, das Sie aktivieren können, indem Sie die Application Insights-Integration aktivieren. Wählen Sie im Menü „Funktions-App“ unter Einstellungen die Option Application Insights aus, wählen Sie Application Insights aktivieren aus, und wählen Sie Anwenden aus. Klicken Sie im Dialogfeld auf Ja. Das Application Insights-Dashboard bietet eine schnelle Möglichkeit, den Verlauf der Funktionsvorgänge anzuzeigen, indem der Zeitstempel, der Ergebniscode und die Vorgangs-ID angezeigt werden, die von Application Insights angegeben werden.

Screenshot: Application Insights-Dashboard der HTTP-Funktion mit Funktionsergebnissen, entsprechenden HTTP-Statuscodes und hervorgehobenen Elementen im Menü „Überwachung“

Bereich „Streamingprotokolle“

Nachdem Sie Application Insights im Azure-Portal aktiviert haben, können Sie Ihrer Funktion Protokollierungsanweisungen für das Debuggen hinzufügen. Den aufgerufenen Methoden für jede Sprache wird ein „Protokollierungs“-Objekt übergeben, das verwendet werden kann, um dem Protokollbereich im Bereich Code + Test Protokollinformationen hinzufügen, wenn ein Test ausgeführt wird.

Schreiben Sie ausgehend von Ihrem Code in die Protokolle, indem Sie die Methode log für das Objekt context verwenden, das an den Handler übergeben wird. Im folgenden Beispiel erfolgt eine Protokollierung auf der Standardprotokollebene (Informationen):

context.log('Enter your logging statement here');

Führen Sie mit dem Write-Host-Cmdlet aus Ihrem Code eine Protokollierung durch, wie im folgenden Beispiel gezeigt:

Write-Host "Enter your logging statement here"

Fehler, Warnungen und Anomalien

Sie können Metriken oder Optionen aus der Kategorie „Untersuchen“ im Menü „Funktion“ verwenden, um die Leistung zu überwachen, Fehler zu diagnostizieren oder mehrere vordefinierte Arbeitsmappen zum Verwalten Ihrer Funktions-App zu konfigurieren. Bei diesen ist alles von Kompilierungsfehlern und Warnungen im Code bis zu Nutzungsstatistiken nach Rolle dabei.