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à
Trascina l'attività HTTP dal riquadro a sinistra nell'area di disegno del piano.
Nel pannello a destra, seleziona Attività HTTP . Viene visualizzato il pannello Attività HTTP.
Configurazione dell'attività
Imposta i parametri richiesti. Per ulteriori informazioni sui parametri, consulta la sezione Visualizzazione piano per le attività HTTP .
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 .
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.
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.
Imposta l'installazione Slack per ricevere messaggi HTTP:
Se necessario, crea un canale Slack per ricevere i messaggi.
Crea un'app.
Attiva i messaggi HTTP in arrivo per l'app.
Specifica il canale per la ricezione dei messaggi in arrivo.
Copia l'URL per la richiesta HTTP in entrata dall'istruzione cURL.
Parametro | Descrizione |
---|---|
Nome | Questo nome viene visualizzato solo in AAC. |
Metodo | Seleziona il metodo
|
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."} |
Fai clic su Test per verificare che l'attività funzioni.
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}}
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
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."}
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}} "}
È 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:
Definisci il piano.
Attività di flusso: esegui il flusso per generare gli output necessari per la funzione Lambda.
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}}" }
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) }
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
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 .
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
Suddividi l'intestazione
X-Webhook-Signature
:
Suddividi i valori utilizzando la virgola (,) come separatore.
Suddividi ogni parte utilizzando il simbolo uguale (=).
Estrai i valori per timestamp e firma. Dall'esempio precedente:
timestamp:
1568818215724
firma:
55fa71b2e391cd3ccba8413fb51ad16984a38edb3cccfe81f381c4b8197ee07a
Nell'applicazione ricevente, puoi ricalcolare la firma per verificare che la richiesta sia stata inviata dalla piattaforma.
Concatena il timestamp, il punto ( . ) e il corpo della richiesta (metodi POST/PUT/PATCH) o l'url (metodi GET/DELETE).
Supponiamo che l'esempio riportato sopra sia la firma per una richiesta
POST
e che il corpo della richiesta siatest
. Il valore concatenato è il seguente:1568818215724.test
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');
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.