Compartir vía


Actividad de webhook en Azure Data Factory

SE APLICA A: Azure Data Factory Azure Synapse Analytics

Sugerencia

Pruebe Data Factory en Microsoft Fabric, una solución de análisis todo en uno para empresas. Microsoft Fabric abarca todo, desde el movimiento de datos hasta la ciencia de datos, el análisis en tiempo real, la inteligencia empresarial y los informes. ¡Obtenga más información sobre cómo iniciar una nueva evaluación gratuita!

Una actividad de webhook puede controlar la ejecución de canalizaciones mediante código personalizado. Con la actividad de webhook, el código puede llamar a un punto de conexión y pasarle una dirección URL de devolución de llamada. La ejecución de la canalización espera por la invocación de devolución de llamada antes de pasar a la siguiente actividad.

Importante

La actividad de webhook ahora permite exponer el estado de error y los mensajes personalizados de nuevo a la actividad y la canalización. Establezca reportStatusOnCallBack en true e incluya StatusCode y Error en la carga de devolución de llamada. Para más información, consulte Notas adicionales.

Creación de una actividad de webhook con la interfaz de usuario

Para usar una actividad de webhook en una canalización, realice los pasos siguientes:

  1. Busque Webhook en el panel Actividades de la canalización y arrastre una actividad de webhook al lienzo de la canalización.

  2. Seleccione la nueva actividad de webhook en el lienzo si aún no está seleccionada y su pestaña Configuración para editar sus detalles.

    Muestra la UI de una actividad de Webhook.

  3. Especifique una dirección URL para el webhook, que puede ser una cadena URL literal o cualquier combinación de expresiones y funciones dinámicas, variables del sistema o salidas de otras actividades. Proporcione otros detalles que se enviarán con la solicitud.

  4. Use la salida de la actividad como entrada a cualquier otra actividad y haga referencia a la salida en cualquier lugar en el que se admita contenido dinámico en la actividad de destino.

Sintaxis


{
    "name": "MyWebHookActivity",
    "type": "WebHook",
    "typeProperties": {
        "method": "POST",
        "url": "<URLEndpoint>",
        "headers": {
            "Content-Type": "application/json"
        },
        "body": {
            "key": "value"
        },
        "timeout": "00:10:00",
        "reportStatusOnCallBack": false,
        "authentication": {
            "type": "ClientCertificate",
            "pfx": "****",
            "password": "****"
        }
    }
}

Propiedades de tipo

Propiedad Descripción Valores permitidos Obligatorio
name El nombre de la actividad de webhook. String
type Tienen que establecerse en "WebHook". String
method El método de API REST para el punto de conexión de destino. String. El tipo admitido es "POST".
url Punto de conexión y ruta de acceso de destino. Una cadena o una expresión con el valor resultType de una cadena.
headers Encabezados que se envían a la solicitud. Este es un ejemplo que establece el idioma y el tipo en una solicitud: "headers" : { "Accept-Language": "en-us", "Content-Type": "application/json" }. Una cadena o una expresión con el valor resultType de una cadena. Sí. Se necesita un encabezado Content-Type como "headers":{ "Content-Type":"application/json"}.
body Representa la carga útil que se envía al punto de conexión. JSON válido o una expresión con el valor resultType de JSON. Vea Esquema de carga de solicitud para obtener el esquema de la carga de solicitud.
autenticación El método de autenticación que se usa para llamar al punto de conexión. Los tipos admitidos son "Basic" y "ClientCertificate". Para más información, consulte Autenticación. Si la autenticación no es necesaria, excluya esta propiedad. Una cadena o una expresión con el valor resultType de una cadena. No
timeout El tiempo que la actividad espera a que se invoque la devolución de llamada especificada por callBackUri. El valor predeterminado es 10 minutos ("00:10:00"). Los valores tienen el formato TimeSpan d.hh:mm:ss. String No
Notificar el estado de la devolución de llamada Permite a un usuario informar del estado de error de una actividad de webhook. Boolean No

Authentication

Una actividad de webhook admite los siguientes tipos de autenticación.

None

Si la autenticación no es necesaria, no incluya la propiedad authentication.

Básico

Especifique el nombre de usuario y la contraseña que se usarán con la autenticación básica.

"authentication":{
   "type":"Basic",
   "username":"****",
   "password":"****"
}

Certificado de cliente

Especifique un contenido codificado en Base64 de un archivo PFX y una contraseña.

"authentication":{
   "type":"ClientCertificate",
   "pfx":"****",
   "password":"****"
}

Identidad administrada

Utilice la identidad administrada para la factoría de datos o el área de trabajo de Synapse para especificar el URI de recurso para el que el token de acceso se solicitará. Para llamar a la API de Azure Resource Management, use https://management.azure.com/. Para más información sobre cómo funcionan las identidades administradas, consulte Información general sobre las identidades administradas de recursos de Azure.

"authentication": {
    "type": "MSI",
    "resource": "https://management.azure.com/"
}

Nota

Si el servicio está configurado con un repositorio de Git, tiene que almacenar sus credenciales en Azure Key Vault para usar la autenticación básica o de certificado de cliente. El servicio no almacena contraseñas en Git.

Notas adicionales

El servicio pasa la propiedad adicional callBackUri en el cuerpo enviado al punto de conexión de la dirección URL. El servicio espera que se invoque este URI antes del valor de tiempo de espera especificado. Si no se invoca el URI, se produce un error en la actividad con el estado "TimedOut".

La propia actividad de webhook produce un error cuando la llamada al punto de conexión personalizado genera un error. Cualquier mensaje de error se puede agregar al cuerpo de devolución de llamada y usarse en una actividad posterior.

Para cada llamada a la API REST, el cliente agota el tiempo de espera si el punto de conexión no responde en un minuto. Este comportamiento es el procedimiento recomendado HTTP estándar. Para corregir este problema, implemente un patrón 202. En el caso actual, el punto de conexión devuelve 202 (aceptado) y el cliente sondea.

El tiempo de espera de un minuto en la solicitud no tiene nada que ver con el tiempo de espera de la actividad. El último se usa para esperar a la devolución de llamada especificada por callbackUri.

El cuerpo devuelto al URI de devolución de llamada tiene que ser un JSON válido. Establezca el encabezado Content-Type en application/json.

Al usar la propiedad Notificar el estado de la devolución de llamada, tiene que agregar el siguiente código al cuerpo al hacer la devolución de llamada:

{
    "Output": {
        // output object is used in activity output
        "testProp": "testPropValue"
    },
    "Error": {
        // Optional, set it when you want to fail the activity
        "ErrorCode": "testErrorCode",
        "Message": "error message to show in activity error"
    },
    "StatusCode": "403" // when status code is >=400, activity is marked as failed
}

Observe las siguientes actividades de flujo de control admitidas: