Freigeben über


Erstellen von Workflows, die Sie mithilfe von HTTPS-Endpunkten in Azure Logic Apps aufrufen, auslösen oder schachteln können

Gilt für: Azure Logic Apps (Verbrauch + Standard)

Einige Szenarien erfordern möglicherweise, dass Sie einen Logik-App-Workflow, der eingehende Anforderungen von anderen Diensten oder Workflows empfangen kann, oder einen Workflow erstellen, den Sie mithilfe einer URL aufrufen können. Für diese Aufgabe können Sie einen nativen synchronen HTTPS-Endpunkt in Ihrem Workflow verfügbar machen, wenn Sie einen der folgenden anforderungsbasierten Triggertypen verwenden:

In diesem Leitfaden wird gezeigt, wie Sie einen aufrufbaren Endpunkt für Ihren Workflow erstellen, indem Sie den Anforderungstrigger hinzufügen, und diesen Endpunkt dann aus einem anderen Workflow aufrufen. Alle Prinzipien gelten genauso für die anderen anforderungsbasierten Triggertypen, die eingehende Anforderungen empfangen können.

Voraussetzungen

  • Ein Azure-Konto und ein Azure-Abonnement. Falls Sie kein Abonnement besitzen, können Sie sich für ein kostenloses Azure-Konto registrieren.

  • Ein Logik-App-Workflow, in dem Sie den Trigger Anforderung zum Erstellen des aufrufbaren Endpunkts verwenden möchten. Sie können mit einem leeren Workflow beginnen oder einen vorhandenen Workflow verwenden, in dem Sie den aktuellen Trigger ersetzen. Dieses Beispiel beginnt mit einem leeren Workflow.

  • Installieren oder verwenden Sie ein Tool, das HTTP-Anforderungen senden kann, um Ihre Lösung zu testen, zum Beispiel:

    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.

Erstellen eines aufrufbaren Endpunkts

