Démarrage rapide : acheminer des événements personnalisés vers le Stockage File d’attente Azure avec Azure CLI via Event Grid

Azure Event Grid est un répartiteur d’événements serverless hautement évolutif que vous pouvez utiliser pour intégrer des applications à l’aide d’événements. Event Grid remet les événements aux gestionnaires d’événements pris en charge, dont le stockage File d’attente Azure. Dans cet article, vous utilisez Azure CLI pour les étapes suivantes :

  1. Crée une rubrique personnalisée Event Grid.
  2. Créez un abonnement File d’attente Azure pour la rubrique personnalisée.
  3. Envoyez des exemples d’événements à la rubrique personnalisée.
  4. Vérifiez que ces événements sont remis au stockage File d’attente Azure.

Si vous n’avez pas d’abonnement Azure, créez un compte gratuit Azure avant de commencer.

Créer un groupe de ressources

Les rubriques Event Grid sont des ressources Azure et doivent être placées dans un groupe de ressources Azure. Un groupe de ressources est une collection logique dans laquelle des ressources Azure sont déployées et gérées.

Créez un groupe de ressources avec la commande az group create. L’exemple suivant crée un groupe de ressources nommé gridResourceGroup à l’emplacement westus2.

Notes

Sélectionnez Essayer en regard de l’exemple CLI pour lancer Cloud Shell dans le volet de droite. Sélectionnez le bouton Copier pour copier la commande et collez-la dans la fenêtre Cloud Shell, puis appuyez sur ENTRÉE pour exécuter la commande.

az group create --name gridResourceGroup --location westus2

Activer le fournisseur de ressources Event Grid

  1. Si vous n’avez jamais utilisé Event Grid dans votre abonnement Azure, vous risquez de devoir inscrire le fournisseur de ressources Event Grid. Exécutez la commande suivante pour enregistrer le fournisseur :

    az provider register --namespace Microsoft.EventGrid
    
  2. L’inscription peut prendre un certain temps. Pour vérifier l'état, exécutez la commande suivante :

    az provider show --namespace Microsoft.EventGrid --query "registrationState"
    

    Lorsque registrationState est Registered, vous êtes prêt à continuer.

Créer une rubrique personnalisée

Une rubrique Event Grid fournit un point de terminaison défini par l’utilisateur vers lequel vous envoyez vos événements. L’exemple suivant permet de créer la rubrique personnalisée dans votre groupe de ressources. Remplacez <topic_name> par un nom unique pour votre rubrique personnalisée. Le nom de la rubrique Event Grid doit être unique, car elle est représentée par une entrée DNS (Domain Name System).

  1. Spécifiez un nom pour la rubrique.

    topicname="<TOPIC NAME>"
    
  2. Pour créer la rubrique, exécutez la commande suivante.

    az eventgrid topic create --name $topicname -l westus2 -g gridResourceGroup
    

Créer un Stockage File d'attente

Avant de nous abonner à la rubrique personnalisée, nous allons créer le point de terminaison pour le message de l’événement. Vous créez un Stockage File d’attente afin de collecter les événements.

  1. Spécifiez un nom unique pour le compte de stockage Azure.

    storagename="<STORAGE ACCOUNT NAME>"    
    
  2. Exécutez les commandes suivantes pour créer un compte de stockage Azure et une file d’attente (nommée eventqueue) dans le stockage.

    queuename="eventqueue"
    
    az storage account create -n $storagename -g gridResourceGroup -l westus2 --sku Standard_LRS
    key="$(az storage account keys list -n $storagename --query "[0].{value:value}" --output tsv)"    
    az storage queue create --name $queuename --account-name $storagename --account-key $key
    

S’abonner à une rubrique personnalisée

L’exemple suivant s’abonne à la rubrique personnalisée que vous avez créée et transmet l’ID de ressource du Stockage File d’attente vers le point de terminaison. Avec Azure CLI, vous mettez l’ID de stockage de file d’attente en tant que point de terminaison. Le point de terminaison a le format suivant :

