Skip to main content

Creazione di attività HTTP

Durante l'esecuzione del piano, puoi creare un'attività per inviare richieste HTTP a un endpoint di applicazioni di terze parti. Ad esempio, quando un'attività precedente viene eseguita correttamente, puoi inviare un messaggio HTTP a un endpoint designato con le informazioni relative a tale attività.

  • Un 'attività HTTP è una richiesta tra Alteryx Analytics Cloud (AAC) e un'altra applicazione. Queste richieste vengono inviate tramite HTTP e possono essere interpretate dall'applicazione ricevente per intraprendere un'azione.

    Nota

    L'applicazione ricevente potrebbe richiedere di inserire nella whitelist l'host e il numero di porta o l'indirizzo IP della piattaforma. Consulta la documentazione relativa all'applicazione.

  • Un'attività HTTP è un tipo di attività disponibile in un piano. Per ulteriori informazioni, consulta la pagina Visualizzazione piano .

Limitazioni

  • Non è possibile utilizzare certificati di sicurezza personalizzati.

  • Le richieste basate su HTTP hanno un limite di timeout di 30 secondi.

Prerequisiti

Requisiti per l'applicazione ricevente

Per inviare una richiesta HTTP a un'applicazione di destinazione, è necessario configurare l'applicazione in modo che riceva la richiesta:

  • Le richieste provenienti dall'esterno del dominio dell'applicazione devono essere abilitate.

    Nota

    L'applicazione ricevente potrebbe richiedere di inserire nella whitelist l'host e il numero di porta o l'indirizzo IP della piattaforma. Consulta la documentazione relativa all'applicazione.

  • È necessario acquisire l'URL dell'endpoint a cui inviare la richiesta HTTP.

  • È necessario acquisire le intestazioni HTTP che devono essere inserite con ogni richiesta HTTP.

  • Se la richiesta deve essere firmata, è necessaria una configurazione aggiuntiva. I dettagli sono riportati di seguito.

Creazione dell'attività

  1. Trascina l'attività HTTP dal riquadro a sinistra nell'area di disegno del piano.

  2. Nel pannello a destra, seleziona Attività HTTP . Viene visualizzato il pannello Attività HTTP.

PlanViewPage-ViewForHTTPTask.png

Figura: Attività HTTP

Configurazione dell'attività

  1. Imposta i parametri richiesti. Per ulteriori informazioni sui parametri, consulta la sezione Visualizzazione piano per le attività HTTP .

  2. Puoi specificare le informazioni sui metadati del piano nei valori dell'intestazione e nel corpo della richiesta. Per ulteriori informazioni, consulta la sezione Riferimenti ai metadati del piano .

  3. Per verificare la connessione, fai clic su Test . Viene visualizzato un messaggio di operazione riuscita.

    Suggerimento

    Un codice di stato 200 indica che il test è stato eseguito correttamente.

    Suggerimento

    Puoi utilizzare il metodo GET per i test. Una richiesta GET non modifica alcun dato sulla piattaforma di destinazione, ma può consentire di specificare elementi nel corpo della richiesta.

  4. Per aggiungere l'operazione, fai clic su Salva .

Rinomina delle attività

Per rinominare l'attività, fai clic sul menu Altro > Modifica nel pannello a destra.

Suggerimento

Una denominazione valida può includere l'endpoint e il metodo della piattaforma di destinazione, nonché gli scopi dell'attività nel piano.

Eliminazione di un'attività

Per eliminare l'attività, fai clic sul menu Altro > Elimina . Conferma di voler eliminare l'attività.

Avvertimento

Questa operazione non può essere annullata.

Riferimenti ai metadati del piano

All'interno del messaggio delle altre attività, puoi fare riferimento ai metadati relativi al piano, alle sue attività e alla loro esecuzione. Per ulteriori informazioni, consulta la sezione Riferimenti ai metadati del piano.

Esempi

Messaggio del canale Slack

Suggerimento

Le attività Slack sono ora una funzionalità supportata del prodotto. Per ulteriori informazioni, consulta la sezione Creazione di un'attività Slack .

Puoi creare un'attività HTTP per inviare un messaggio di testo a un canale Slack a scelta.

Prerequisiti