Je nachdem, ob Sie über einen Standard- oder Verbrauchsworkflow für Logik-Apps verfügen, führen Sie die entsprechenden Schritte aus:

  1. Öffnen Sie im Azure-Portal Ihre Standard-Logik-App und einen leeren Workflow im Designer.

  2. Führen Sie diese allgemeinen Schritte aus, um den Anforderungstrigger namens Beim Empfang einer HTTP-Anforderung hinzuzufügen.

  3. Optional können Sie im Feld JSON-Schema für Anforderungstext ein JSON-Schema eingeben, das die Nutzlast bzw. Daten beschreibt, die der Trigger empfangen soll.

    Der Designer verwendet dieses Schema, um Token zu generieren, die Triggerausgaben darstellen. Dann können Sie im gesamten Workflow Ihrer Logik-App ganz einfach auf diese Ausgaben verweisen. Informieren Sie sich über Token, die aus JSON-Schemas generiert werden.

    Geben Sie für dieses Beispiel das folgende Schema an:

    {
       "type": "object",
       "properties": {
          "address": {
             "type": "object",
             "properties": {
                "streetNumber": {
                   "type": "string"
                },
                "streetName": {
                   "type": "string"
                },
                "town": {
                   "type": "string"
                },
                "postalCode": {
                   "type": "string"
                }
             }
          }
       }
    }
    

    Screenshot des Standardworkflows mit Anforderungsauslöser und Anforderungstext-JSON-Schemaparameter mit Beispielschema.

    Alternativ dazu können Sie ein JSON-Schema auch durch Bereitstellen einer Beispielnutzlast generieren:

    1. Wählen Sie im Anforderungstrigger die Option Beispielnutzlast zum Generieren eines Schemas verwenden aus.

    2. Geben Sie im Feld Geben oder fügen Sie eine JSON-Beispielnutzlast ein Ihre Beispielnutzlast ein, beispielsweise:

      {
         "address": {
            "streetNumber": "00000",
            "streetName": "AnyStreet",
            "town": "AnyTown",
            "postalCode": "11111-1111"
        }
      }
      
    3. Wählen Sie abschließend Fertig aus.

      Im Feld JSON-Schema für Anforderungstext wird jetzt das generierte Schema angezeigt.

  4. Speichern Sie den Workflow.

    Im Feld HTTP POST URL wird die generierte Rückruf-URL angezeigt, mit der andere Dienste Ihren Logik-App-Workflow aufrufen und auslösen können. Diese URL enthält Abfrageparameter, die einen Shared Access Signature-Schlüssel (SAS) angeben, der für die Authentifizierung verwendet wird.

    Screenshot: Standardworkflow, Anforderungstrigger und generierte Rückruf-URL für Endpunkt.

  5. Zum Kopieren der Rückruf-URL haben Sie folgende Optionen:

    • Wählen Sie rechts neben dem Feld HTTP-POST-URL die Option URL kopieren (Symbol „Dateien kopieren“) aus.

    • Kopieren Sie die Rückruf-URL auf der Seite Übersicht Ihres Workflows.

      1. Wählen Sie die Option Übersicht im Menü Ihres Workflows aus.

      2. Zeigen Sie auf der Seite Übersicht unter Workflow-URL mit dem Mauszeiger auf die URL, und wählen Sie In Zwischenablage kopieren aus:

        Screenshot der Seite

  6. Um die Rückruf-URL zu testen und den Workflow auszulösen, senden Sie eine HTTP-Anforderung an die URL, einschließlich der Methode, die der Trigger Anforderung erwartet, indem Sie Ihr HTTP-Anforderungstool und dessen Anweisungen verwenden.

    In diesem Beispiel wird die POST-Methode mit der kopierten URL verwendet, die wie im folgenden Beispiel aussieht:

    POST https://{logic-app-name}.azurewebsites.net:443/api/{workflow-name}/triggers/{trigger-name}/invoke?api-version=2022-05-01&sp=%2Ftriggers%2F{trigger-name}%2Frun&sv=1.0&sig={shared-access-signature}

Auswählen der erwarteten Anforderungsmethode

Standardmäßig erwartet der Trigger Anforderung eine POST-Anforderung. Sie können jedoch eine andere Methode angeben, die vom Aufrufer verwendet werden muss (aber nur eine einzige).

  1. Öffnen Sie im Trigger Anforderung die Liste Erweiterte Parameter, und wählen Sie Methode aus. Dadurch wird diese Eigenschaft zum Trigger hinzugefügt.

  2. Wählen Sie aus der Liste Methode die Methode aus, die der Trigger stattdessen erwarten sollte. Alternativ dazu können Sie auch eine benutzerdefinierte Methode angeben.

    Wählen Sie beispielsweise die Methode GET aus, damit Sie die Endpunkt-URL später testen können.

Übergeben von Parametern über die Endpunkt-URL

Wenn Sie Parameterwerte über die URL des Endpunkts annehmen möchten, haben Sie folgende Optionen:

  • Akzeptieren Sie Werte durch GET-Parameter oder URL-Parameter.

    Diese Werte werden als Name-Wert-Paare an die Endpunkt-URL übergeben. Für diese Option müssen Sie die GET-Methode in Ihrem Trigger Anforderung verwenden. In einer nachfolgenden Aktion können Sie die Parameterwerte als Triggerausgaben abrufen, indem Sie die triggerOutputs()-Funktion in einem Ausdruck verwenden.

  • Akzeptieren Sie Werte über einen relativen Pfad für Parameter in Ihrem Trigger Anforderung.

    Diese Werte werden über einen relativen Pfad in der Endpunkt-URL übergeben. Sie müssen zudem die Methode explizit auswählen, die Ihr Trigger erwartet. In einer nachfolgenden Aktion können Sie die Parameterwerte als Triggerausgaben abrufen, indem direkt auf diese Ausgaben verweisen.