/subscriptions/<AZURE SUBSCRIPTION ID>/resourcegroups/<RESOURCE GROUP NAME>/providers/Microsoft.Storage/storageAccounts/<STORAGE ACCOUNT NAME>/queueservices/default/queues/<QUEUE NAME>

Le script suivant obtient l’ID de ressource du compte de stockage pour la file d’attente. Il construit l’ID de la file d’attente et s’abonne à une rubrique Event Grid. Il définit le type de point de terminaison sur storagequeue et utilise l’ID de file d’attente pour le point de terminaison.

Important

Remplacez l’espace réservé de la date d’expiration (<yyyy-mm-dd>) par une valeur réelle. Par exemple : 2022-11-17 avant d’exécuter la commande.

storageid=$(az storage account show --name $storagename --resource-group gridResourceGroup --query id --output tsv)
queueid="$storageid/queueservices/default/queues/$queuename"
topicid=$(az eventgrid topic show --name $topicname -g gridResourceGroup --query id --output tsv)

az eventgrid event-subscription create \
  --source-resource-id $topicid \
  --name mystoragequeuesubscription \
  --endpoint-type storagequeue \
  --endpoint $queueid \
  --expiration-date "<yyyy-mm-dd>"

Le compte qui crée l’abonnement à l’événement doit pouvoir accéder en écriture au stockage de la file d’attente. Notez qu’une date d’expiration est définie pour l’abonnement.

Si vous utilisez l’API REST pour créer l’abonnement, vous mettez l’ID du compte de stockage et le nom de la file d’attente en tant que paramètre distinct.

"destination": {
  "endpointType": "storagequeue",
  "properties": {
    "queueName":"eventqueue",
    "resourceId": "/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-name>"
  }
  ...

Envoyer un événement à votre rubrique personnalisée

Nous allons maintenant déclencher un événement pour voir comment Event Grid distribue le message à votre point de terminaison. Tout d’abord, il nous faut l’URL et la clé de la rubrique personnalisée.

endpoint=$(az eventgrid topic show --name $topicname -g gridResourceGroup --query "endpoint" --output tsv)
key=$(az eventgrid topic key list --name $topicname -g gridResourceGroup --query "key1" --output tsv)

Pour simplifier cet article, vous allez utiliser des exemples de données d’événements à envoyer à la rubrique personnalisée. En règle générale, une application ou un service Azure envoie les données d’événements. CURL est un utilitaire qui envoie des requêtes HTTP. Dans cet article, utilisez CURL pour envoyer l’événement à la rubrique personnalisée. L’exemple suivant envoie trois événements à la rubrique Event Grid :

for i in 1 2 3
do
   event='[ {"id": "'"$RANDOM"'", "eventType": "recordInserted", "subject": "myapp/vehicles/motorcycles", "eventTime": "'`date +%Y-%m-%dT%H:%M:%S%z`'", "data":{ "make": "Ducati", "model": "Monster"},"dataVersion": "1.0"} ]'
   curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint
done

Accédez au Stockage File d’attente dans le portail et notez que Event Grid a envoyé ces trois événements vers file d’attente.

Screenshot showing the list of messages in the queue that are received from Event Grid.

Nettoyer les ressources

Si vous envisagez de continuer à utiliser cet événement, ne supprimez pas les ressources créées dans cet article. Sinon, utilisez la commande suivante pour supprimer les ressources créées dans cet article.

az group delete --name gridResourceGroup

Étapes suivantes

Maintenant que vous savez créer des rubriques et des abonnements d’événements, vous pouvez en apprendre davantage sur Event Grid et ce qu’il peut vous offrir :

Consultez les exemples suivants pour en savoir plus sur la publication d’événements sur Event Grid et leur consommation avec différents langages de programmation.