Skip to main content

HTTP-Aufgabe erstellen

Während der Ausführung Ihres Plans können Sie eine Aufgabe erstellen, um HTTP-Anfragen an einen Anwendungsendpunkt eines Drittanbieters zu senden. Beispiel: Wenn eine vorherige Aufgabe erfolgreich ausgeführt wird, können Sie eine HTTP-Nachricht mit Informationen aus dieser Aufgabe an einen angegebenen Endpunkt senden.

  • Eine HTTP-Aufgabe ist eine Anfrage zwischen Alteryx Analytics Cloud (AAC) und einer anderen Anwendung. Diese Anfragen werden über HTTP zugestellt und können von der empfangenden Anwendung interpretiert werden, um Maßnahmen zu ergreifen.

    Anmerkung

    Die empfangende Anwendung erfordert möglicherweise, dass Sie den Host und die Portnummer oder die IP-Adresse der Plattform auf die Whitelist setzen. Weitere Informationen finden Sie in der Dokumentation Ihrer Anwendung.

  • Eine HTTP-Aufgabe ist einer der in einem Plan verfügbaren Aufgabentypen. Weitere Informationen finden Sie auf der Seite „Planansicht“ .

Einschränkungen

  • Benutzerdefinierte Sicherheitszertifikate können nicht verwendet werden.

  • HTTP-basierte Anfragen haben ein Timeout-Limit von 30 Sekunden.

Voraussetzungen

Voraussetzungen der empfangenden Anwendung

Um eine HTTP-Anfrage an eine Zielanwendung zu senden, muss die Anwendung so konfiguriert sein, dass sie die Anfrage empfängt:

  • Anfragen von außerhalb der Anwendungsdomain müssen aktiviert sein.

    Anmerkung

    Die empfangende Anwendung erfordert möglicherweise, dass Sie den Host und die Portnummer oder die IP-Adresse der Plattform auf die Whitelist setzen. Weitere Informationen finden Sie in der Dokumentation Ihrer Anwendung.

  • Sie müssen die URL des Endpunkts anfordern, an den die HTTP-Anfrage gesendet werden soll.

  • Sie müssen HTTP-Header anfordern, die bei jeder HTTP-Anfrage eingefügt werden müssen.

  • Wenn die Anfrage signiert werden muss, ist eine zusätzliche Konfiguration erforderlich. Details finden Sie unten.

Aufgabe erstellen

  1. Ziehen Sie die HTTP-Aufgabe per Drag & Drop aus dem linken Bereich zum Plan-Canvas.

  2. Wählen Sie im rechten Fensterbereich HTTP-Aufgabe aus. Das HTTP-Aufgabenfenster wird angezeigt.

PlanViewPage-ViewForHTTPTask.png

Abbildung: HTTP-Aufgabe

Aufgabe konfigurieren

  1. Legen Sie die benötigten Parameter fest. Weitere Informationen zu Parametern finden Sie unter Planansicht für HTTP-Aufgaben .

  2. Sie können Informationen zu Planmetadaten in den Header-Werten und im Anfragetext angeben. Weitere Informationen finden Sie unter Referenzen zu Planmetadaten .

  3. Um die Verbindung zu testen, klicken Sie auf Test . Eine Erfolgsmeldung wird angezeigt.

    Tipp

    Der Statuscode 200 gibt an, dass der Test erfolgreich war.

    Tipp

    Sie können die GET-Methode für Testzwecke verwenden. Eine GET-Anfrage ändert keine Daten auf der Zielplattform, kann jedoch zulassen, dass Sie Elemente im Anfragetext angeben.

  4. Um die Aufgabe hinzuzufügen, klicken Sie auf Speichern .

Aufgabe umbenennen

Um die Aufgabe umzubenennen, klicken Sie im Menü auf Mehr > Bearbeiten im rechten Fensterbereich.

Tipp

Eine gute Benennung kann den Endpunkt und die Methode der Zielplattform sowie die Zwecke der Aufgabe in Ihrem Plan umfassen.

