Erstellen eines benutzerdefinierten Ereignisauslösers zum Ausführen einer Pipeline in Azure Data Factory
GILT FÜR: Azure Data Factory Azure Synapse Analytics
Tipp
Testen Sie Data Factory in Microsoft Fabric, eine All-in-One-Analyselösung für Unternehmen. Microsoft Fabric deckt alle Aufgaben ab, von der Datenverschiebung bis hin zu Data Science, Echtzeitanalysen, Business Intelligence und Berichterstellung. Erfahren Sie, wie Sie kostenlos eine neue Testversion starten!
Die ereignisgesteuerte Architektur ist ein allgemeines Datenintegrationsmuster, das die Produktion, Erkennung, Verbrauch und Reaktion auf Ereignisse beinhaltet. In Datenintegrationsszenarien müssen Azure Data Factory-Kunden häufig Pipelines bei Eintritt bestimmter Ereignisse auslösen. Data Factory native Integration mit Azure Event Grid umfasst jetzt benutzerdefinierte Themen. Sie senden Ereignisse an ein Event Grid-Thema. Data Factory abonniert das Thema, überwacht es und löst dann die Pipelines entsprechend aus.
Die in diesem Artikel beschriebene Integration basiert auf Azure Event Grid. Stellen Sie sicher, dass Ihr Abonnement für den Event Grid-Ressourcenanbieter registriert ist. Weitere Informationen finden Sie unter Ressourcenanbieter und -typen. Sie müssen in der Lage sein, die Aktion Microsoft.EventGrid/eventSubscriptions/
auszuführen. Diese Aktion ist Teil der integrierten EventGrid-EventSubscription-Mitwirkender Rolle.
Wichtig
Wenn Sie dieses Feature in Azure Synapse Analytics verwenden, stellen Sie sicher, dass Ihr Abonnement auch beim Data Factory-Ressourcenanbieter registriert wird. Andernfalls wird eine Meldung angezeigt, die besagt, dass „die Erstellung eines Ereignisabonnements fehlgeschlagen ist“.
Wenn Sie Pipelineparameter und einen benutzerdefinierten Ereignisauslöser kombinieren, können Sie benutzerdefinierte data
Nutzlasten in Pipelineausführungen analysieren und darauf verweisen. Da das data
-Feld in einer benutzerdefinierten Ereignisnutzlast eine Freiform-JSON-Schlüssel-Wert-Struktur ist, können Sie ereignisgesteuerte Pipelineausführungen steuern.
Wichtig
Wenn ein Schlüssel, auf den in der Parametrisierung verwiesen wird, in der benutzerdefinierten Ereignisnutzlast fehlt, schlägt trigger run
fehl. Sie erhalten eine Meldung, die besagt, dass der Ausdruck nicht ausgewertet werden kann, da die keyName
-Eigenschaft nicht vorhanden ist. In diesem Fall wird kein pipeline run
-Ereignis ausgelöst.
Einrichten eines benutzerdefinierten Themas in Event Grid
Zum Verwenden eines Auslösers für ein benutzerdefiniertes Ereignis in Data Factory müssen Sie zunächst ein benutzerdefiniertes Thema in Event Grid einrichten.
Wechseln Sie zu Event Grid und erstellen Sie das Thema selbst. Weitere Informationen zum Erstellen des benutzerdefinierten Themas finden Sie in den Portal-Tutorials und den Azure CLI-Tutorials für Event Grid.
Hinweis
Der Workflow unterscheidet sich vom Speicherereignistrigger. Hier richtet Data Factory das Thema nicht für Sie ein.
Data Factory erwartet, dass die Ereignisse dem Event Grid-Ereignisschema folgen. Stellen Sie sicher, dass die Ereignisnutzlasten über folgende Felder verfügen:
[
{
"topic": string,
"subject": string,
"id": string,
"eventType": string,
"eventTime": string,
"data":{
object-unique-to-each-publisher
},
"dataVersion": string,
"metadataVersion": string
}
]
Verwenden von Data Factory zum Erstellen eines benutzerdefinierten Ereignisauslösers
Wechseln Sie zu Data Factory, und melden Sie sich an.
Wechseln Sie zur Registerkarte Bearbeiten. Suchen Sie nach dem Stiftsymbol.
Klicken Sie im Menü auf Auslöser und dann auf Neu/Bearbeiten.
Klicken Sie auf der Seite Auslöser hinzufügen auf Auslöser auswählen und dann auf +Neu.
Wählen Sie unter Typ benutzerdefinierte Ereignisse aus.
Wählen Sie in der Dropdownliste „Azure-Abonnement“ das benutzerdefinierte Thema aus, oder geben Sie den Bereich für das Ereignisthema manuell ein.
Hinweis
Zum Erstellen oder Ändern eines benutzerdefinierten Ereignisauslösers in Data Factory müssen Sie ein Azure-Konto mit der entsprechenden Azure-rollenbasierten Zugriffssteuerung (Azure RBAC) verwenden. Es ist keine weitere Berechtigung erforderlich. Der Data Factory Dienst Prinzipal erfordert keine besondere Berechtigung für Ihr Event Grid. Weitere Informationen zur Zugriffssteuerung finden Sie im Abschnitt Rollenbasierte Zugriffssteuerung.
Mit den Eigenschaften
Subject begins with
undSubject ends with
können Sie nach Triggerereignissen filtern. Beide Eigenschaften sind optional.Verwenden Sie + Neu, um Ereignistypen hinzuzufügen, die Sie herausfiltern möchten. Die Liste der benutzerdefinierten Ereignisauslöser verwendet eine OR-Beziehung. Wenn ein benutzerdefiniertes Ereignis mit einer
eventType
-Eigenschaft vorhanden ist, die einem in der Liste entspricht, wird eine Pipelineausführung ausgelöst. Beim Ereignistyp wird die Groß-/Kleinschreibung nicht beachtet. Im folgenden Screenshot entspricht der Auslöser beispielsweise allencopycompleted
odercopysucceeded
Ereignissen, die über ein Betreff verfügen, das mit Factoriesbeginnt.Der Auslöser für benutzerdefinierte Ereignisse kann die benutzerdefinierte
data
Nutzlast analysieren und an ihre Pipeline senden. Erstellen Sie die Pipelineparameter und geben Sie die Werte auf der Seite Parameter ein. Verwenden Sie das Format@triggerBody().event.data._keyName_
zum Analysieren der Datennutzlast, und übergeben Sie die Werte an die Pipelineparameter.Eine ausführlichere Erklärung finden Sie unter:
- Verweisen auf Auslösermetadaten in Pipelines
- Systemvariablen im benutzerdefinierten Ereignisauslöser
Nachdem Sie die Parameter eingegeben haben, wählen Sie OK aus.
Erweiterte Filterung
Benutzerdefinierte Ereignistrigger unterstützen erweiterte Filterfunktionen, ähnlich wie Event Grid: Erweiterte Filterung. Mit diesen bedingten Filtern können Pipelines basierend auf den Werten der Ereignisnutzdaten ausgelöst werden. Sie können z. B. ein Feld namens Department in den Ereignisnutzdaten verwenden, und die Pipeline sollte nur ausgelöst werden, wenn Department gleich Finance ist. Sie können auch komplexe Logik angeben, z. B. das Datumsfeld in der Liste [1, 2, 3, 4, 5], das Monatsfeld nicht in der Liste [11, 12], und ob das Tagfeld [Geschäftsjahr 2021, Geschäftsjahr 2021, Geschäftsjahr2021 oder FY2021] enthält.
Ab heute unterstützt der benutzerdefinierte Ereignistrigger eine Teilmenge der erweiterten Filteroperatoren in Event Grid. Die folgenden Filterbedingungen werden unterstützt:
NumberIn
NumberNotIn
NumberLessThan
NumberGreaterThan
NumberLessThanOrEquals
NumberGreaterThanOrEquals
BoolEquals
StringContains
StringBeginsWith
StringEndsWith
StringIn
StringNotIn
Klicken Sie auf + Neu, um neue Filterbedingungen hinzuzufügen.
Benutzerdefinierte Ereignistrigger folgen auch den gleichen Einschränkungen wie Event Grid, z. B.:
- 5 erweiterte Filter und 25 Filterwerte für alle Filter pro benutzerdefiniertem Ereignistrigger.
- 512 Zeichen pro Zeichenfolgenwert.
- 5 Werte für
in
- undnot in
-Operatoren. - Schlüssel können das
.
-Zeichen (Punkt) nicht enthalten, z. B.john.doe@contoso.com
. Derzeit gibt es keine Unterstützung für Escapezeichen in Schlüsseln. - Der gleiche Schlüssel kann in mehr als einem Filter verwendet werden.
Data Factory basiert auf der neuesten allgemeinen Verfügbarkeitsversion (GA) der Event Grid-API. Sobald neue API-Versionen die GA-Phase erreicht haben, wird Data Factory seine Unterstützung für fortgeschrittene Filteroperatoren erweitern.
JSON-Schema
Die folgende Tabelle bietet eine Übersicht über die Schemaelemente im Zusammenhang mit Auslösern für benutzerdefinierte Ereignisse.
JSON-Element | BESCHREIBUNG | type | Zulässige Werte | Erforderlich |
---|---|---|---|---|
scope |
Die Azure Resource Manager-Ressourcen-ID des Event Grid-Themas. | String | Azure Resource Manager-ID | Ja. |
events |
Der Ereignistyp, die diesen Trigger auslöst. | Array von Zeichenfolgen | Ja, mindestens ein Wert wird erwartet. | |
subjectBeginsWith |
Das subject Feld muss mit dem angegebenen Muster beginnen, damit der Trigger ausgelöst wird. Beispielsweise löst factories nur den Trigger für Ereignisbetreffe aus, die mit factoriesbeginnen. |
String | Nein | |
subjectEndsWith |
Das subject Feld muss mit dem angegebenen Muster beginnen, damit der Trigger ausgelöst wird. |
String | Nein | |
advancedFilters |
Liste der JSON-Blobs, die jeweils eine Filterbedingung angeben. Jedes Blob gibt key , operatorType und values an. |
Liste der JSON-Blobs | Nein |
Rollenbasierte Zugriffssteuerung
Data Factory verwendet Azure RBAC, um nicht autorisierten Zugriff zu verhindern. Um ordnungsgemäß zu funktionieren, erfordert Data Factory Zugriff auf:
- Ereignisse überwachen
- Abonnieren Sie Updates von Ereignissen.
- Lösen Sie Pipelines aus, die mit benutzerdefinierten Ereignissen verknüpft sind.
Um einen benutzerdefinierten Ereignisauslöser erfolgreich zu erstellen oder zu aktualisieren, müssen Sie sich bei Data Factory mit einem Azure-Konto anmelden, das über den entsprechenden Zugriff verfügt. Andernfalls schlägt der Vorgang mit der Meldung „Zugriff verweigert“ fehl.
Data Factory erfordert keine besondere Berechtigung für Ihre Instanz von Event Grid. Sie müssen dem Data Factory-Dienstprinzipal für den Vorgang auch keine spezielle Azure RBAC-Rollenberechtigung zuweisen.
Insbesondere benötigen Sie die Microsoft.EventGrid/EventSubscriptions/Write
Berechtigung für /subscriptions/####/resourceGroups//####/providers/Microsoft.EventGrid/topics/someTopics
.
- Beim Erstellen in der Data Factory (z. B. in der Entwicklungsumgebung) muss das angemeldete Azure-Konto über die oben genannte Berechtigung verfügen.
- Wenn Sie über kontinuierliche Integration und kontinuierliche Bereitstellung veröffentlichen, muss das Konto, das zum Veröffentlichen der Azure Resource Manager-Vorlage in der Test- oder Produktionsfabrik verwendet wird, über die voranstehende Berechtigung verfügen.
Zugehöriger Inhalt
- Hier erhalten Sie ausführliche Informationen zur Auslöserausführung.
- Hier erfahren Sie, wie Sie auf Auslösermetadaten in Pipelineausführungen verweisen.