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.

Im folgenden Beispiel wird Postman verwendet. Sie können zum Senden von HTTP-Anforderungen aber auch cURL, Fiddler oder ein anderes Tool nutzen.

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.

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.

Define the request location: host name + folder path + function name

  • 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.

    Locate the master key to copy.

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

    Copy the master key to the clipboard.

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 Postman ausführen.

    Screenshot that shows the 'Code + Test' page with a message from the logs displayed.

  3. Öffnen Sie Postman (oder ein entsprechendes HTTP-Erstellungstool), und geben Sie den Anforderungsspeicherort in das URL-Textfeld ein.

  4. Stellen Sie sicher, dass die HTTP-Methode auf POSTfestgelegt ist, wählen Sie den Tab Header aus, und fügen Sie diese beiden Headerschlüssel-Wert-Paare hinzu:

    Schlüssel Wert
    x-functions-key Der aus der Zwischenablage eingefügte Hauptschlüsselwert.
    Content-Type application/json

    Postman headers settings.

  5. Wählen Sie den TabTextkörper aus, und geben Sie { "input": "<TRIGGER_INPUT>" } als Textkörper für die Anforderung ein.

    Postman body settings.

    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.

  6. Wählen Sie Send (Senden) aus.

    Send a request with Postman.

    Postman meldet anschließend den Status 202 – Akzeptiert.

  7. 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.

    View the logs to see the master key test results.

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