Akzeptieren von Werten durch GET-Parameter

  1. Öffnen Sie im Trigger Anforderung die Liste Erweiterte Parameter, fügen Sie dem Trigger die Eigenschaft Methode hinzu, wählen Sie die Methode GET aus.

    Weitere Informationen finden Sie unter Auswählen der erwarteten Anforderungsmethode.

  2. Führen Sie im Designer die folgenden allgemeinen Schritte aus, um die Aktion hinzuzufügen, in der Sie den Parameterwert verwenden möchten.

    Wählen Sie in diesem Beispiel die Aktion mit dem Namen Antwort aus.

  3. Führen Sie die folgenden Schritte aus, um den triggerOutputs()-Ausdruck zu erstellen, der den Parameterwert abruft:

    1. Klicken Sie in der Antwortaktion in die Eigenschaft Body, damit die Optionen für dynamische Inhalte (Blitzsymbol) und den Ausdrucks-Editor (Formelsymbol) angezeigt werden. Wählen Sie das Formelsymbol aus, um den Ausdrucks-Editor zu öffnen.

    2. Geben Sie in das Feld „Ausdruck“ den folgenden Ausdruck ein, ersetzen Sie dabei parameter-name durch den Parameternamen, und wählen Sie OK aus.

      triggerOutputs()['queries']['parameter-name']

      Screenshot: Standardworkflow, Gegenmaßnahme und TriggerOutputs()-Ausdruck.

      In der Eigenschaft Body wird der Ausdruck in das triggerOutputs()-Token aufgelöst.

      Screenshot zeigt den Standardworkflow mit dem aufgelösten TriggerOutputs()-Ausdruck der Gegenmaßnahme.

      Wenn Sie den Workflow speichern, vom Designer weg und wieder zurück zum Designer navigieren, zeigt das Token den von Ihnen angegebenen Parameternamen an, z. B.:

      Screenshot des Standardworkflows mit aufgelösten Gegenmaßnahmenausdruck für den Parameternamen.

      In der Codeansicht wird die Eigenschaft Body in der Definition der Aktion „Antwort“ wie folgt angezeigt:

      "body": "@{triggerOutputs()['queries']['parameter-name']}",

      Nehmen Sie beispielsweise an, dass Sie einen Wert für einen Parameter mit dem Namen postalCode übergeben möchten. Die Eigenschaft Body gibt die Zeichenfolge Postal Code: mit einem nachfolgenden Leerzeichen an, gefolgt vom entsprechenden Ausdruck:

      Screenshot des Standardworkflows mit Gegenmaßnahme und Beispielausdruck

Testen des aufrufbaren Endpunkts

  1. Kopieren Sie im Trigger Anforderung die Workflow-URL, und fügen Sie die URL in ein anderes Browserfenster ein. Fügen Sie in der URL den Parameternamen und -wert im folgenden Format hinzu, und drücken Sie die EINGABETASTE.

    ...invoke/{parameter-name}/{parameter-value}?api-version=2022-05-01...

    Beispiel:

    https://mystandardlogicapp.azurewebsites.net/api/Stateful-Workflow/triggers/When_a_HTTP_request_is_received/invoke/address/12345?api-version=2022-05-01&sp=%2Ftriggers%2FWhen_a_HTTP_request_is_received%2Frun&sv=1.0&sig={shared-access-signature}

    Der Browser gibt eine Antwort mit dem folgenden Text zurück: Postal Code: 123456.

    Der Screenshot zeigt einen Browser mit Standard-Workflow-Antwort von der Anforderung bis zur Rückruf-URL.

Hinweis

