Händelseschema för Azure Event Grid

Den här artikeln beskriver Event Grid-schemat, som är ett proprietärt, icke-tillgängligt men ändå fullt funktionellt händelseformat. Event Grid stöder fortfarande det här händelseformatet och kommer att fortsätta att stödja det. CloudEvents är dock det rekommenderade händelseformatet som ska användas. Om du använder program som använder Event Grid-formatet kan du hitta användbar information i avsnittet [CloudEvents] som beskriver omvandlingarna mellan Event Grid- och CloudEvents-formatet som stöds av Event Grid.

Den här artikeln beskriver i detalj egenskaperna och schemat för Event Grid-formatet. Händelser består av en uppsättning med fyra obligatoriska strängegenskaper. Egenskaperna är gemensamma för alla händelser från alla utgivare. Dataobjektet har egenskaper som är specifika för varje utgivare. För systemämnen är dessa egenskaper specifika för resursprovidern, till exempel Azure Storage eller Azure Event Hubs.

Händelsekällor skickar händelser till Azure Event Grid i en matris, som kan ha flera händelseobjekt. När händelser skickas till ett Event Grid-ämne kan matrisen ha en total storlek på upp till 1 MB. Varje händelse i matrisen är begränsad till 1 MB. Om en händelse eller matrisen är större än storleksgränserna får du svaret 413 Nyttolast för stor. Åtgärder debiteras dock i steg om 64 KB. Händelser över 64 KB debiteras därför åtgärder som om de vore flera händelser. Till exempel skulle en händelse som är 130 KB medföra åtgärder som om det vore tre separata händelser.

Event Grid skickar händelserna till prenumeranter i en matris som har en enda händelse. Det här beteendet kan ändras i framtiden.

Du hittar JSON-schemat för Event Grid-händelsen och varje Azure-utgivares datanyttolast i händelseschemalagret.

Händelseschema

I följande exempel visas de egenskaper som används av alla händelseutgivare:

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

Schemat som publicerats för en Azure Blob Storage-händelse är till exempel:

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

Händelseegenskaper

Alla händelser har samma data på toppnivå:

Property Type Obligatoriskt Beskrivning
topic sträng Nej, men om det ingår måste det matcha Event Grid-ämnet Azure Resource Manager-ID exakt. Om det inte ingår stämplar Event Grid på händelsen. Fullständig resurssökväg till händelsekällan. Det här fältet kan inte skrivas. Event Grid ger det här värdet.
subject sträng Ja Utgivardefinierad sökväg till händelseobjektet.
eventType sträng Ja En av de registrerade händelsetyperna för den här händelsekällan.
Händelsetid sträng Ja Den tid då händelsen genereras baserat på leverantörens UTC-tid.
id sträng Ja Unik identifierare för händelsen.
data objekt Ja Händelsedata som är specifika för resursprovidern.
dataVersion sträng Nej, men kommer att stämplas med ett tomt värde. Dataobjektets schemaversion. Utgivaren definierar schemaversion.
metadataVersion sträng Krävs inte, men om det ingår måste det matcha Event Grid-schemat metadataVersion exakt (för närvarande endast 1). Om det inte ingår stämplar Event Grid på händelsen. Schemaversionen av händelsens metadata. Event Grid definierar schemat för de översta egenskaperna. Event Grid ger det här värdet.

Information om egenskaperna i dataobjektet finns i händelsekällan:

För anpassade ämnen avgör händelseutgivaren dataobjektet. Data på den översta nivån bör ha samma fält som standardresursdefinierade händelser.

När du publicerar händelser i anpassade ämnen skapar du ämnen för dina händelser som gör det enkelt för prenumeranter att veta om de är intresserade av händelsen. Prenumeranter använder ämnet för att filtrera och dirigera händelser. Överväg att ange sökvägen för var händelsen inträffade, så att prenumeranter kan filtrera efter segment i den sökvägen. Sökvägen gör det möjligt för prenumeranter att filtrera händelser smalt eller brett. Om du till exempel anger en sökväg för tre segment som /A/B/C i ämnet kan prenumeranter filtrera efter det första segmentet /A för att få en bred uppsättning händelser. Dessa prenumeranter får händelser med ämnen som /A/B/C eller /A/D/E. Andra prenumeranter kan filtrera efter /A/B för att få en smalare uppsättning händelser.

Ibland behöver ditt ämne mer information om vad som hände. Utgivaren av lagringskonton tillhandahåller till exempel ämnet /blobServices/default/containers/<container-name>/blobs/<file> när en fil läggs till i en container. En prenumerant kan filtrera efter sökvägen /blobServices/default/containers/testcontainer för att hämta alla händelser för containern men inte andra containrar i lagringskontot. En prenumerant kan också filtrera eller dirigera efter suffixet .txt för att endast arbeta med textfiler.

CloudEvents

CloudEvents är det rekommenderade händelseformatet som ska användas. Azure Event Grid fortsätter att investera i funktioner som är relaterade till minst CloudEvents JSON-format . Med tanke på att vissa händelsekällor som Azure-tjänster använder Event Grid-formatet tillhandahålls följande tabell som hjälper dig att förstå den omvandling som stöds när du använder CloudEvents- och Event Grid-format som ett indataschema i ämnen och som ett utdataschema i händelseprenumerationer. Ett Event Grid-utdataschema kan inte användas när du använder CloudEvents som indataschema eftersom CloudEvents stöder tilläggsattribut som inte stöds av Event Grid-schemat.

Indataschema Utdataschema
CloudEvents-format CloudEvents-format
Event Grid-format CloudEvents-format
Event Grid-format Event Grid-format

Nästa steg