Aufgabe löschen

Um die Aufgabe zu löschen, klicken Sie im Menü auf Mehr > Löschen . Bestätigen Sie, dass Sie die Aufgabe löschen möchten.

Warnung

Dieser Schritt kann nicht rückgängig gemacht werden.

Referenzen zu Planmetadaten

In der Nachricht Ihrer anderen Aufgaben können Sie sich auf Metadaten zum Plan, zu seinen Aufgaben und seiner Ausführung beziehen. Weitere Informationen finden Sie unter Referenzen zu Planmetadaten .

Beispiele

Nachricht an Slack-Kanal

Tipp

Slack-Aufgaben sind jetzt eine unterstützte Produktfunktion. Weitere Informationen finden Sie unter Slack-Aufgabe erstellen .

Sie können eine HTTP-Aufgabe erstellen, um eine Textnachricht an einen Slack-Kanal Ihrer Wahl zu senden.

Voraussetzungen

Richten Sie Ihre Slack-Installation so ein, dass HTTP-Nachrichten empfangen werden:

  1. Erstellen Sie bei Bedarf einen Slack-Kanal, um Ihre Nachrichten zu empfangen.

  2. Erstellen Sie eine App.

  3. Aktivieren Sie eingehende HTTP-Nachrichten für Ihre App.

  4. Geben Sie den Kanal für den Empfang der eingehenden Nachrichten an.

  5. Kopieren Sie die URL für die eingehende HTTP-Anfrage aus der cURL-Anweisung.

HTTP-Aufgabe definieren

Parameter

Beschreibung

Name

Dieser Name erscheint nur in AAC.

Methode

Wählen Sie die POST- Methode aus.

URL

Fügen Sie die URL ein, die Sie aus Slack kopiert haben.

Überschriften

Kopieren Sie die Inhalts-Header aus dem Slack-cURL-Befehl:

key: Content-Type
value: application/json

Text

{"text":"Your job has completed."}
Konto
  1. Klicken Sie auf Test , um zu überprüfen, dass diese Aufgabe funktioniert.

  2. Führen Sie einen Auftrag aus und prüfen Sie den Slack-Kanal auf eine Nachricht.

Beispiele für Planmetadaten

Sie können auf Metadaten-Informationen aus der Plandefinition und der aktuellen Planausführung als Teil der Anfrage der HTTP-Aufgabe Bezug nehmen.

Anmerkungen:

  • Sie können nur Metadatenreferenzen für Aufgaben einfügen, die bereits in der Planausführung vor Beginn der HTTP-Aufgabe aufgetreten sind.

  • Jede Aufgabe in der aktuellen Ausführung wird mit einem zweistelligen Code referenziert. Beispiel:

    {{$http_xx.name}}
    
Syntax

Eine Referenz zu Planmetadaten wird mit der folgenden Syntax erstellt. Geben Sie in das entsprechende Textfeld einen der folgenden Werte ein:

Tipp

Geben Sie zunächst $ ein, um Zugriff auf eine Menüstruktur mit Metadatenreferenzen für jeden Metadatenreferenztyp zu erhalten. Die endgültige Syntax ist oben notiert.

Pläne:

Metadateninformationen aus der Plandefinition oder der aktuellen Planausführung:

