Freigeben über


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

  1. Wechseln Sie zu Data Factory, und melden Sie sich an.

  2. Wechseln Sie zur Registerkarte Bearbeiten. Suchen Sie nach dem Stiftsymbol.

  3. Klicken Sie im Menü auf Auslöser und dann auf Neu/Bearbeiten.

  4. Klicken Sie auf der Seite Auslöser hinzufügen auf Auslöser auswählen und dann auf +Neu.

  5. Wählen Sie unter Typ benutzerdefinierte Ereignisse aus.

    Screenshot, der das Erstellen eines neuen benutzerdefinierten Ereignistriggers in der Data Factory-Benutzeroberfläche zeigt.

  6. 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.

  7. Mit den Eigenschaften Subject begins with und Subject ends with können Sie nach Triggerereignissen filtern. Beide Eigenschaften sind optional.

  8. 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 allen copycompleted oder copysucceeded Ereignissen, die über ein Betreff verfügen, das mit Factoriesbeginnt.

    Screenshot der Seite „Trigger bearbeiten“ zum Erläutern des Filterns nach Ereignistypen und Themen auf der Data Factory Benutzeroberfläche.

  9. 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:

    Screenshot der Einstellungen für Pipelineparameter.

    Screenshot der Seite „Parameter“ zum Verweisen auf die Datennutzlast in einem benutzerdefinierten Ereignis.

  10. 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.

Screenshot, der das Festlegen erweiterter Filter für einen Kundenereignistrigger zeigt.

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- und not 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.