Wenn Sie das Hash- oder Nummernzeichen ( # ) im URI verwenden möchten, nutzen Sie stattdessen diese codierte Version: %25%23.

Akzeptieren von Werten durch einen relativen Pfad

  1. Öffnen Sie im Trigger Anforderung die Liste Erweiterte Parameter, und wählen Sie Relativer Pfad aus. Dadurch wird diese Eigenschaft zum Trigger hinzugefügt.

    Screenshot: Standardworkflow, Anforderungstrigger und hinzugefügte Eigenschaft mit dem Namen

  2. Geben Sie in der Eigenschaft Relativer Pfad den relativen Pfad für den Parameter in Ihrem JSON-Schema an, der von Ihrer URL akzeptiert werden soll. Beispiel: /address/{postalCode}.

    Screenshot zeigt den Parameterwert

  3. Führen Sie im Trigger Anforderung die folgenden allgemeinen Schritte aus, um die Aktion hinzuzufügen, in der Sie den Parameterwert verwenden möchten.

    Fügen Sie für dieses Beispiel die Aktion Antwort hinzu.

  4. Schließen Sie in die Eigenschaft Text der Antwortaktion das Token für den Parameter ein, den Sie im relativen Pfad des Triggers angegeben haben.

    Nehmen Sie beispielsweise an, dass die Antwortaktion Postal Code: {postalCode} zurückgeben soll.

    1. Geben Sie in der Eigenschaft Text die Zeichenfolge Postal Code: mit einem nachfolgenden Leerzeichen ein. Lassen Sie Ihren Cursor im Bearbeitungsfeld, damit die dynamische Inhaltsliste geöffnet bleibt.

    2. Wählen Sie in der dynamischen Inhaltsliste im Abschnitt Beim Empfang einer HTTP-Anforderung die Triggerausgabe Path Parameters postalCode aus.

      Screenshot: Standardworkflow, Gegenmaßnahme und angegebene Triggerausgabe, die im Antworttext enthalten sein soll.

      Die Eigenschaft Text enthält jetzt den ausgewählten Parameter.

      Screenshot: Standardworkflow und Beispielantworttext mit Parameter.

  5. Speichern Sie den Workflow.

    Im Trigger Anforderung wird die Rückruf-URL aktualisiert und enthält nun den relativen Pfad, z. B.:

    https://mystandardlogicapp.azurewebsites.net/api/Stateful-Workflow/triggers/When_a_HTTP_request_is_received/invoke/address/%7BpostalCode%7D?api-version=2022-05-01&sp=%2Ftriggers%2FWhen_a_HTTP_request_is_received%2Frun&sv=1.0&sig={shared-access-signature}

  6. Um Ihren aufrufbaren Endpunkt zu testen, kopieren Sie die aktualisierte Rückruf-URL aus dem Trigger Anforderung, fügen Sie die URL in ein anderes Browserfenster ein, ersetzen Sie %7BpostalCode%7D in der URL durch 123456, und drücken Sie die EINGABETASTE.

    Der Browser gibt eine Antwort mit dem folgenden Text zurück: Postal Code: 123456.

    Der Screenshot zeigt einen Browser mit Standard-Workflow-Antwort von der Anforderung bis zur Rückruf-URL.

Hinweis

Wenn Sie das Hash- oder Nummernzeichen ( # ) im URI verwenden möchten, nutzen Sie stattdessen diese codierte Version: %25%23.

Aufrufen des Workflows über eine Endpunkt-URL

Nach dem Erstellen des Endpunkts können Sie den Workflow auslösen, indem Sie eine HTTPS-Anforderung an die vollständige URL des Endpunkts senden. Azure Logic Apps-Workflows bieten integrierte Unterstützung für Endpunkte mit Direktzugriff.

Aus dem Schema generierte Token

Wenn Sie in Ihrem Trigger Anforderung ein JSON-Schema angeben, generiert der Workflow-Designer Token für die Eigenschaften in diesem Schema. Diese Token können Sie dann zur Weitergabe von Daten über Ihren Workflow verwenden.

Wenn Sie Ihrem JSON-Schema beispielsweise weitere Eigenschaften wie "suite" hinzufügen, stehen Ihnen in den späteren Schritten für Ihren Workflow Token für diese Eigenschaften zur Verfügung. So sieht das vollständige JSON-Schema aus:

{
   "type": "object",
   "properties": {
      "address": {
         "type": "object",
         "properties": {
            "streetNumber": {
               "type": "string"
            },
            "streetName": {
               "type": "string"
            },
            "suite": {
               "type": "string"
            },
            "town": {
               "type": "string"
            },
            "postalCode": {
               "type": "string"
            }
         }
      }
   }
}

Aufrufen anderer Workflows

Sie können andere Workflows aufrufen, die Anforderungen empfangen können, indem Sie sie innerhalb des aktuellen Workflows schachteln. Führen Sie die folgenden Schritte aus, um diese Workflows aufzurufen:

  1. Führen Sie im Designer diese allgemeinen Schritte aus, um die Aktion Workflowvorgänge mit dem Namen Workflow in dieser Workflow-App aufrufen hinzuzufügen.

    In der Liste Workflowname werden die geeigneten Workflows angezeigt, die Sie auswählen können.

  2. Wählen Sie in der Liste Workflowname den Workflow aus, den Sie aufrufen möchten, z. B.:

    Screenshot: Standardworkflow, Aktion mit dem Namen

Verweisen auf Inhalte über eine eingehende Anforderung

Wenn der Inhaltstyp der eingehenden Anforderung application/json lautet, können Sie auf die Eigenschaften in der eingehenden Anforderung verweisen. Andernfalls wird dieser Inhalt als einzelne binäre Einheit behandelt, die Sie an andere APIs übergeben können. Um innerhalb des Workflows Ihrer Logik-App auf diesen Inhalt zu verweisen, müssen Sie den Inhalt zuerst konvertieren.

Wenn Sie beispielsweise Inhalt vom Typ application/xml übergeben, können Sie mit dem @xpath()-Ausdruck eine XPath-Extrahierung durchführen oder mit dem @json()-Ausdruck XML in JSON konvertieren. Informieren Sie sich über das Arbeiten mit unterstützten Inhaltstypen.

Um die Ausgabe aus einer eingehenden Anforderung abzurufen, können Sie den @triggerOutputs-Ausdruck verwenden. Nehmen Sie einmal an, Ihre Ausgabe sieht wie im folgenden Beispiel aus:

{
   "headers": {
      "content-type" : "application/json"
   },
   "body": {
      "myProperty" : "property value"
   }
}

Um speziell auf die Eigenschaft body zuzugreifen, können Sie den @triggerBody()-Ausdruck als Verknüpfung verwenden.

Reagieren auf Anforderungen

Auf bestimmte Anforderungen, die Ihren Workflow auslösen, möchten Sie möglicherweise mit Rückgabe von Inhalten an den Aufrufer reagieren. Um Statuscode, Header und Text für die Antwort zu erstellen, können Sie die Antwortaktion verwenden. Diese Aktion kann an einer beliebigen Stelle im Workflow auftreten, nicht nur am Ende des Workflows. Wenn der Workflow keine Antwortaktion enthält, antwortet der Endpunkt sofort mit dem Status 202 – akzeptiert.

Damit der ursprüngliche Aufrufer die Antwort erhält, müssen alle erforderlichen Schritte für die Antwort innerhalb des Timeoutlimits der Anforderung beendet sein, es sei denn, der ausgelöste Workflow wurde als geschachtelter Workflow aufgerufen. Wenn innerhalb dieses Limits keine Antwort erfolgt, kommt es bei der eingehenden Anforderung zu einem Timeout mit der Antwort 408 – Clienttimeout.

Bei geschachtelten Workflows wartet der übergeordnete Workflow so lange auf eine Antwort, bis alle Schritte abgeschlossen sind, unabhängig davon, wie lange dies dauert.

Erstellen der Antwort

Sie können mehrere Header und jeden Inhaltstyp in den Antworttext einbeziehen. Der Header der folgenden Antwort gibt beispielsweise an, dass der Inhaltstyp der Antwort application/json lautet und dass der Text Werte für die Eigenschaften town und postalCode enthält, basierend auf dem weiter oben in diesem Thema beschriebenen JSON-Schema für den Trigger Anforderung.

Screenshot: Gegenmaßnahme und Antwortinhaltstyp.

Antworten haben folgende Eigenschaften:

Eigenschaft (Anzeige) Eigenschaft (JSON) BESCHREIBUNG
Statuscode statusCode Der HTTPS-Statuscode, der in der Antwort auf die eingehende Anforderung verwendet werden soll. Dieser Code kann jeder gültige Statuscode sein, der mit 2xx, 4xx oder 5xx beginnt. Mit 3xx beginnende Statuscodes sind jedoch nicht zulässig.
Headers headers Mindestens ein Header, der in die Antwort eingefügt werden soll.
Text body Ein Textobjekt, das eine Zeichenfolge, ein JSON-Objekt oder sogar binäre Inhalte enthalten kann und auf das in einem vorherigen Schritt verwiesen wird.

Um die JSON-Definition der Antwortaktion und die vollständige JSON-Definition des Workflows anzuzeigen, wechseln Sie von der Designeransicht zur Codeansicht.

"Response": {
   "type": "Response",
   "kind": "http",
   "inputs": {
      "body": {
         "postalCode": "@triggerBody()?['address']?['postalCode']",
         "town": "@triggerBody()?['address']?['town']"
      },
      "headers": {
         "content-type": "application/json"
      },
      "statusCode": 200
   },
   "runAfter": {}
}

Q&A

F: Was ist mit der URL-Sicherheit für eingehende Aufrufe?

A: Azure generiert über eine Shared Access Signature (SAS) auf sichere Weise Rückruf-URLs für Logik-Apps. Diese Signatur wird als Abfrageparameter übergeben und muss überprüft werden, bevor der Workflow ausgeführt werden kann. Azure generiert die Signatur durch eine eindeutige Kombination aus einem geheimen Schlüssel pro Logik-App, dem Namen des Triggers und dem ausgeführten Vorgang. Nur wenn eine Person Zugriff auf den geheimen Logik-App-Schlüssel hat, kann sie eine gültige Signatur generieren.

Wichtig

Bei Produktionssystemen und Systemen mit höherer Sicherheit wird dringend davon abgeraten, den Workflow direkt aus dem Browser aufzurufen. Das hat folgende Gründe:

  • Der Schlüssel für den gemeinsamen Zugriff ist in der URL enthalten.
  • Sie können keine Richtlinien für sichere Inhalte verwalten, da Domänen von Azure Logic Apps-Benutzern gemeinsam verwendet werden.

Informationen zu Sicherheit, Autorisierung und Verschlüsselung für eingehende Aufrufe an Ihren Workflow (z. B. Transport Layer Security (TLS), früher bekannt als Secure Sockets Layer (SSL)), Microsoft Entra ID Open Authentication (Microsoft Entra ID OAuth), Offenlegung Ihres Logik-App-Workflow mit Azure API Management oder zum Einschränken der IP-Adressen, von denen eingehende Aufrufe ausgehen, finden Sie unter Sicherer Zugriff und Daten: Zugriff für eingehende Aufrufe anforderungsbasierter Trigger.

F: Kann ich aufrufbare Endpunkte noch weiter konfigurieren?

A: Ja, HTTPS-Endpunkte unterstützen eine erweiterte Konfiguration über Azure API Management. Dieser Dienst ermöglicht Ihnen auch die konsistente Verwaltung aller APIs einschließlich der Logik-Apps, das Einrichten benutzerdefinierter Domänennamen, Verwenden weiterer Authentifizierungsmethoden und vieles mehr, z.B.:

Nächste Schritte