Share via


Pubblicare eventi in Griglia di eventi di Azure argomenti personalizzati usando le chiavi di accesso

Questo articolo descrive come pubblicare un evento in un argomento personalizzato usando una chiave di accesso. Illustra il formato dei dati post ed evento. The Contratto di servizio (SLA) si applica solo ai post che corrispondono al formato richiesto.

Nota

L'autenticazione Microsoft Entra offre un supporto di autenticazione superiore rispetto a quello offerto dalla chiave di accesso o dall'autenticazione con token di firma di accesso condiviso ( SAS). Con l'autenticazione Microsoft Entra, l'identità viene convalidata rispetto al provider di identità Microsoft Entra. Gli sviluppatori non dovranno gestire le chiavi nel codice se si usa l'autenticazione Microsoft Entra. potrai anche trarre vantaggio da tutte le funzionalità di sicurezza integrate in Microsoft Identity Platform, ad esempio l'accesso condizionale, che consentono di migliorare la posizione di sicurezza dell'applicazione. Per altre informazioni, vedere Autenticare i client di pubblicazione con Microsoft Entra ID.

Endpoint

Quando si invia il POST HTTP a un argomento personalizzato, usare il formato URI: https://<topic-endpoint>?api-version=2018-01-01. Ad esempio, https://exampletopic.westus2-1.eventgrid.azure.net/api/events?api-version=2018-01-01 è un URI valido. Per ottenere l'endpoint per un argomento personalizzato usando l'interfaccia della riga di comando di Azure, usare:

az eventgrid topic show --name <topic-name> -g <topic-resource-group> --query "endpoint"

Per ottenere l'endpoint per un argomento personalizzato usando Azure PowerShell, usare:

(Get-AzEventGridTopic -ResourceGroupName <topic-resource-group> -Name <topic-name>).Endpoint

Nella richiesta includere un valore intestazione denominato aeg-sas-key che contiene una chiave per l'autenticazione. Ad esempio, aeg-sas-key: xxxxxxxxxxxxxxxxxxxxxxx è un valore intestazione valido. Per ottenere la chiave per un argomento personalizzato usando l'interfaccia della riga di comando di Azure, usare:

az eventgrid topic key list --name <topic-name> -g <topic-resource-group> --query "key1"

Per ottenere la chiave per un argomento personalizzato usando PowerShell, usare:

(Get-AzEventGridTopicKey -ResourceGroupName <topic-resource-group> -Name <topic-name>).Key1

Dati dell'evento

Per gli argomenti personalizzati, i dati di livello principale contengono gli stessi campi degli eventi standard definiti dalle risorse. Una di queste proprietà è una data proprietà che contiene proprietà univoce per l'argomento personalizzato. In qualità di autore di eventi, si determinano le proprietà per tale oggetto dati. Ecco lo schema:

[
  {
    "id": string,    
    "eventType": string,
    "subject": string,
    "eventTime": string-in-date-time-format,
    "data":{
      object-unique-to-each-publisher
    },
    "dataVersion": string
  }
]

Per una descrizione di ogni proprietà, vedere Schema di eventi di Griglia di eventi di Azure. Durante la pubblicazione degli eventi in un argomento della griglia di eventi, le dimensioni totali della matrice possono raggiungere 1 MB. Anche le dimensioni massime consentite per un evento sono pari a 1 MB. Gli eventi superiori a 64 KB vengono addebitati in incrementi di 64 KB. Quando si ricevono eventi in un batch, il numero massimo consentito di eventi è 5.000 per batch.

Ad esempio, uno schema di dati evento valido è:

[{
  "id": "1807",
  "eventType": "recordInserted",
  "subject": "myapp/vehicles/motorcycles",
  "eventTime": "2017-08-10T21:03:07+00:00",
  "data": {
    "make": "Ducati",
    "model": "Monster"
  },
  "dataVersion": "1.0"
}]

Response

Dopo la pubblicazione nell'endpoint dell'argomento, si riceve una risposta. La risposta è un codice di risposta HTTP standard. Alcune risposte comuni sono:

Result Response
Riuscita 200 OK
I dati di evento hanno un formato non corretto 400 Richiesta non valida
Chiave di accesso non valida 401 - Non autorizzato
Endpoint non corretto 404 Not Found
Una matrice o un evento supera i limiti delle dimensioni 413 Payload Too Large

Per gli errori, il corpo del messaggio ha il formato seguente:

{
    "error": {
        "code": "<HTTP status code>",
        "message": "<description>",
        "details": [{
            "code": "<HTTP status code>",
            "message": "<description>"
    }]
  }
}

Passaggi successivi