Azure Event Grid-Ereignisschema

In diesem Artikel wird das Event Grid-Schema beschrieben, das ein proprietäres, nicht erweiterbares, aber voll funktionsfähiges Ereignisformat ist. Event Grid unterstützt dieses Ereignisformat weiterhin und auch in Zukunft. CloudEvents ist jedoch das empfohlene Ereignisformat. Wenn Sie mit Anwendungen arbeiten, die das Event Grid-Format verwenden, finden Sie möglicherweise nützliche Informationen im Abschnitt [CloudEvents], in dem die Transformationen zwischen dem Event Grid- und CloudEvents-Format beschrieben werden, das von Event Grid unterstützt wird.

In diesem Artikel werden die Eigenschaften und das Schema für das Event Grid-Format ausführlich beschrieben. Ereignisse bestehen aus einer Gruppe von vier erforderlichen Zeichenfolgeneigenschaften. Die Eigenschaften gelten für alle Ereignisse von jedem Herausgeber. Das Datenobjekt weist Eigenschaften auf, die für die einzelnen Herausgeber spezifisch sind. Bei Systemthemen sind diese Eigenschaften spezifisch für den Ressourcenanbieter, z.B. Azure Storage oder Azure Event Hubs.

Ereignisquellen senden Ereignisse an Azure Event Grid in einem Array, das mehrere Ereignisobjekte aufweisen kann. Beim Veröffentlichen von Ereignissen in einem Event Grid-Thema kann das Array eine Gesamtgröße von bis zu 1 MB aufweisen. Jedes Ereignis im Array ist auf 1 MB beschränkt. Wenn ein Ereignis oder das Array das zulässige Größenlimit überschreitet, erhalten Sie die Antwort 413 Nutzlast zu groß. Vorgänge werden jedoch in Schritten von 64 KB in Rechnung gestellt. Daher fallen für Ereignisse über 64 KB Betriebsgebühren wie für mehrere Ereignisse an. Beispielsweise würde ein Ereignis mit einer Größe von 130 KB Vorgangsgebühren verursachen, als würde es sich um drei separate Ereignisse handeln.

Event Grid sendet die Ereignisse an Abonnenten in einem Array, das ein einzelnes Ereignis aufweist. Dieses Verhalten kann sich in der Zukunft ändern.

Sie finden das JSON-Schema für das Event Grid-Ereignis und die Datennutzlast für jeden Azure-Herausgeber im Event Schema-Speicher.

Ereignisschema

Das folgende Beispiel zeigt die Eigenschaften, die von allen Ereignisherausgebern verwendet werden:

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

Das für ein Azure Blob Storage-Ereignis veröffentlichte Schema sieht beispielsweise folgendermaßen aus:

[
  {
    "topic": "/subscriptions/{subscription-id}/resourceGroups/Storage/providers/Microsoft.Storage/storageAccounts/xstoretestaccount",
    "subject": "/blobServices/default/containers/oc2d2817345i200097container/blobs/oc2d2817345i20002296blob",
    "eventType": "Microsoft.Storage.BlobCreated",
    "eventTime": "2017-06-26T18:41:00.9584103Z",
    "id": "831e1650-001e-001b-66ab-eeb76e069631",
    "data": {
      "api": "PutBlockList",
      "clientRequestId": "6d79dbfb-0e37-4fc4-981f-442c9ca65760",
      "requestId": "831e1650-001e-001b-66ab-eeb76e000000",
      "eTag": "0x8D4BCC2E4835CD0",
      "contentType": "application/octet-stream",
      "contentLength": 524288,
      "blobType": "BlockBlob",
      "url": "https://oc2d2817345i60006.blob.core.windows.net/oc2d2817345i200097container/oc2d2817345i20002296blob",
      "sequencer": "00000000000004420000000000028963",
      "storageDiagnostics": {
        "batchId": "b68529f3-68cd-4744-baa4-3c0498ec19f0"
      }
    },
    "dataVersion": "",
    "metadataVersion": "1"
  }
]

Ereigniseigenschaften

Alle Ereignisse weisen die gleichen Daten auf oberster Ebene auf:

