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 (EDA) 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.
Nota
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 en algún proveedor de recursos de Data Factory, ya que, de lo contrario, recibirá un error en el que se 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 error que indica que la expresión no se puede evaluar porque la propiedad keyName
no existe. En este caso, el evento no desencadenará ningúnpipeline run
.
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 Azure 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 la CLI.
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 Azure 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 Choose trigger (Elegir desencadenador) y, después, seleccione Nuevo.
Seleccione Eventos personalizados para Tipo.
Seleccione el tema personalizado en la lista desplegable suscripción de Azure o introduzca manualmente el ámbito del tema del evento.
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 permiso adicional. 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 El elemento "Asunto" empieza por y El elemento "Asunto" termina en le permiten filtrar eventos del desencadenador. 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 ver una explicación detallada, consulte los artículos siguientes:
- Referencia de metadatos de desencadenador en canalizaciones
- Variables del sistema en el desencadenador de eventos personalizado
Después de que haya escrito 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 una lógica compleja, como el campo date en la lista [1, 2, 3, 4, 5], el campo month que no está en la lista [11, 12], el campo tag contiene cualquiera de los valores ["Fiscal Year 2021", "FiscalYear2021", "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.
Además, los desencadenadores de eventos personalizados cumplen las mismas limitaciones que Event Grid, entre las que se incluyen:
- 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 los operadores in y not in
- Las claves no pueden tener un 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 de la 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. |
String | No | |
subjectEndsWith |
El campo subject debe terminar con el patrón proporcionado para que se active el desencadenador. |
String | 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
Azure Data Factory utiliza el control de acceso basado en roles de Azure (RBAC) 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 producirá un error en la operación con un error de acceso denegado.
Data Factory no requiere un permiso especial para su 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
.
- Si se desea crear en la factoría de datos (por ejemplo, en el entorno de desarrollo), la cuenta de Azure que ha iniciado sesión debe tener el permiso anterior.
- Si se publica a través de CI/CD, la cuenta que se usa para publicar la plantilla de ARM en la factoría de pruebas o de 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.
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente las Cuestiones de GitHub como mecanismo de retroalimentación para el contenido y lo sustituiremos por un nuevo sistema de retroalimentación. Para más información, consulta:Enviar y ver comentarios de