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:
- Azure Policy
- Azure-Abonnements (Verwaltungsvorgänge)
- Container Registry
- Blob Storage
- Event Hubs
- IoT Hub
- Media Services
- Ressourcengruppen (Verwaltungsvorgänge)
- Service Bus
- Azure SignalR
- Azure Machine Learning
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/<container-name>/
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
- Eine Einführung zu Azure Event Grid finden Sie unter Einführung in Azure Event Grid.
- Weitere Informationen zum Erstellen eines Azure Event Grid-Abonnements finden Sie unter Event Grid-Abonnementschema.