Skip to main content

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

  1. Arrastra y suelta la tarea HTTP desde el panel izquierdo hacia el lienzo del plan.

  2. En el panel derecho, selecciona Tarea HTTP . Se muestra el panel de tareas HTTP.

PlanViewPage-ViewForHTTPTask.png

Figura: Tarea HTTP

Configurar la tarea

  1. Establece los parámetros obligatorios. Para obtener más información sobre los parámetros, consulta Vista del plan para tareas HTTP .

  2. 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 .

  3. 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.

  4. 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.

Prerrequisitos

Configura la instalación de Slack para recibir mensajes HTTP:

  1. Si es necesario, crea un canal de Slack para recibir los mensajes.

  2. Crea una aplicación.

  3. Activa los mensajes HTTP entrantes en tu aplicación.

  4. Especifica el canal en el que recibirás los mensajes entrantes.

  5. Copia la URL de la solicitud HTTP entrante desde la instrucción cURL.

Definir la tarea HTTP

Parámetro

Descripción

Nombre

Este nombre solo aparece en AAC.

Método

Selecciona el método POST .

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."}
Verificar
  1. Haz clic en Probar para validar que esta tarea funciona.

  2. 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}}
    
Sintaxis

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
Información del 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."}
Planificar la información de ejecución

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}}
"}
Información de la tarea HTTP

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:

  1. Define el plan.

  2. Tarea de flujo: ejecuta el flujo a fin de generar las salidas necesarias para la función Lambda.

  3. 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}}"
    }
  4. 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)
      }
  5. 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

Marca de fecha y hora

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 .

Firma

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

Paso 1: Extraer la marca de tiempo y las firmas

Divide el encabezado X-Webhook-Signature :

  1. Divide los valores usando el carácter , como separador.

  2. Divide cada una de las partes usando el carácter =.

  3. Extrae los valores de la marca de tiempo y la firma. Del ejemplo anterior:

    1. marca de tiempo: 1568818215724

    2. firma: 55fa71b2e391cd3ccba8413fb51ad16984a38edb3cccfe81f381c4b8197ee07a

Paso 2: Crear la firma esperada

En la aplicación receptora, puedes volver a computar la firma para verificar que la solicitud se envió desde la plataforma.

  1. 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).

  2. Supongamos que el ejemplo anterior es la firma de una solicitud POST y el cuerpo de la solicitud es test . El valor concatenado es el siguiente:

    1568818215724.test
  3. 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');
Paso 3: Comparar las firmas

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.