Eigenschaft Type Erforderlich Beschreibung
topic Zeichenfolge Nein, aber muss bei einer Angabe genau mit der Azure Resource Manager-ID des Event Grid-Themas übereinstimmen. Wenn nicht angegeben, stempelt Event Grid das Ereignis. Vollständiger Ressourcenpfaf zur Ereignisquelle. Dieses Feld ist nicht beschreibbar. Dieser Wert wird von Event Grid bereitgestellt.
subject Zeichenfolge Ja Vom Herausgeber definierter Pfad zum Ereignisbetreff
eventType Zeichenfolge Ja Einer der registrierten Ereignistypen für die Ereignisquelle.
eventTime Zeichenfolge Ja Die Zeit, in der das Ereignis generiert wird, basierend auf der UTC-Zeit des Anbieters.
id Zeichenfolge Ja Eindeutiger Bezeichner für das Ereignis.
data Objekt Ja Die für den Ressourcenanbieter spezifischen Ereignisdaten.
dataVersion Zeichenfolge Nein, wird jedoch mit einem leeren Wert versehen. Die Schemaversion des Datenobjekts. Der Herausgeber definiert die Schemaversion.
metadataVersion Zeichenfolge Nicht erforderlich, aber muss bei einer Angabe genau mit dem Wert metadataVersion des Event Grid-Themas übereinstimmen (derzeit nur 1). Wenn nicht angegeben, stempelt Event Grid das Ereignis. Die Schemaversion der Ereignismetadaten. Event Grid definiert das Schema der Eigenschaften der obersten Ebene. Dieser Wert wird von Event Grid bereitgestellt.

Weitere Informationen zu den Eigenschaften im Datenobjekt finden Sie in der Ereignisquelle:

Für benutzerdefinierte Themen bestimmt der Ereignisherausgeber das Datenobjekt. Die Daten auf oberster Ebene müssen die gleichen Felder wie über Standardressourcen definierte Ereignisse aufweisen.

Erstellen Sie beim Veröffentlichen von Ereignissen für benutzerdefinierte Themen Betreffinformationen für Ihre Ereignisse, an denen Abonnenten einfach erkennen können, ob Interesse am Ereignis besteht. Abonnenten verwenden den Betreff zum Filtern und Weiterleiten von Ereignissen. Erwägen Sie, den Pfad zum Ereignisort anzugeben, damit Abonnenten nach Segmenten dieses Pfads filtern können. Mit dem Pfad können Abonnenten Ereignisse speziell oder allgemein filtern. Wenn Sie beispielsweise einen Pfad mit drei Segmenten im Betreff angeben, z.B. /A/B/C, können Abonnenten nach dem ersten Segment /A filtern, um eine umfassendere Gruppe von Ereignissen angezeigt zu bekommen. Diese Abonnenten erhalten Ereignisse mit Betreffinformationen wie /A/B/C oder /A/D/E. Andere Abonnenten können nach /A/B filtern, um eine eingeschränktere Gruppe mit Ereignissen zu erhalten.

Es kann auch sein, dass Ihr Betreff weitere Details zu den Vorkommnissen enthalten muss. Mit dem Publisher Speicherkonten wird beispielsweise der Betreff /blobServices/default/containers/<container-name>/blobs/<file> angegeben, wenn einem Container eine Datei hinzugefügt wird. Ein Abonnent kann nach dem Pfad /blobServices/default/containers/testcontainer filtern, um alle Ereignisse für diesen Container abzurufen, aber nicht für andere Container des Speicherkontos. Außerdem kann ein Abonnent nach dem Suffix .txt filtern oder es für die Weiterleitung verwenden, um nur mit Textdateien zu arbeiten.

CloudEvents

CloudEvents ist das empfohlene Ereignisformat. Azure Event Grid investiert weiterhin in Features, die sich mindestens auf das JSON-Format von CloudEvents beziehen. In Anbetracht der Tatsache, dass einige Ereignisquellen wie Azure-Dienste das Event Grid-Format verwenden, wird die folgende Tabelle bereitgestellt, um Ihnen zu helfen, die Transformation zu verstehen, die bei der Verwendung von CloudEvents- und Event Grid-Formaten als Eingabeschema in Themen und als Ausgabeschema in Ereignisabonnements unterstützt wird. Ein Event Grid-Ausgabeschema kann nicht verwendet werden, wenn CloudEvents als Eingabeschema verwendet wird, weil CloudEvents Erweiterungsattribute unterstützt, die vom Event Grid-Schema nicht unterstützt werden.

Eingabeschema Ausgabeschema
CloudEvents-Format CloudEvents-Format
Event Grid-Format CloudEvents-Format
Event Grid-Format Event Grid-Format

Nächste Schritte