Azure Event Grid-gebeurtenisschema

In dit artikel wordt het Event Grid-schema beschreven. Dit is een eigen, nonextensible, maar volledig functionele gebeurtenisindeling. Event Grid ondersteunt deze gebeurtenisindeling nog steeds en blijft deze ondersteunen. CloudEvents is echter de aanbevolen gebeurtenisindeling die moet worden gebruikt. Als u toepassingen gebruikt die gebruikmaken van de Event Grid-indeling, vindt u mogelijk nuttige informatie in de sectie [CloudEvents] waarin de transformaties tussen de Event Grid- en CloudEvents-indeling worden beschreven die worden ondersteund door Event Grid.

In dit artikel worden de eigenschappen en het schema voor de Event Grid-indeling gedetailleerd beschreven. Gebeurtenissen bestaan uit een set van vier vereiste tekenreekseigenschappen. De eigenschappen zijn gebruikelijk voor alle gebeurtenissen van elke uitgever. Het gegevensobject heeft eigenschappen die specifiek zijn voor elke uitgever. Voor systeemonderwerpen zijn deze eigenschappen specifiek voor de resourceprovider, zoals Azure Storage of Azure Event Hubs.

Gebeurtenisbronnen verzenden gebeurtenissen naar Azure Event Grid in een matrix, die verschillende gebeurtenisobjecten kunnen bevatten. Bij het plaatsen van gebeurtenissen in een Event Grid-onderwerp kan de matrix een totale grootte van maximaal 1 MB hebben. Elke gebeurtenis in de matrix is beperkt tot 1 MB. Als een gebeurtenis of matrix groter is dan de groottelimieten, ontvangt u het antwoord 413 Payload Too Large. Bewerkingen worden echter in stappen van 64 kB in rekening gebracht. Voor gebeurtenissen van meer dan 64 kB worden dus bewerkingen in rekening gebracht alsof het meerdere gebeurtenissen waren. Een gebeurtenis met 130 kB zou bijvoorbeeld bewerkingen met zich meebrengt alsof het drie afzonderlijke gebeurtenissen zijn.

Event Grid verzendt de gebeurtenissen naar abonnees in een matrix met één gebeurtenis. Dit gedrag kan in de toekomst veranderen.

U vindt het JSON-schema voor de Event Grid-gebeurtenis en de nettolading van gegevens van elke Azure-uitgever in het gebeurtenisschemaarchief.

Gebeurtenisschema

In het volgende voorbeeld ziet u de eigenschappen die door alle gebeurtenisuitgevers worden gebruikt:

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

Het schema dat is gepubliceerd voor een Azure Blob Storage-gebeurtenis is bijvoorbeeld:

[
  {
    "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"
  }
]

Eigenschappen van gebeurtenis

Alle gebeurtenissen hebben dezelfde gegevens op het hoogste niveau:

Eigenschap Type Vereist Beschrijving
topic tekenreeks Nee, maar als dit is opgenomen, moet dit exact overeenkomen met de Azure Resource Manager-id van het Event Grid-onderwerp. Als deze niet is opgenomen, worden event grid-stempels op de gebeurtenis weergegeven. Volledig resourcepad naar de gebeurtenisbron. Dit veld kan niet worden geschreven. Event Grid biedt deze waarde.
subject tekenreeks Ja Het door de uitgever gedefinieerde pad naar het gebeurtenisonderwerp.
eventType tekenreeks Ja Een van de geregistreerde gebeurtenistypen voor deze gebeurtenisbron.
eventTime tekenreeks Ja Het tijdstip waarop de gebeurtenis wordt gegenereerd op basis van de UTC-tijd van de provider.
id tekenreeks Ja Unieke id voor de gebeurtenis.
data object Ja Gebeurtenisgegevens die specifiek zijn voor de resourceprovider.
dataVersion tekenreeks Nee, maar wordt gestempeld met een lege waarde. De schemaversie van het gegevensobject. De uitgever definieert de schemaversie.
metadataVersion tekenreeks Niet vereist, maar moet, indien opgenomen, exact overeenkomen met het Event Grid-schema metadataVersion (momenteel alleen 1). Als deze niet is opgenomen, worden event grid-stempels op de gebeurtenis weergegeven. De schemaversie van de metagegevens van de gebeurtenis. Event Grid definieert het schema voor de eigenschappen op het hoogste niveau. Event Grid biedt deze waarde.

Zie de gebeurtenisbron voor meer informatie over de eigenschappen in het gegevensobject:

Voor aangepaste onderwerpen bepaalt de gebeurtenisuitgever het gegevensobject. De gegevens op het hoogste niveau moeten dezelfde velden hebben als standaardgebeurtenissen die door resources zijn gedefinieerd.

Wanneer u gebeurtenissen publiceert naar aangepaste onderwerpen, maakt u onderwerpen voor uw gebeurtenissen waarmee abonnees gemakkelijk kunnen weten of ze geïnteresseerd zijn in de gebeurtenis. Abonnees gebruiken het onderwerp om gebeurtenissen te filteren en te routeren. Overweeg het pad op te geven voor waar de gebeurtenis is opgetreden, zodat abonnees kunnen filteren op segmenten van dat pad. Met het pad kunnen abonnees gebeurtenissen smal of breed filteren. Als u bijvoorbeeld een driesegmentpad opgeeft, zoals /A/B/C in het onderwerp, kunnen abonnees filteren op het eerste segment /A om een brede set gebeurtenissen te verkrijgen. Deze abonnees krijgen gebeurtenissen met onderwerpen zoals /A/B/C of /A/D/E. Andere abonnees kunnen filteren /A/B om een smallere set gebeurtenissen op te halen.

Soms heeft uw onderwerp meer informatie nodig over wat er is gebeurd. De uitgever van opslagaccounts biedt bijvoorbeeld het onderwerp /blobServices/default/containers/<container-name>/blobs/<file> wanneer een bestand wordt toegevoegd aan een container. Een abonnee kan filteren op het pad /blobServices/default/containers/testcontainer om alle gebeurtenissen voor die container op te halen, maar niet op andere containers in het opslagaccount. Een abonnee kan ook filteren of routeren door het achtervoegsel .txt om alleen met tekstbestanden te werken.

CloudEvents

CloudEvents is de aanbevolen gebeurtenisindeling die moet worden gebruikt. Azure Event Grid blijft investeren in functies met betrekking tot ten minste de JSON-indeling van CloudEvents. Gezien het feit dat sommige gebeurtenisbronnen zoals Azure-services de Event Grid-indeling gebruiken, wordt de volgende tabel gegeven om inzicht te krijgen in de transformatie die wordt ondersteund bij het gebruik van CloudEvents en Event Grid-indelingen als invoerschema in onderwerpen en als een uitvoerschema in gebeurtenisabonnementen. Een Event Grid-uitvoerschema kan niet worden gebruikt bij het gebruik van CloudEvents als invoerschema omdat CloudEvents extensiekenmerken ondersteunt die niet worden ondersteund door het Event Grid-schema.

Invoerschema Uitvoerschema
CloudEvents-indeling CloudEvents-indeling
Event Grid-indeling CloudEvents-indeling
Event Grid-indeling Event Grid-indeling

Volgende stappen