Freigeben über


Manuelles Ausführen einer Funktion ohne HTTP-Trigger

In diesem Artikel wird gezeigt, wie Sie eine Funktion ohne HTTP-Trigger manuell über eine speziell formatierte HTTP-Anforderung ausführen.

In einigen Kontexten, z. B. während der Entwicklung und Problembehandlung, müssen Sie möglicherweise „on-demand“ eine Azure-Funktion ausführen, die indirekt ausgelöst wird. Beispiele für indirekte Trigger sind Funktionen in einem Zeitplan oder Funktionen, die als Ergebnis von Ereignissenausgeführt werden.

Das in diesem Artikel beschriebene Verfahren entspricht der Verwendung der Test/Run Funktionalität des Tabs Code + Test einer Funktion im Azure-Portal. Sie können Visual Studio Code auch verwenden, um Funktionen manuell auszuführen.

Voraussetzungen

In den Beispielen in diesem Artikel wird ein HTTP-Testtool verwendet. Sie können eines dieser Tools, das die HTTP-Anforderungen sendet, abrufen und verwenden:

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.

Festlegen des Anforderungsorts

Wenn Sie eine Funktion ohne HTTP-Trigger ausführen möchten, benötigen Sie eine Methode, mit der Sie die Ausführung der Funktion bei Azure anfordern können. Die zum Senden dieser Anforderung verwendete URL hat ein bestimmtes Format.

Festlegen des Anforderungsorts: Hostname + Ordnerpfad + Funktionsname

  • Hostname: Der öffentliche Ort der Funktions-App, der sich aus dem Namen der Funktions-App und azurewebsites.net bzw. Ihrer benutzerdefinierten Domäne zusammensetzt. Wenn Sie mit Bereitstellungsslots arbeiten, die für das Staging verwendet werden, ist der Hostnamenteil der Produktionshostname, an den -<slotname> angefügt wurde. Im vorherigen Beispiel wäre myfunctiondemos-staging.azurewebsites.net die URL für einen Slot namens staging.
  • Ordnerpfad: Um über eine HTTP-Anforderung auf nicht HTTP ausgelöste Funktionen zuzugreifen, müssen Sie die Anforderung über den Pfad admin/functions senden. Auf APIs unter dem /admin/ Pfad kann nur mit Autorisierung zugegriffen werden.
  • Funktionsname: Der Name der Funktion, die Sie ausführen möchten.

Die folgenden Überlegungen gelten beim Senden von Anforderungen an Administratorendpunkte in Ihrer Funktions-App:

  • Wenn Sie Anforderungen an einen beliebigen Endpunkt unter dem /admin/ Pfad stellen, müssen Sie den Hauptschlüssel Ihrer App im x-functions-key Header der Anforderung angeben.
  • Wenn Sie lokal ausgeführt werden, wird die Autorisierung nicht erzwungen, und der Hauptschlüssel der Funktion ist nicht erforderlich. Sie können direkt die Funktion aufrufen und den Header x-functions-key weglassen.
  • Stellen Sie beim Zugriff auf Funktions-App-Endpunkte in einem Bereitstellungsslot sicher, dass Sie den slotspezifischen Hostnamen in der Anforderungs-URL zusammen mit dem slotspezifischen Hauptschlüssel verwenden.

Abrufen des Hauptschlüssels

Sie können den Hauptschlüssel entweder über das Azure-Portal oder über die Azure CLI abrufen.

Achtung

Aufgrund der erhöhten Berechtigungen, die der Hauptschlüssel in Ihrer Funktions-App gewährt, sollten Sie diesen Schlüssel nicht für Dritte freigeben oder in einer Anwendung verteilen. Der Schlüssel darf nur an einen HTTPS-Endpunkt gesendet werden.

  1. Navigieren Sie im Azure-Portal zu Ihrer Funktions-App, und wählen Sie App-Schlüssel und dann den Schlüssel _master aus.

    Suchen nach dem Hauptschlüssel, der kopiert werden soll.

  2. Kopieren Sie im Abschnitt Schlüssel bearbeiten den Schlüsselwert in die Zwischenablage, und wählen Sie dann OK aus.

    Kopieren des Hauptschlüssels in die Zwischenablage.

Aufrufen der Funktion

  1. Navigieren Sie im Azure-Portal zu Ihrer Funktions-App, und wählen Sie Ihre Funktion aus.

  2. Wählen Sie Code + Test und dann Protokolle aus. Hier werden Meldungen zur Funktion protokolliert, wenn Sie die Funktion manuell über Ihr HTTP-Testtool ausführen.

    Screenshot: Seite „Programmieren und testen“ mit einer Meldung aus den angezeigten Protokollen

  3. Verwenden Sie in Ihrem HTTP-Testtool den Anforderungsspeicherort, den Sie als Anforderungs-URL definiert haben, stellen Sie sicher, dass die HTTP-Anforderungsmethode POST ist, und schließen Sie diese beiden Anforderungsheader ein:

    Schlüssel Wert
    x-functions-key Der aus der Zwischenablage eingefügte Hauptschlüsselwert.
    Content-Type application/json
  4. Stellen Sie sicher, dass die POST-Anforderungsnutzlast/der Textkörper { "input": "<TRIGGER_INPUT>" } ist. Der spezifische <TRIGGER_INPUT>, den Sie bereitstellen, hängt vom Triggertyp ab, kann jedoch nur eine Zeichenfolge, ein numerischer oder boolescher Wert sein. Bei Diensten, die JSON-Payloads verwenden, wie z.B. Azure Service Bus, sollte der Test-JSON-Payload mit Escape versehen und als String serialisiert werden.

    Wenn Sie keine Eingabedaten an die Funktion übergeben möchten, müssen Sie weiterhin ein leeres Wörterbuch {} als Textkörper der POST-Anforderung angeben. Weitere Informationen finden Sie im Referenzartikel für den spezifischen Nicht-HTTP-Trigger.

  5. Versenden Sie die HTTP POST-Anforderung. Die Antwort sollte eine HTTP 202-Antwort (Akzeptiert) sein.

  6. Kehren Sie anschließend zu Ihrer Funktion im Azure-Portal zurück. Überprüfen Sie die Protokolle. In ihnen werden Meldungen aus dem manuellen Aufruf der Funktion angezeigt.

    Anzeigen der Protokolle, um die Testergebnisse für den Hauptschlüssel anzuzeigen.

Die Art und Weise, wie Sie auf an den Trigger gesendete Daten zugreifen, hängt vom Triggertyp und der Funktionssprache ab. Weitere Informationen finden Sie bei den Referenzbeispielen für Ihren spezifischen Trigger.

Nächste Schritte