Creación de un desencadenador de eventos personalizado para ejecutar una canalización 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 información sobre cómo iniciar una nueva evaluación gratuita.
La arquitectura dirigida por eventos es un patrón de integración de datos común que implica la producción, detección, consumo y reacción a los eventos. Los escenarios de integración de datos a menudo requieren que clientes de Azure Data Factory desencadenen canalizaciones cuando suceden ciertos eventos. La integración nativa de Data Factory con Azure Event Grid ahora abarca temas personalizados. Los eventos se envían a un tema de Event Grid. Data Factory se suscribe al tema, escucha y, a continuación, desencadena canalizaciones en consecuencia.
La integración descrita en este artículo depende de Azure Event Grid. Asegúrese de que el proveedor de la suscripción se registra con el proveedor de recursos de Event Grid. Para más información, consulte Tipos y proveedores de recursos. Debe poder realizar la acción Microsoft.EventGrid/eventSubscriptions/
. Esta acción forma parte del rol integrado Colaborador de EventSubscription EventGrid.
Importante
Si usa esta característica en Azure Synapse Analytics, asegúrese de que la suscripción también está registrada con un proveedor de recursos de Data Factory. De lo contrario, recibirá un mensaje que indica que se produjo un error en la creación de una suscripción de eventos.
Si combina parámetros de canalización y un desencadenador de eventos personalizado, puede analizar y hacer referencia a cargas data
personalizadas en ejecuciones de canalización. Dado que el campo data
de una carga de eventos personalizada es una estructura de clave-valor JSON de formato libre, puede controlar las ejecuciones de canalización controladas por eventos.
Importante
Si falta una clave a la que se hace referencia en la parametrización en la carga del evento personalizado, trigger run
producirá un error. Verá un mensaje que indica que la expresión no se puede evaluar porque la propiedad keyName
no existe. En este caso, no se desencadenará ningún pipeline run
por el evento.
Configuración de un tema personalizado en Event Grid
Para usar el desencadenador de eventos personalizado en Data Factory, primero debe configurar un tema personalizado en Event Grid.
Vaya a Event Grid y cree el tema. Para obtener más información sobre cómo crear el tema personalizado, consulte Tutoriales del portal de Azure Event Grid y tutoriales de CLI de Azure.
Nota:
El flujo de trabajo es diferente del desencadenador de eventos de almacenamiento. Aquí, Data Factory no configura el tema automáticamente.
Data Factory espera que los eventos sigan el esquema de eventos de Event Grid. Asegúrese de que las cargas del evento tienen los siguientes campos:
[
{
"topic": string,
"subject": string,
"id": string,
"eventType": string,
"eventTime": string,
"data":{
object-unique-to-each-publisher
},
"dataVersion": string,
"metadataVersion": string
}
]
Uso de Data Factory para crear un desencadenador de eventos personalizado
Vaya a Data Factory e inicie sesión.
Cambie a la pestaña Editar. Busque el icono de lápiz.
Seleccione Desencadenador en el menú y, después, seleccione Nuevo/Editar.
En la página para agregar desencadenadores, seleccione Elegir desencadenador y, después, Nuevo.
En Tipo, seleccione Eventos personalizados.
Seleccione el tema personalizado en la lista desplegable suscripción de Azure o escriba manualmente el ámbito del tema de eventos.
Nota:
Para crear o modificar un desencadenador de eventos personalizado en Data Factory, debe usar una cuenta de Azure con el control de acceso basado en rol (RBAC de Azure) adecuado. No se requiere ningún otro permiso. La entidad de servicio de Data Factory no requiere un permiso especial para su instancia de Event Grid. Para obtener más información sobre el control de acceso, consulte la sección Control de acceso basado en roles.
Las propiedades
Subject begins with
ySubject ends with
permiten filtrar por eventos desencadenantes. Todas las propiedades son opcionales.Use + Nuevo para agregar los tipos de evento por los que desea filtrar. La lista de desencadenadores de eventos personalizados usa una relación OR. Cuando se produce un evento personalizado con una propiedad
eventType
que coincide con otra de la lista, se desencadena una ejecución de canalización. El tipo de evento distingue mayúsculas de minúsculas. Por ejemplo, en la captura de pantalla siguiente, el desencadenador coincide con todos los eventoscopycompleted
ocopysucceeded
que tienen un asunto que comienza por factories.Un desencadenador de eventos personalizado puede analizar y enviar la carga de
data
personalizada a la canalización. Cree los parámetros de canalización y luego rellene los valores en la página Parámetros. Use el formato@triggerBody().event.data._keyName_
para analizar la carga de datos y pasar los valores a los parámetros de canalización.Para una explicación detallada, consulte:
- Referencia de metadatos de desencadenador en canalizaciones
- Variables del sistema en el desencadenador de eventos personalizado
Después de escribir los parámetros, seleccione Aceptar.
Filtrado avanzado
El desencadenador de eventos personalizado admite funcionalidades de filtrado avanzadas, de forma similar al Filtrado avanzado de Event Grid. Estos filtros condicionales permiten que las canalizaciones se desencadenen en función de los valores de la carga del evento. Por ejemplo, puede tener un campo en la carga del evento, denominado Departamento, y la canalización solo debe desencadenarse si el valor de Departamento es igual al de Finanzas. También puede especificar lógica compleja, como si el campo date tiene los valores de la lista [1, 2, 3, 4, 5], si el campo mes no tiene los valores de la lista [11, 12] y si el campo etiqueta contiene las cadenas de [Año fiscal 2021, FiscalYear2021 o FY2021].
A partir de hoy, el desencadenador de eventos personalizados admite un subconjunto de operadores de filtrado avanzado en Event Grid. Se admiten las siguientes condiciones de filtro:
NumberIn
NumberNotIn
NumberLessThan
NumberGreaterThan
NumberLessThanOrEquals
NumberGreaterThanOrEquals
BoolEquals
StringContains
StringBeginsWith
StringEndsWith
StringIn
StringNotIn
Seleccione +Nuevo para agregar nuevas condiciones de filtro.
Los desencadenadores de eventos personalizados también tienen las mismas limitaciones que Event Grid, como:
- 5 filtros avanzados y 25 valores de filtro en todos los filtros por desencadenador de evento personalizado.
- 512 caracteres por valor de cadena.
- 5 valores para operadores de
in
ynot in
. - Las teclas no pueden tener el carácter
.
(punto) en ellas, por ejemplo,john.doe@contoso.com
. Actualmente, las claves no admiten caracteres de escape. - La misma clave se puede usar en más de un filtro.
Data Factory se basa en la versión más reciente de disponibilidad general (GA) de API de Event Grid. A medida que las nuevas versiones de API lleguen a la fase de disponibilidad general, Data Factory ampliará su compatibilidad con operadores de filtrado más avanzados.
Esquema JSON
En la tabla siguiente se proporciona información general acerca de los elementos de esquema que están relacionados con los desencadenadores de eventos personalizados.
Elemento JSON | Descripción | Tipo | Valores permitidos | Obligatorio |
---|---|---|---|---|
scope |
El identificador de recurso de Azure Resource Manager del tema de Event Grid. | String | Identificador de Azure Resource Manager | Sí. |
events |
El tipo de eventos que provocan la activación de este desencadenador. | Matriz de cadenas | Sí, se espera al menos un valor. | |
subjectBeginsWith |
El campo subject debe comenzar con el patrón proporcionado para que se active el desencadenador. Por ejemplo, factories solo activa el desencadenador para los asuntos de eventos que comienzan por factories. |
Cadena | No. | |
subjectEndsWith |
El campo subject debe terminar con el patrón proporcionado para que se active el desencadenador. |
Cadena | No. | |
advancedFilters |
Lista de blobs de JSON, donde cada uno especifica una condición de filtro. Cada blob especifica key , operatorType y values . |
Lista de blobs de JSON | No. |
Control de acceso basado en rol
Data Factory usa RBAC de Azure para prohibir el acceso no autorizado. Para funcionar correctamente, Data Factory requiere acceso para:
- Escuchar eventos.
- Suscribirse a las actualizaciones de eventos.
- Desencadenar canalizaciones vinculadas a eventos personalizados.
Para crear o actualizar correctamente un desencadenador de eventos personalizado, debe iniciar sesión en Data Factory con una cuenta de Azure que tenga el acceso adecuado. De lo contrario, se produce un error en la operación con el mensaje "Acceso denegado".
Data Factory no requiere permiso especial para la instancia de Event Grid. Igualmente, no es necesario asignar un permiso de Azure RBAC especial a la entidad de servicio de Data Factory para la operación.
En concreto, necesita el permiso Microsoft.EventGrid/EventSubscriptions/Write
para /subscriptions/####/resourceGroups//####/providers/Microsoft.EventGrid/topics/someTopics
.
- Al crear en la factoría de datos (por ejemplo, en el entorno de desarrollo), la cuenta de Azure que inició sesión debe tener el permiso anterior.
- Al publicar a través de integración continua y entrega continua, la cuenta usada para publicar la plantilla de Azure Resource Manager en la factoría de pruebas o producción debe tener el permiso anterior.
Contenido relacionado
- Obtenga información detallada sobre la ejecución del desencadenador.
- Aprenda a hacer referencia a los metadatos de desencadenador en ejecuciones de canalización.