Imposta l'installazione Slack per ricevere messaggi HTTP:

  1. Se necessario, crea un canale Slack per ricevere i messaggi.

  2. Crea un'app.

  3. Attiva i messaggi HTTP in arrivo per l'app.

  4. Specifica il canale per la ricezione dei messaggi in arrivo.

  5. Copia l'URL per la richiesta HTTP in entrata dall'istruzione cURL.

Definizione dell'attività HTTP

Parametro

Descrizione

Nome

Questo nome viene visualizzato solo in AAC.

Metodo

Seleziona il metodo POST .

Url

Incolla l'URL copiato da Slack.

Intestazioni

Copia le intestazioni del contenuto dal comando cURL di Slack:

key: Content-Type
value: application/json

Corpo

{"text":"Your job has completed."}
Verifica
  1. Fai clic su Test per verificare che l'attività funzioni.

  2. Esegui un lavoro e verifica la presenza di un messaggio nel canale Slack.

Pianificazione degli esempi di metadati

Puoi fare riferimento alle informazioni sui metadati dalla definizione del piano e dall'esecuzione del piano corrente come parte della richiesta dell'attività HTTP.

Note:

  • Puoi inserire solo riferimenti ai metadati per le attività che hanno già avuto luogo nell'esecuzione del piano prima dell'inizio dell'attività HTTP.

  • Per ogni attività nell'esecuzione corrente viene utilizzato come riferimento un codice a due lettere. Esempio:

    {{$http_xx.name}}
    
Sintassi

Per costruire un riferimento ai metadati del piano si utilizza la sintassi seguente. Nella casella di testo appropriata, immetti uno dei seguenti valori:

Suggerimento

Inizia digitando $ , che consente di accedere a una struttura ad albero di menu con riferimenti ai metadati per ogni tipo di riferimento ai metadati. La sintassi finale è riportata sopra.

Piani:

Informazioni sui metadati dalla definizione del piano o dall'esecuzione del piano corrente:

{{$plan
Informazioni sul piano

Il seguente corpo della richiesta contiene riferimenti al nome del piano, all'identificatore dell'esecuzione del piano e al flusso appena eseguito:

{"text":"Plan: {{$plan.name}} 
RunId: {{$plan.runId}}
Flow: {{$flow_7p.name}}
Success."}
Informazioni sull'esecuzione del piano

Il seguente corpo della richiesta contiene informazioni sull'esecuzione del piano utilizzando timestamp:

{"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}}
"}
Informazioni sull'attività HTTP

È possibile consultare le informazioni di un'attività HTTP che si è già verificata:

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

Per ulteriori informazioni, consulta la sezione Riferimenti ai metadati del piano.

Invio di input di metadati alla funzione cloud

In questo esempio viene illustrato come utilizzare un'attività HTTP per fornire metadati del piano alle funzioni AWS Lambda. Un approccio simile potrebbe essere utilizzato per le funzioni di Google Cloud.

In questo caso, il valore rowCount ricavato dall'esecuzione dell'attività di flusso viene fornito tramite un'attività HTTP a una funzione AWS Lambda.

Passaggi generali:

  1. Definisci il piano.

  2. Attività di flusso: esegui il flusso per generare gli output necessari per la funzione Lambda.

  3. Attività HTTP: genera una richiesta HTTP il cui corpo include un riferimento alla variabile di metadati rowCount. Corpo della richiesta:

    {
     "rowCount": "{{$flow_7p['My Flow Name'].output['My output name'].rowCount}}"
    }
  4. Funzioni AWS Lambda: di seguito è riportato uno pseudo-codice per Lambda:

    import json
    def lambda_handler(event, context):
      httpTaskBody = json.loads(event["body"])
      rowCount = httpTaskBody["rowCount"]
    
      return {
        'statusCode': 200,
        'body': json.dumps(rowCount)
      }
  5. Funzioni Google Cloud: di seguito è riportato uno pseudo-codice per le funzioni Google Cloud:

    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'

Verifica delle firme

Avvertimento

A seconda dell'applicazione di destinazione, l'implementazione della verifica della firma può richiedere competenze da parte dello sviluppatore.

Facoltativamente, puoi configurare la piattaforma per firmare le richieste HTTP. Le richieste firmate rappresentano una garanzia, in quanto sono inviate dalla piattaforma e non da terze parti.

Di seguito, puoi vedere come viene creata la firma, per poter configurare l'applicazione ricevente in modo che elabori correttamente la firma e la relativa richiesta.

Intestazione firma

Le richieste HTTP vengono firmate inserendo l'intestazione X-Webhook-Signature nella richiesta. Queste firme presentano la forma seguente:

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

dove:

  • <Timestamp> : indicatore di data e ora dell'invio della firma. Il valore è rappresentato con l'indicatore di orario UNIX.

  • <Signature> : firma SHA256. La piattaforma genera questa firma utilizzando un codice di autenticazione dei messaggi (HMAC) basato su hash con SHA-256.

Ulteriori informazioni su questi valori sono disponibili di seguito.

Esempio:

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

Verifica degli strumenti dell'applicazione

A seconda dell'applicazione, potrebbe essere necessario completare una delle seguenti serie di attività per verificare le firme delle attività:

Nota

Potresti aver bisogno di inserire la piattaforma nella whitelist dell'applicazione. Per ulteriori informazioni, consulta la documentazione dell'applicazione.

Potresti aver bisogno di creare una codifica personalizzata per l'applicazione. Di seguito, puoi rivedere i dettagli su come farlo, incluso un esempio JavaScript.

Elaborazione delle richieste firmate

Timestamp

Il valore timestamp ( t=<timestamp> ) viene visualizzato all'inizio del valore dell'intestazione per evitare replay attack, in cui un utente malintenzionato può intercettare un payload valido e la sua firma e ritrasmetterli.

  • Per evitare tali attacchi, è incluso un timestamp nell'intestazione della firma ed è anche incorporato come parte del payload firmato.

  • Poiché il timestamp fa parte del payload firmato, un utente malintenzionato non può modificarne il valore senza invalidare la firma.

    • Se la firma è valida ma il timestamp è troppo datato, è possibile scegliere di rifiutare la richiesta.

    • Ad esempio, se ricevi una richiesta con un timestamp che corrisponde a una data di un'ora fa, probabilmente dovresti rifiutare la richiesta.

  • Per ulteriori informazioni sui replay attack, consulta https://en.wikipedia.org/wiki/Replay_attack .

Firma

La firma dell'attività include come parte del suo valore hash:

  • La chiave segreta (immessa sopra)

  • Il valore timestamp

  • Dati della richiesta:

    • (POST/PUT/PATCH): il corpo della richiesta

    • (GET/DELETE): URL della richiesta

Passaggio 1: estrai timestamp e firme

Suddividi l'intestazione X-Webhook-Signature :

  1. Suddividi i valori utilizzando la virgola (,) come separatore.

  2. Suddividi ogni parte utilizzando il simbolo uguale (=).

  3. Estrai i valori per timestamp e firma. Dall'esempio precedente:

    1. timestamp: 1568818215724

    2. firma: 55fa71b2e391cd3ccba8413fb51ad16984a38edb3cccfe81f381c4b8197ee07a

Passaggio 2: crea la firma prevista

Nell'applicazione ricevente, puoi ricalcolare la firma per verificare che la richiesta sia stata inviata dalla piattaforma.

  1. Concatena il timestamp, il punto ( . ) e il corpo della richiesta (metodi POST/PUT/PATCH) o l'url (metodi GET/DELETE).

  2. Supponiamo che l'esempio riportato sopra sia la firma per una richiesta POST e che il corpo della richiesta sia test . Il valore concatenato è il seguente:

    1568818215724.test
  3. Ora puoi calcolare il codice di autenticazione HMAC nell'applicazione ricevente. Nell'esempio JavaScript seguente, il valore della chiave segreta è 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');
Passaggio 3: confronta le firme

Confronta il valore restituito dal codice e il valore incluso come firma nell'intestazione X-Webhook-Signature :

  • Se i valori non corrispondono, rifiuta la richiesta.

  • Se i valori corrispondono, calcola la differenza tra il timestamp corrente e quello nell'intestazione. Se la differenza non rientra nel limite consentito, rifiuta la richiesta.

  • In caso contrario, elabora la richiesta normalmente nell'applicazione.