{{$plan
Planinformationen

Der folgende Anfragetext enthält Verweise auf den Plannamen, die Planausführungskennung und den soeben ausgeführten Flow:

{"text":"Plan: {{$plan.name}} 
RunId: {{$plan.runId}}
Flow: {{$flow_7p.name}}
Success."}
Informationen zur Planausführung

Der folgende Anfragetext enthält Informationen zur Planausführung mit Zeitstempeln:

{"text":"Plan: {{$plan.name}} 
RunId: {{$plan.runId}}
- plan start: {{$plan.startTime}}
Running time: {{$plan.duration}}

Times:
- last task start: {{$flow_7p.startTime}}
- last task end: {{$flow_7p.endTime}}
"}
HTTP-Aufgabeninformationen

Sie können auf Informationen aus einer HTTP-Aufgabe Bezug nehmen, die bereits ausgeführt wurde:

{"text":"{{$http_qg.name}} returned {{$http_qg.statusCode}}."} 

Weitere Informationen finden Sie unter Referenzen zu Planmetadaten .

Metadateneingaben in Cloud-Funktion einspeisen

Dieses Beispiel zeigt, wie Sie eine HTTP-Aufgabe verwenden können, um Planmetadaten an AWS-Lambda-Funktionen zu übermitteln. Ein ähnlicher Ansatz könnte für Google Cloud-Funktionen verwendet werden.

In diesem Fall wird der rowCount -Wert aus der Ausführung der Flow-Aufgabe über eine HTTP-Aufgabe an eine AWS-Lambda-Funktion übermittelt.

Allgemeine Schritte:

  1. Definieren Sie Ihren Plan.

  2. Flow-Aufgabe: Führen Sie den Flow aus, um die für Ihre Lambda-Funktion benötigten Ausgaben zu generieren.

  3. HTTP-Aufgabe: Generiert eine HTTP-Anfrage, deren Text eine Referenz auf die rowCount -Metadatenvariable enthält. Anfragetext:

    {
     "rowCount": "{{$flow_7p['My Flow Name'].output['My output name'].rowCount}}"
    }
  4. AWS-Lambda-Funktionen : Im Folgenden wird ein Pseudo-Code für Lambda angezeigt:

    import json
    def lambda_handler(event, context):
      httpTaskBody = json.loads(event["body"])
      rowCount = httpTaskBody["rowCount"]
    
      return {
        'statusCode': 200,
        'body': json.dumps(rowCount)
      }
  5. Google Cloud-Funktionen : Im Folgenden wird ein Pseudo-Code für Google Cloud-Funktionen angezeigt:

    def get_row_count(request):
      request_json = request.get_json()
      if request_json and 'rowCount' in request_json:
            rowCount = request_json['rowCount']
        return rowCount
      return 'No rowCount attribute provided'

Signaturen überprüfen

Warnung

Je nach Zielanwendung erfordert die Implementierung der Signaturüberprüfung möglicherweise Kenntnisse von Entwickler:innen.

Optional können Sie die Plattform so konfigurieren, dass die HTTP-Anfragen signiert werden. Signierte Anfragen garantieren, dass die Anfragen von der Plattform und nicht von einer Drittpartei gesendet werden.

Im Folgenden können Sie prüfen, wie die Signatur erstellt wird, damit Sie die empfangende Anwendung so konfigurieren können, dass die Signatur und die zugehörige Anfrage ordnungsgemäß verarbeitet werden.

Signatur-Header

HTTP-Anfragen werden signiert, indem der X-Webhook-Signatur -Header in die Anfrage eingefügt wird. Diese Signaturen haben folgende Form:

X-Webhook-Signature: t=<timestamp>,sha256=<signature>

wobei:

  • <timestamp> : Zeitstempel des Sendens der Signatur. Der Wert ist in UNIX-Zeit angegeben.

  • <signature> : SHA256-Signatur. Die Plattform generiert diese Signatur mithilfe eines hashbasierten Message Authentication Code (HMAC) mit SHA-256.

Weitere Informationen zu diesen Werten finden Sie unten.

Beispiel:

X-Webhook-Signature: t=1568818215724,sha256=55fa71b2e391cd3ccba8413fb51ad16984a38edb3cccfe81f381c4b8197ee07a

Anwendungs-Tools prüfen

Je nach Anwendung müssen Sie möglicherweise eine der folgenden Aufgaben ausführen, um die Aufgabensignaturen zu überprüfen:

Anmerkung

Möglicherweise müssen Sie die Plattform in Ihrer Anwendung auf die Whitelist setzen. Weitere Informationen finden Sie in der Dokumentation der Anwendung.

Möglicherweise müssen Sie eine benutzerdefinierte Codierung für Ihre Anwendung erstellen. Im Folgenden finden Sie Einzelheiten dazu, einschließlich eines JavaScript-Beispiels.

Signierte Anfragen verarbeiten

Zeitstempel

Der Zeitstempelwert ( t=<timestamp> ) wird am Anfang des Header-Werts angezeigt, um Replay-Angriffe zu verhindern, bei denen Angreifer:innen eine gültige Nutzlast und deren Signatur abfangen und erneut übertragen könnten.

  • Um solche Angriffe zu vermeiden, ist ein Zeitstempel im Signatur-Header enthalten und auch als Teil der signierten Nutzlast eingebettet.

  • Da der Zeitstempel Teil der signierten Nutzlast ist, können Angreifer:innen den Zeitstempelwert nicht ändern, ohne die Signatur ungültig zu machen.

    • Wenn die Signatur gültig ist, der Zeitstempel jedoch zu alt ist, können Sie die Anfrage ablehnen.

    • Wenn Sie beispielsweise eine Anfrage mit einem Zeitstempel von vor einer Stunde erhalten, sollten Sie die Anfrage wahrscheinlich ablehnen.

  • Weitere Informationen zu Replay-Angriffen finden Sie unter https://de.wikipedia.org/wiki/Replay-Angriff .

Signatur

Die Aufgabensignatur enthält als Teil ihres gehashten Werts Folgendes:

  • Den geheimen Schlüssel (oben eingegeben)

  • Den Zeitstempelwert

  • Anfragedaten:

    • (POST/PUT/PATCH): der Text der Anfrage

    • (GET/DELETE): URL der Anfrage

Schritt 1: Den Zeitstempel und die Signaturen extrahieren

Teilen Sie den X-Webhook-Signatur -Header auf:

  1. Teilen Sie Werte mit einem Komma (,) als Trennzeichen auf.

  2. Teilen Sie jeden Teil mit dem Gleichheitszeichen (=) auf.

  3. Extrahieren Sie die Werte für den Zeitstempel und die Signatur. Aus dem obigen Beispiel:

    1. Zeitstempel: 1568818215724

    2. Signatur: 55fa71b2e391cd3ccba8413fb51ad16984a38edb3cccfe81f381c4b8197ee07a

Schritt 2: Die erwartete Signatur erstellen

In der empfangenden Anwendung können Sie die Signatur neu berechnen, um zu überprüfen, ob die Anfrage von der Plattform gesendet wurde.

  1. Verketten Sie den Zeitstempel, den Punkt . und den Anfragetext (POST-/PUT-/PATCH-Methoden) oder die URL (GET-/DELETE-Methoden).

  2. Nehmen wir an, das obige Beispiel ist die Signatur für eine POST -Anfrage und der Anfragetext ist Test . Dann lautet der verkettete Wert wie folgt:

    1568818215724.test
  3. Sie können jetzt den HMAC-Authentifizierungscode in Ihrer empfangenden Anwendung berechnen. Im folgenden JavaScript-Beispiel lautet der Wert des geheimen Schlüssels mySecret :

    const crypto = require('crypto');
    
    const message = '1568818215724.test'; // as defined above
    
    const hmac = crypto.createHmac('sha256', 'mySecret');
    hmac.update(message)
    const expectedSignature = hmac.digest('hex');
Schritt 3: Die Signaturen vergleichen

Der von Ihrem Code zurückgegebene Wert und der als Signatur im X-Webhook-Signatur -Header enthaltene Wert müssen verglichen werden:

  • Wenn die Werte nicht übereinstimmen, lehnen Sie die Anfrage ab.

  • Wenn die Werte übereinstimmen, berechnen Sie die Differenz zwischen dem aktuellen Zeitstempel und dem Zeitstempel im Header. Wenn die Differenz außerhalb des zulässigen Limits liegt, lehnen Sie die Anfrage ab.

  • Andernfalls verarbeiten Sie die Anfrage normal in Ihrer Anwendung.