Publier dans une rubrique personnalisée pour Azure Event GridPost to custom topic for Azure Event Grid

Cet article explique comment publier un événement dans une rubrique personnalisée.This article describes how to post an event to a custom topic. Il montre le format des données de publication et d’événement.It shows the format of the post and event data. Le Contrat de niveau de service (SLA) s’applique uniquement aux publications qui correspondent au format attendu.The Service Level Agreement (SLA) only applies to posts that match the expected format.

Notes

Cet article a été mis à jour pour pouvoir utiliser le module Azure Az PowerShell.This article has been updated to use the Azure Az PowerShell module. Le module Az PowerShell est le module PowerShell qui est recommandé pour interagir avec Azure.The Az PowerShell module is the recommended PowerShell module for interacting with Azure. Pour démarrer avec le module Az PowerShell, consulter Installer Azure PowerShell.To get started with the Az PowerShell module, see Install Azure PowerShell. Pour savoir comment migrer vers le module Az PowerShell, consultez Migrer Azure PowerShell depuis AzureRM vers Az.To learn how to migrate to the Az PowerShell module, see Migrate Azure PowerShell from AzureRM to Az.

Point de terminaisonEndpoint

Quand vous envoyez la demande HTTP POST à une rubrique personnalisée, utilisez le format d’URI https://<topic-endpoint>?api-version=2018-01-01.When sending the HTTP POST to a custom topic, use the URI format: https://<topic-endpoint>?api-version=2018-01-01.

Par exemple, un URI valide est https://exampletopic.westus2-1.eventgrid.azure.net/api/events?api-version=2018-01-01.For example, a valid URI is: https://exampletopic.westus2-1.eventgrid.azure.net/api/events?api-version=2018-01-01.

Pour obtenir le point de terminaison pour une rubrique personnalisée avec l’interface de ligne de commande Azure, utilisez :To get the endpoint for a custom topic with Azure CLI, use:

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

Pour obtenir le point de terminaison pour une rubrique personnalisée avec Azure PowerShell, utilisez :To get the endpoint for a custom topic with Azure PowerShell, use:

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

Dans la demande, incluez une valeur d’en-tête nommée aeg-sas-key qui contient une clé pour l’authentification.In the request, include a header value named aeg-sas-key that contains a key for authentication.

Par exemple, une valeur d’en-tête valide est aeg-sas-key: VXbGWce53249Mt8wuotr0GPmyJ/nDT4hgdEj9DpBeRr38arnnm5OFg==.For example, a valid header value is aeg-sas-key: VXbGWce53249Mt8wuotr0GPmyJ/nDT4hgdEj9DpBeRr38arnnm5OFg==.

Pour obtenir la clé pour une rubrique personnalisée avec l’interface de ligne de commande Azure, utilisez :To get the key for a custom topic with Azure CLI, use:

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

Pour obtenir la clé pour une rubrique personnalisée avec PowerShell, utilisez :To get the key for a custom topic with PowerShell, use:

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

Données d’événementEvent data

Pour les rubriques personnalisées, les données de premier niveau contiennent les mêmes champs que les événements standard définis par les ressources.For custom topics, the top-level data contains the same fields as standard resource-defined events. Une de ces propriétés est une propriété de données qui contient des propriétés propres à la rubrique personnalisée.One of those properties is a data property that contains properties unique to the custom topic. En tant qu’éditeur d’événements, vous déterminez les propriétés de cet objet de données.As event publisher, you determine the properties for that data object. Utilisez le schéma suivant :Use the following schema:

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

Pour obtenir une description de ces propriétés, consultez Schéma d’événement Azure Event Grid.For a description of these properties, see Azure Event Grid event schema. Lorsque les événements sont envoyés vers une rubrique Event Grid, le tableau peut avoir une taille totale de 1 Mo.When posting events to an event grid topic, the array can have a total size of up to 1 MB. La taille maximale autorisée pour un événement est également de 1 Mo.The maximum allowed size for an event is also 1 MB. Les événements de plus de 64 Ko donnent lieu à une facturation par incréments de 64 Ko.Events over 64 KB are charged in 64-KB increments.

Par exemple, un schéma de données d’événement valide est :For example, a valid event data schema is:

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

responseResponse

Après la validation pour le point de terminaison de la rubrique, vous recevez une réponse.After posting to the topic endpoint, you receive a response. La réponse est un code de réponse HTTP standard.The response is a standard HTTP response code. Certaines réponses courantes sont :Some common responses are:

RésultatsResult responseResponse
SuccèsSuccess 200 OK200 OK
Les données d’événement ont un format incorrectEvent data has incorrect format 400 Demande incorrecte400 Bad Request
Clé d’accès non valideInvalid access key 401 Non autorisé401 Unauthorized
Point de terminaison incorrecteIncorrect endpoint 404 Introuvable404 Not Found
La taille du tableau ou de l’événement dépasse la limite autoriséeArray or event exceeds size limits 413 charge utile maximale dépassée413 Payload Too Large

Pour les erreurs, le corps du message a le format suivant :For errors, the message body has the following format:

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

Étapes suivantesNext steps