Identifiera händelsescheman

Slutförd

Azure Event Grid stöder två typer av händelsescheman: Event Grid-händelseschema och Molnhändelseschema. 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 Payload Too Large. Å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 avgifter som om det vore tre separata händelser.

Event Grid skickar händelserna till prenumeranter i en matris som har en enda händelse. 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
  }
]

Händelseegenskaper

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

Property Type Obligatoriskt Beskrivning
Avsnitt sträng Nej. Om det inte ingår stämplar Event Grid på händelsen. Om det ingår måste det matcha Event Grid-ämnet Azure Resource Manager-ID exakt. 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.
certifikatmottagare sträng Ja Utgivardefinierad sökväg till händelseobjektet.
Händelsetyp 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 string Ja Unik identifierare för händelsen.
data objekt Nej Händelsedata som är specifika för resursprovidern.
Dataversion sträng Nej. Om det inte ingår stämplas det med ett tomt värde. Dataobjektets schemaversion. Utgivaren definierar schemaversion.
Metadataversion sträng Nej. Om det inte ingår kommer Event Grid att stämpla på händelsen. Om det ingår måste det matcha Event Grid-schemat metadataVersion exakt (för närvarande endast 1). Schemaversionen av händelsens metadata. Event Grid definierar schemat för de översta egenskaperna. Event Grid ger det här värdet.

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.

Schema för molnhändelser

Utöver standardhändelseschemat stöder Azure Event Grid inbyggt händelser i JSON-implementeringen av CloudEvents v1.0- och HTTP-protokollbindning. CloudEvents är en öppen specifikation för att beskriva händelsedata.

CloudEvents förenklar samverkan genom att tillhandahålla ett gemensamt händelseschema för publicering och användning av molnbaserade händelser. Det här schemat möjliggör enhetliga verktyg, standard sätt att dirigera och hantera händelser och universella sätt att deserialisera det yttre händelseschemat. Med ett gemensamt schema kan du enklare integrera arbete mellan plattformar.

Här är ett exempel på en Azure Blob Storage-händelse i CloudEvents-format:

{
    "specversion": "1.0",
    "type": "Microsoft.Storage.BlobCreated",  
    "source": "/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.Storage/storageAccounts/{storage-account}",
    "id": "9aeb0fdf-c01e-0131-0922-9eb54906e209",
    "time": "2019-11-18T15:13:39.4589254Z",
    "subject": "blobServices/default/containers/{storage-container}/blobs/{new-file}",
    "dataschema": "#",
    "data": {
        "api": "PutBlockList",
        "clientRequestId": "4c5dd7fb-2c48-4a27-bb30-5361b5de920a",
        "requestId": "9aeb0fdf-c01e-0131-0922-9eb549000000",
        "eTag": "0x8D76C39E4407333",
        "contentType": "image/png",
        "contentLength": 30699,
        "blobType": "BlockBlob",
        "url": "https://gridtesting.blob.core.windows.net/testcontainer/{new-file}",
        "sequencer": "000000000000000000000000000099240000000000c41c18",
        "storageDiagnostics": {
            "batchId": "681fe319-3006-00a8-0022-9e7cde000000"
        }
    }
}

En detaljerad beskrivning av tillgängliga fält, deras typer och definitioner i CloudEvents v1.0 finns här.

Värdena för sidhuvuden för händelser som levereras i CloudEvents-schemat och Event Grid-schemat är desamma förutom content-type. För CloudEvents-schema är "content-type":"application/cloudevents+json; charset=utf-8"det huvudvärdet . För Event Grid-schema är "content-type":"application/json; charset=utf-8"det rubrikvärdet .

Du kan använda Event Grid för både in- och utdata för händelser i CloudEvents-schemat. Du kan använda CloudEvents för systemhändelser, till exempel Blob Storage-händelser och IoT Hub-händelser och anpassade händelser. Den kan också transformera dessa händelser på tråden fram och tillbaka.