Crear tarea de HTTP
Durante la ejecución de tu plan, puedes crear una tarea para enviar solicitudes HTTP a un punto de conexión de aplicaciones de terceros. Por ejemplo, cuando se ejecuta correctamente una tarea anterior, puedes enviar un mensaje HTTP a un punto de conexión designado con información de esa tarea.
Una tarea HTTP es una solicitud entre Alteryx Analytics Cloud (AAC) y otra aplicación. Estas solicitudes se entregan a través de HTTP y la aplicación receptora puede interpretarlas para adoptar medidas.
Nota
Tu aplicación receptora puede requerir que incluyas en la lista de aprobación el host y el número de puerto o la dirección IP de la plataforma. Consulta la documentación respecto de tu solicitud.
Una tarea HTTP es uno de los tipos de tareas disponibles en un plan. Para obtener más información, consulta la página Vista del plan .
Limitaciones
No se pueden utilizar certificados de seguridad personalizados.
Las solicitudes de HTTP tienen un límite de tiempo de espera de 30 segundos.
Prerrequisitos
Requisitos de la aplicación receptora
Para enviar una solicitud HTTP a una aplicación objetivo, esta debe estar configurada a fin de recibir la solicitud:
Las solicitudes externas al dominio de la aplicación deben estar habilitadas.
Nota
Tu aplicación receptora puede requerir que incluyas en la lista de aprobación el host y el número de puerto o la dirección IP de la plataforma. Consulta la documentación respecto de tu solicitud.
Debes adquirir la URL del punto de conexión al que deseas enviar la solicitud HTTP.
Debes adquirir todos los encabezados HTTP que se deban insertar en cada solicitud HTTP.
Si se debe firmar la solicitud, se requiere una configuración adicional. Los detalles aparecen más adelante.
Crear una tarea
Arrastra y suelta la tarea HTTP desde el panel izquierdo hacia el lienzo del plan.
En el panel derecho, selecciona Tarea HTTP . Se muestra el panel de tareas HTTP.
Configurar la tarea
Establece los parámetros obligatorios. Para obtener más información sobre los parámetros, consulta Vista del plan para tareas HTTP .
Puedes especificar la información de metadatos del plan en los valores de encabezado y en el cuerpo de la solicitud. Para obtener más información, consulta las Referencias de metadatos del plan .
Para probar la conexión, haz clic en Probar . Se muestra un mensaje de éxito.
Sugerencia
El código de estado
200
indica que la prueba se realizó correctamente.Sugerencia
Puedes utilizar el método GET con fines de prueba. Una solicitud GET no cambia los datos en la plataforma objetivo; sin embargo, puede permitirte especificar elementos en el cuerpo de la solicitud.
Para agregar la tarea, haz clic en Guardar .
Cambiar nombre de tarea
Para cambiar el nombre de la tarea, haz clic en el menú Más > Editar en el panel derecho.
Sugerencia
Un nombre apropiado puede incluir el punto de conexión de la plataforma objetivo y el método, como también los propósitos de la tarea en tu plan.
Eliminar tarea
Para eliminar la tarea, haz clic en el menú Más > Eliminar . Confirma que deseas eliminar la tarea.
Aviso
No se puede deshacer este paso.
Referencias de metadatos del plan
En el mensaje de tus otras tareas, puedes consultar los metadatos sobre el plan, sus tareas y la ejecución. Para obtener más información, consulta las Referencias de metadatos del plan .
Ejemplos
Mensaje en el canal de Slack
Sugerencia
En la actualidad, las tareas de Slack son una característica del producto compatible. Para obtener más información, consulta Crear tarea de Slack .
Puedes crear una tarea HTTP para enviar un mensaje de texto al canal de Slack que elijas.
Configura la instalación de Slack para recibir mensajes HTTP:
Si es necesario, crea un canal de Slack para recibir los mensajes.
Crea una aplicación.
Activa los mensajes HTTP entrantes en tu aplicación.
Especifica el canal en el que recibirás los mensajes entrantes.
Copia la URL de la solicitud HTTP entrante desde la instrucción cURL.
Parámetro | Descripción |
---|---|
Nombre | Este nombre solo aparece en AAC. |
Método | Selecciona el método
|
URL | Pega la URL que copiaste de Slack. |
Encabezados | Copia los encabezados de contenido del comando cURL de Slack: key: Content-Type value: application/json |
Cuerpo | {"text":"Your job has completed."} |
Haz clic en Probar para validar que esta tarea funciona.
Ejecuta una tarea y revisa el canal de Slack para ver si aparece un mensaje.
Planificar ejemplos de metadatos
Puedes consultar la información de los metadatos desde la definición del plan y la ejecución actual del plan como parte de la solicitud de la tarea HTTP.
Notas:
Solo puedes insertar referencias de metadatos en las tareas que ya se realizaron en la ejecución del plan antes de que comience la tarea HTTP.
Se hace referencia a cada tarea en la ejecución actual mediante un código de dos letras. Ejemplo:
{{$http_xx.name}}
Una referencia de metadatos del plan se crea mediante la siguiente sintaxis. En el cuadro de texto apropiado, ingresa uno de los siguientes valores:
Sugerencia
Comienza escribiendo
$
, que proporciona acceso a un árbol de menú de referencias de metadatos por cada uno de los tipos de referencia de metadatos. La sintaxis final aparece arriba.
Planes:
Información sobre los metadatos de la definición del plan o de la ejecución actual del plan:
{{$plan
El siguiente cuerpo de solicitud contiene referencias al nombre del plan, al identificador de ejecución del plan y al flujo que se acaba de ejecutar:
{"text":"Plan: {{$plan.name}} RunId: {{$plan.runId}} Flow: {{$flow_7p.name}} Success."}
El siguiente cuerpo de solicitud contiene información sobre la ejecución del plan en la forma de marcas de tiempo:
{"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}} "}
Puedes consultar la información de una tarea HTTP que ya se realizó:
{"text":"{{$http_qg.name}} returned {{$http_qg.statusCode}}."}
Para obtener más información, consulta Referencias de metadatos del plan .
Ingresar entradas de metadatos a la función en la nube
En este ejemplo, se muestra cómo puedes utilizar una tarea HTTP para entregar metadatos del plan a las funciones de AWS Lambda. Se podría utilizar un enfoque similar en cuanto a las funciones de Google Cloud.
En este caso, el valor
rowCount
de la ejecución de la tarea de flujo se entrega mediante la tarea HTTP a una función de AWS Lambda.
Pasos generales:
Define el plan.
Tarea de flujo: ejecuta el flujo a fin de generar las salidas necesarias para la función Lambda.
Tarea HTTP: genera una solicitud HTTP cuyo cuerpo incluye una referencia a la variable de metadatos rowCount. Cuerpo de la solicitud:
{ "rowCount": "{{$flow_7p['My Flow Name'].output['My output name'].rowCount}}" }
Funciones AWS Lambda: el siguiente es un pseudocódigo para Lambda:
import json def lambda_handler(event, context): httpTaskBody = json.loads(event["body"]) rowCount = httpTaskBody["rowCount"] return { 'statusCode': 200, 'body': json.dumps(rowCount) }
Funciones de Google Cloud: el siguiente es un pseudocódigo para las funciones de 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'
Verificar firmas
Aviso
Según la aplicación objetivo, la implementación de la verificación de firmas puede requerir las habilidades de un desarrollador.
De forma opcional, puedes configurar la plataforma para firmar las solicitudes HTTP. Las solicitudes firmadas garantizan que se envíen las solicitudes desde la plataforma, en lugar de un tercero.
A continuación, puedes revisar cómo se crea la firma para que puedas configurar la aplicación receptora a fin de procesar correctamente la firma y la solicitud relacionada.
Encabezado de la firma
Las solicitudes HTTP se firman insertando el encabezado
X-Webhook-Signature
en ella. Estas firmas tienen el siguiente formato:
X-Webhook-Signature: t=<timestamp>,sha256=<signature>
en el que:
<timestamp>
: marca de tiempo cuando se envió la firma. El valor está en tiempo UNIX.<signature>
: firma SHA256. La plataforma genera esta firma utilizando un código de autenticación de mensajes basado en hash (HMAC) con SHA-256.
Puedes encontrar más información sobre estos valores a continuación.
Ejemplo:
X-Webhook-Signature: t=1568818215724,sha256=55fa71b2e391cd3ccba8413fb51ad16984a38edb3cccfe81f381c4b8197ee07a
Comprobar herramientas de la aplicación
Según la aplicación, es posible que debas completar uno de los siguientes conjuntos de tareas para verificar las firmas de las tareas:
Nota
Podría ser necesario incluir la plataforma en la lista de aprobación de la aplicación. Consulta la documentación de la aplicación para conocer más detalles.
Es posible que debas crear una codificación personalizada para la aplicación. A continuación, puedes revisar los detalles sobre cómo hacerlo, incluido un ejemplo de JavaScript.
Procesar solicitudes firmadas
El valor de marca de tiempo (
t=<timestamp>
) aparece al principio del valor del encabezado para evitar los ataques de repetición, en los que un atacante podría interceptar una carga válida y su firma, y volver a transmitirlos.
Para evitar esos ataques, se incluye una marca de tiempo en el encabezado de la firma y también se incrusta como parte de la carga firmada.
Ya que la marca de tiempo es parte de la carga firmada, un atacante no puede cambiar el valor de la marca de tiempo sin invalidar la firma.
Si la firma es válida, pero la marca de tiempo es demasiado antigua, puedes optar por rechazar la solicitud.
Por ejemplo, si recibes una solicitud con una marca de tiempo que corresponde a una fecha de hace una hora, probablemente deberías rechazar la solicitud.
Para obtener más información sobre los ataques de repetición, consulta https://en.wikipedia.org/wiki/Replay_attack .
La firma de la tarea incluye, como parte de su valor hash, los siguientes elementos:
La clave secreta (ingresada arriba)
El valor de la marca de tiempo
La solicitud de datos:
(POST/PUT/PATCH): el cuerpo de la solicitud
(GET/DELETE): URL de la solicitud
Divide el encabezado
X-Webhook-Signature
:
Divide los valores usando el carácter , como separador.
Divide cada una de las partes usando el carácter =.
Extrae los valores de la marca de tiempo y la firma. Del ejemplo anterior:
marca de tiempo:
1568818215724
firma:
55fa71b2e391cd3ccba8413fb51ad16984a38edb3cccfe81f381c4b8197ee07a
En la aplicación receptora, puedes volver a computar la firma para verificar que la solicitud se envió desde la plataforma.
Concatena la marca de tiempo, el carácter de punto . y el cuerpo de la solicitud (métodos POST/PUT/PATCH) o la URL (métodos GET/DELETE).
Supongamos que el ejemplo anterior es la firma de una solicitud
POST
y el cuerpo de la solicitud estest
. El valor concatenado es el siguiente:1568818215724.test
Ahora puedes computar el código de autenticación HMAC en la aplicación receptora. En el siguiente ejemplo de JavaScript, el valor de la clave secreta es
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');
Se deben comparar el valor devuelto por el código con el valor incluido como la firma en el encabezado
X-Webhook-Signature
:
Si los valores no coinciden, rechaza la solicitud.
Si los valores coinciden, calcula la diferencia entre la marca de tiempo actual y la del encabezado. Si la diferencia está fuera de tu límite permitido, rechaza la solicitud.
De lo contrario, procesa la solicitud con normalidad en tu aplicación.