创建自定义事件触发器以在 Azure 数据工厂中运行管道(预览)

适用于: Azure 数据工厂

事件驱动的体系结构 (EDA) 是一种常见数据集成模式,其中涉及到事件的生成、检测、消耗和响应。 数据集成方案通常要求 Azure 数据工厂客户在特定事件发生时触发管道。 数据工厂与 Azure 事件网格的原生集成现在涵盖自定义主题。 将事件发送到事件网格主题。 数据工厂订阅主题,侦听并相应地触发管道。

备注

本文中所介绍的集成依赖于 Azure 事件网格。 请确保订阅已注册事件网格资源提供程序。 有关详细信息,请参阅资源提供程序和类型。 你必须能够执行 Microsoft.EventGrid/eventSubscriptions/* 操作。 此操作属于 EventGrid EventSubscription 参与者内置角色。

如果将管道参数与自定义事件触发器组合,则可以在管道运行中分析和引用自定义的 data 有效负载。 由于自定义事件有效负载中的 data 字段是自由格式的 JSON 键值结构,因此你可以控制事件驱动的管道运行。

重要

如果自定义事件有效负载中缺少以参数方式引用的密钥,trigger run 将失败。 你收到一个错误,指出由于 keyName 属性不存在,无法计算表达式的值。 在这种情况下,事件不会触发 pipeline run

在事件网格中设置自定义主题

若要在数据工厂中使用自定义事件触发器,需要先设置事件网格中的自定义主题

转到 Azure 事件网格并自行创建主题。 若要详细了解如何创建自定义主题,请参阅 Azure 事件网格门户教程CLI 教程

备注

工作流不同于存储事件触发器。 此处,数据工厂不会设置主题。

数据工厂预期事件会遵循事件网格事件架构。 请确保事件有效负载具有以下字段:

[
  {
    "topic": string,
    "subject": string,
    "id": string,
    "eventType": string,
    "eventTime": string,
    "data":{
      object-unique-to-each-publisher
    },
    "dataVersion": string,
    "metadataVersion": string
  }
]

使用数据工厂创建自定义事件触发器

  1. 转到 Azure 数据工厂并登录。

  2. 切换到“编辑”选项卡。查找铅笔图标。

  3. 在菜单上选择“触发器”,然后选择“新建/编辑”。

  4. 在“添加触发器”页中选择“选择触发器”,然后选择“+新建”。

  5. 为“类型”选择“自定义事件”。

    数据工厂 UI 中用于新建自定义事件触发器的“创作”页的屏幕截图。

  6. 从 Azure 订阅下拉列表中选择你的自定义主题,或手动输入事件主题范围。

    备注

    要在数据工厂中创建或修改自定义事件触发器,需要使用具有适当的基于角色的访问控制 (Azure RBAC) 的 Azure 帐户。 不需要其他权限。 数据工厂服务主体不需要对事件网格的特殊权限。 有关访问控制的详细信息,请参阅基于角色的访问控制部分。

  7. “主题开头为”和“主题结尾为”属性可用于筛选触发器事件。 这两个属性都是可选的。

  8. 使用“+ 新建”添加要筛选的“事件类型”。 自定义事件触发器列表使用 OR 关系。 如果某个自定义事件的 eventType 属性与列表中的属性匹配,则将触发管道运行。 事件类型不区分大小写。 例如,在下面的屏幕截图中,触发器匹配主题以“factories”开头的所有 copycompletedcopysucceeded 事件。

    “编辑触发器”页的屏幕截图,用于说明数据工厂 UI 中的“事件类型”和“主题”筛选。

  9. 自定义事件触发器可以分析自定义 data 数据有效负载,并将其发送到管道。 创建管道参数,然后在“参数”页上填写值。 使用 @triggerBody().event.data._keyName_ 格式分析数据有效负载,并将值传递给管道参数。

    有关详细说明,请参阅以下文章:

    屏幕截图显示了管道参数设置。

    屏幕截图显示了在自定义事件中引用数据有效负载的“参数”页。

  10. 输入参数后,选择“确定”。

JSON 架构

下表概述了与自定义事件触发器相关的架构元素:

JSON 元素 说明 类型 允许的值 必需
scope 事件网格主题的 Azure 资源管理器资源 ID。 字符串 Azure 资源管理器 ID
events 导致此触发器触发的事件的类型。 字符串数组 是,至少需要一个值。
subjectBeginsWith subject 字段必须以所提供的模式开头,触发器才会触发。 例如,factories 只为以 factories 开头的事件主题触发触发器。 字符串
subjectEndsWith subject 字段必须以所提供的模式结尾,触发器才会触发。 字符串

基于角色的访问控制

Azure 数据工厂使用 Azure RBAC 来禁止未经授权的访问。 若要正常工作,数据工厂需要访问权限以执行以下操作:

  • 侦听事件。
  • 订阅事件更新。
  • 触发链接到自定义事件的管道。

若要成功创建或更新自定义事件触发器,需要使用具有相应访问权限的 Azure 帐户登录到数据工厂。 否则,操作将失败并且出现“拒绝访问”错误。

数据工厂不需要对事件网格具有特殊权限。 也不需要为操作的数据工厂服务主体分配特殊 Azure RBAC 权限。

具体来说,您需要具有 /subscriptions/####/resourceGroups//####/providers/Microsoft.EventGrid/topics/someTopicsMicrosoft.EventGrid/EventSubscriptions/Write 权限。

后续步骤