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 Ereignissen ausgeführt werden.

Das in diesem Artikel beschriebene Verfahren entspricht der Verwendung der Test/Run-Funktion der Code + Test-Registerkarte im Azure-Portal. Sie können auch Visual Studio Code verwenden, um Funktionen manual auszuführen.

Voraussetzungen

In den Beispielen in diesem Artikel wird ein HTTP-Testtool verwendet. Stellen Sie sicher, dass Sie ein Tool auswählen, das Ihre Daten schützt. Weitere Informationen finden Sie unter HTTP-Testtools.

Festlegen des Anforderungsorts

Zum Ausführen einer nicht HTTP ausgelösten Funktion benötigen Sie eine Möglichkeit, eine Anforderung an Azure zum Ausführen der Funktion zu senden. Die zum Senden dieser Anforderung verwendete URL hat ein bestimmtes Format.

Definieren des Anforderungsspeicherorts: Hostname + Ordnerpfad + Funktionsname

  • Hostname: Die öffentliche Position der Funktions-App, die aus dem Namen der Funktions-App besteht, plus azurewebsites.net oder Ihrer benutzerdefinierten Domäne. Wenn Sie mit Bereitstellungs-Slots arbeiten, die für das Staging verwendet werden, ist der Hostnameteil der Produktionshostname mit -<slotname> angefügt. In dem vorherigen Beispiel wäre die URL myfunctiondemos-staging.azurewebsites.net 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/functionssenden. 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 Anfragen an Administratorendpunkte in Ihrer Funktionsanwendung:

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

Hauptschlüssel abrufen

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

Achtung

Aufgrund der erhöhten Berechtigungen in Ihrer Funktions-App, die vom Hauptschlüssel gewährt wird, 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 portal Azure zu Ihrer Funktions-App, wählen Sie App Keys und dann den schlüssel _master aus.

    Lokalisieren Sie den Hauptschlüssel zum Kopieren.

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

    Kopieren Sie den Masterschlüssel 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 der Seite

  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 der POST-Anforderungsinhalt/die Nutzdaten { "input": "<TRIGGER_INPUT>" } sind. Die spezifische <TRIGGER_INPUT> Angabe hängt vom Typ des Triggers ab, kann jedoch nur eine Zeichenfolge, ein numerischer oder boolescher Wert sein. Für Dienste, die JSON-Nutzlasten verwenden, wie z. B. Azure Service Bus, sollte die JSON-Testnutzlast als Zeichenfolge maskiert und 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 als Nächstes im Azure-Portal zu Ihrer Funktion zurück. Überprüfen Sie die Protokolle. In ihnen werden Meldungen aus dem manuellen Aufruf der Funktion angezeigt.

    Zeigen Sie die Protokolle an, um die Hauptschlüsseltestergebnisse 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 in den Referenzbeispielen für Ihren spezifischen Trigger.

Nächste Schritte