建立自訂事件觸發程序以在 Azure Data Factory 中執行管線
適用於:Azure Data Factory Azure Synapse Analytics
提示
試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的全方位分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告的所有項目。 了解如何免費開始新的試用 (部分機器翻譯)!
事件驅動架構是常見的資料整合模式,所涉及的環節包括生產、偵測、取用和事件反應。 資料整合案例通常會要求 Azure Data Factory 客戶在特定事件發生時觸發管線。 Data Factory 與 Azure 事件方格的原生整合現已涵蓋自訂主題。 您可將事件傳送至事件方格主題。 Data Factory 會訂閱主題、接聽,然後觸發對應管線。
本文章中說明的整合,仰賴 Azure 事件方格。 請確認您的訂用帳戶已向事件方格資源提供者註冊。 如需詳細資訊,請參閱資源提供者和類型。 您必須能夠執行 Microsoft.EventGrid/eventSubscriptions/
動作。 此動作是 EventGrid EventSubscription 參與者內建角色的一部分。
重要
如果您在 Azure Synapse Analytics 中使用此功能,請確定您也向 Data Factory 資源提供者註冊您的訂用帳戶。 否則,您會收到一則訊息,指出「建立事件訂閱失敗」。
如果您合併管線參數和自訂事件觸發程序,就可以在管線執行中剖析並參考自訂 data
承載。 由於自訂事件承載中的 data
欄位是格式自由的 JSON 索引鍵/值結構,因此您可以控制事件驅動管線執行。
重要
如果自訂事件承載中遺漏參數化所參考的索引鍵,trigger run
就會失敗。 您會收到一則訊息,說明無法評估運算式,因為屬性 keyName
不存在。 在此情況下,事件不會觸發任何 pipeline run
。
在事件方格中設定自訂主題
若要在 Data Factory 中使用自訂事件觸發程序,您必須先在事件方格中設定自訂主題。
前往事件方格並自行建立主題。 如需如何建立自訂主題的詳細資訊,請參閱事件方格入口網站教學課程和 Azure CLI 教學課程。
注意
工作流程與儲存體事件觸發程序不同。 Data Factory 不會在此處為您設定主題。
Data Factory 預期事件將遵循事件方格事件結構描述。 請確定事件承載具有以下欄位:
[
{
"topic": string,
"subject": string,
"id": string,
"eventType": string,
"eventTime": string,
"data":{
object-unique-to-each-publisher
},
"dataVersion": string,
"metadataVersion": string
}
]
使用 Data Factory 建立自訂事件觸發程序
前往 Data Factory 並登入。
切換至 [編輯] 索引標籤。尋找鉛筆圖示。
選取功能表上的 [觸發程序],然後選取 [新增/編輯]。
在 [新增觸發程序] 頁面上,選取 [選擇觸發程序],然後選取 [+ 新增]。
在 [類型] 底下,選取 [自訂事件]。
從 Azure 訂用帳戶下拉式清單中選取您的自訂主題,或手動輸入事件主題範圍。
注意
若要在 Data Factory 中建立或修改自訂事件觸發程序,您必須使用具有適當 Azure 角色型存取控制 (Azure RBAC) 的 Azure 帳戶。 不需要其他任何權限。 Data Factory 服務準則不需要事件方格的特殊權限。 如需存取控制的詳細資訊,請參閱角色型存取控制一節。
Subject begins with
和Subject ends with
屬性可讓您篩選觸發程序事件。 這兩個屬性皆為選擇性。使用 [+ 新增] 來新增要篩選的事件類型。 自訂事件觸發程序的清單會使用 OR 關聯性。 當自訂事件含符合清單的
eventType
屬性時,就會觸發管線執行。 事件類型不區分大小寫。 例如在下列螢幕擷取畫面中,觸發程序符合所有copycompleted
或copysucceeded
事件,且其主旨的開頭均為「factories」(處理站)。自訂事件觸發程序可以剖析並傳送自訂
data
承載至您的管線。 您可以建立管線參數,然後在 [參數] 頁面上填入值。 使用格式@triggerBody().event.data._keyName_
來剖析資料承載,並將值傳遞至管線參數。如需詳細說明,請參閱:
輸入參數之後,請選取 [確定]。
進階篩選
自訂事件觸發程序支援進階篩選功能,與事件方格進階篩選類似。 這些條件式篩選可讓管線根據事件裝載值進行觸發。 例如,您的事件裝載中可能會有一個名為 [部門] 的欄位,且管線應當僅在 [部門] 等於 [財務] 時才觸發。 您也可以指定複雜的邏輯,例如清單 [1, 2, 3, 4, 5] 中的 [日期] 欄位、不包含在清單 [11, 12] 中的 [月份]欄位,以及 [標籤] 欄位是否包含 [Fiscal Year 2021, FiscalYear2021 或 FY2021]。
目前,自訂事件觸發程序支援事件方格中進階篩選運算子的子集。 支援下列篩選條件:
NumberIn
NumberNotIn
NumberLessThan
NumberGreaterThan
NumberLessThanOrEquals
NumberGreaterThanOrEquals
BoolEquals
StringContains
StringBeginsWith
StringEndsWith
StringIn
StringNotIn
選取 [+ 新增] 以新增篩選條件。
自訂事件觸發程序也遵守與事件方格相同的限制,例如:
- 每個自訂事件觸發程序的所有篩選條件都有 5 個進階篩選條件和 25 個篩選條件值。
- 每個字串值只能有 512 個字元。
in
和not in
運算子的 5 個值。- 索引鍵不能有
.
(點) 字元,例如john.doe@contoso.com
。 目前,索引鍵中不支援逸出字元。 - 相同的索引鍵可以用在多個篩選中。
Data Factory 依賴最新正式發行的事件方格 API 版本。 隨著新的 API 版本進入 GA 階段,Data Factory 也會進一步支援更進階的篩選運算子。
JSON 結構描述
下表提供與自訂事件觸發程序相關的結構描述元素概觀。
JSON 元素 | 描述 | 類型 | 允許的值 | 必要 |
---|---|---|---|---|
scope |
事件方格主題的 Azure Resource Manager 資源識別碼。 | String | Azure Resource Manager 識別碼 | 是。 |
events |
會導致引發此觸發程序的事件類型。 | 字串陣列 | 是,預計至少會有一個值。 | |
subjectBeginsWith |
subject 欄位必須以提供的模式作開頭,才能啟動觸發程序。 例如,「factories」(處理站) 只會針對開頭為「factories」的事件主旨啟動觸發程序。 |
String | 否。 | |
subjectEndsWith |
subject 欄位必須以提供的模式作結尾,才能啟動觸發程序。 |
String | 否。 | |
advancedFilters |
JSON Blob 的清單,每個皆指定了篩選條件。 每個 Blob 都會指定 key 、operatorType 和 values 。 |
JSON Blob 清單 | 否。 |
角色型存取控制
Data Factory 使用 Azure RBAC 來禁止未經授權的存取。 若要正常運作,Data Factory 需要下列存取權:
- 接聽事件。
- 訂閱來自事件的更新。
- 觸發連結至自訂事件的管線。
若要成功建立或更新自訂事件觸發程序,您必須使用具有適當存取權的 Azure 帳戶登入 Data Factory。 否則,該作業會失敗且有訊息「拒絕存取」。
Data Factory 不需要事件方格執行個體的特殊權限。 您也不需要將特殊 Azure RBAC 角色權限指派給該作業的 Data Factory 服務主體。
具體而言,您需要 /subscriptions/####/resourceGroups//####/providers/Microsoft.EventGrid/topics/someTopics
上的 Microsoft.EventGrid/EventSubscriptions/Write
權限。
- 當您在資料處理站中 (例如在開發環境中) 編寫時,登入的 Azure 帳戶必須具有上述權限。
- 當您透過持續整合與持續傳遞發佈時,用來將 Azure Resource Manager 範本發佈至測試或生產處理站的帳戶必須具有上述權限。
相關內容
- 取得觸發程序執行的詳細資訊。
- 了解如何在管線執行中參考觸發程序中繼資料。