Partager via


Distribuer des événements à Azure Event Hubs à l’aide de rubriques d’espace de noms – Azure CLI

L'article fournit des instructions détaillées pour publier des événements sur Azure Event Grid au format CloudEvents JSON et livrer ces événements à l'aide du modèle de livraison par envoi (push). Pour être plus précis, vous utilisez Azure CLI et Curl pour publier des événements dans une rubrique d'espaces de noms dans Event Grid et envoyer (push) ces événements d'un abonnement aux événements vers la destination de gestionnaire Event Hubs. Pour plus d'informations sur le modèle de livraison par envoi (push), consultez Vue d'ensemble de la livraison par envoi (push).

Remarque

L'extension Azure CLI Event Grid ne prend pas encore en charge les espaces de noms et les ressources qu'il contient. Nous utiliserons la ressource Azure CLI pour créer des ressources Event Grid.

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

Prérequis

  • Utilisez l’environnement Bash dans Azure Cloud Shell. Pour plus d’informations, consultez Démarrage rapide pour Bash dans Azure Cloud Shell.

  • Si vous préférez exécuter les commandes de référence de l’interface de ligne de commande localement, installez l’interface Azure CLI. Si vous exécutez sur Windows ou macOS, envisagez d’exécuter Azure CLI dans un conteneur Docker. Pour plus d’informations, consultez Guide pratique pour exécuter Azure CLI dans un conteneur Docker.

    • Si vous utilisez une installation locale, connectez-vous à Azure CLI à l’aide de la commande az login. Pour finir le processus d’authentification, suivez les étapes affichées dans votre terminal. Pour connaître les autres options de connexion, consultez Se connecter avec Azure CLI.

    • Lorsque vous y êtes invité, installez l’extension Azure CLI lors de la première utilisation. Pour plus d’informations sur les extensions, consultez Utiliser des extensions avec Azure CLI.

    • Exécutez az version pour rechercher la version et les bibliothèques dépendantes installées. Pour effectuer une mise à niveau vers la dernière version, exécutez az upgrade.

  • Cet article nécessite la version 2.0.70 ou ultérieure d’Azure CLI. Si vous utilisez Azure Cloud Shell, la version la plus récente est déjà installée.

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 un groupe de ressources

Créez un groupe de ressources Azure avec la commande az group create. Nous utilisons ce groupe de ressources pour contenir toutes les ressources créées dans cet article.

Les étapes générales à suivre pour utiliser Cloud Shell pour exécuter des commandes sont les suivantes :

  • Cliquez sur Ouvrir Cloud Shell pour afficher une fenêtre Azure Cloud Shell dans le volet droit.
  • Copiez et collez la commande dans la fenêtre Cloud Shell.
  • Appuyez sur Entrée pour exécuter la commande.
  1. Déclarez une variable pour contenir le nom d'un groupe de ressources Azure. Spécifiez un nom pour le groupe de ressources en le remplaçant <your-resource-group-name> par une valeur de votre choix.

    resource_group="<your-resource-group-name>"
    
    location="<your-resource-group-location>"
    
  2. Créez un groupe de ressources. Modifiez l’emplacement comme vous le souhaitez.

    az group create --name $resource_group --location $location
    

Créer un espace de noms

Un espace de noms Event Grid fournit un point de terminaison défini par l’utilisateur sur lequel vous publiez vos événements. L’exemple suivant crée un espace de noms dans votre groupe de ressources à l’aide de Bash dans Azure Cloud Shell. Le nom de l’espace de noms doit être unique, car il fait partie d’une entrée DNS. Un nom d’espace de noms doit respecter les règles suivantes :

  • Il doit contenir entre 3 et 50 caractères.
  • Il doit être unique au niveau régional.
  • Seuls les caractères autorisés sont a-z, A-Z, 0-9 et -
  • Il est préférable de ne pas commencer par des préfixes de mots clés réservés comme Microsoft, System ou EventGrid.
  1. Déclarez une variable pour contenir le nom de votre espace de noms Event Grid. Spécifiez un nom pour l'espace de noms en le remplaçant <your-namespace-name> par une valeur que vous aimez.

    namespace="<your-namespace-name>"
    
  2. Créez un espace de noms. Vous souhaiterez peut-être modifier l’emplacement où il est déployé.

    az eventgrid namespace create -g $resource_group -n $namespace -l $location
    

Créez une rubrique d’espace de noms

Créez une rubrique utilisée pour contenir tous les événements publiés sur le point de terminaison de l'espace de noms.

  1. Déclarez une variable pour contenir le nom de votre sujet d'espace de noms. Spécifiez un nom pour le sujet de l'espace de noms en le remplaçant <your-topic-name> par une valeur que vous aimez.

    topic="<your-topic-name>"
    
  2. Créez votre rubrique d’espace de noms :

    az eventgrid namespace topic create -g $resource_group -n $topic --namespace-name $namespace 
    

Créer une ressource Event Hubs

Créez une ressource Event Hubs utilisée comme destination du gestionnaire pour l’abonnement à la livraison push de la rubrique d’espace de noms.

  1. Déclarez une variable pour contenir le nom de l’espace de noms Event Hubs.

    eventHubsNamespace="<your-event-hubs-namespace-name>"
    
  2. Crée l’espace de noms Event Hubs.

    az eventhubs namespace create --resource-group $resource_group --name $eventHubsNamespace --location $location  
    
  3. Déclarez une variable pour contenir le nom du hub d’événements.

    eventHubsEventHub="<your-event-hub-name>"
    
  4. Exécutez la commande suivante pour créer un hub d’événements dans l’espace de noms.

    az eventhubs eventhub create --resource-group $resource_group --namespace-name $eventHubsNamespace --name $eventHubsEventHub 
    

Remettre des événements à Event Hubs à l’aide d’une identité managée

Pour remettre des événements à Event Hubs dans votre espace de noms Event Hubs à l’aide d’une identité managée, procédez comme suit :

  1. Activez l’identité managée affectée par le système ou affectée par l’utilisateur : espaces de noms. Passez à la section suivante pour savoir comment activer l’identité managée en utilisant Azure CLI.
  2. Ajouter l’identité au rôle Expéditeur de données Azure Event Hubs sur l’espace de noms Event Hubs. Passez à la section suivante pour découvrir comment ajouter l’attribution de rôle.
  3. Activez le paramètre Autoriser les services Microsoft approuvés à contourner ce pare-feu dans votre espace de noms Event hubs.
  4. Configurez l’abonnement aux événements qui utilise un hub d’événements comme point de terminaison pour utiliser l’identité managée affectée par le système ou par l’utilisateur.

Activer l’identité managée dans l’espace de noms Event Grid

Pour activer une identité managée affectée par le système dans l’espace de noms Event Grid.

az eventgrid namespace update --resource-group $resource_group --name $namespace --identity {type:systemassigned}

Ajouter une attribution de rôle dans Event Hubs pour l’identité managée Event Grid

  1. Obtenez l’ID du principal d’identité managée du système d’espace de noms Event Grid.

    principalId=$(az eventgrid namespace show --resource-group $resource_group --name $namespace --query identity.principalId -o tsv)
    
  2. Obtenez l’ID de la ressource Event Hubs.

    eventHubResourceId=$(az eventhubs eventhub show --resource-group $resource_group --namespace-name $eventHubsNamespace --name $eventHubsEventHub --query id -o tsv)
    
  3. Ajoutez une attribution de rôle dans Event Hubs pour l’identité managée du système Event Grid.

    az role assignment create --role "Azure Event Hubs Data Sender" --assignee $principalId --scope $eventHubResourceId
    

Créer un abonnement d’événement

Créez un abonnement d’événement de livraison par envoi (push).

event_subscription="<your_event_subscription_name>"
az resource create --api-version 2023-06-01-preview --resource-group $resource_group --namespace Microsoft.EventGrid --resource-type eventsubscriptions --name $event_subscription --parent namespaces/$namespace/topics/$topic --location $location --properties "{\"deliveryConfiguration\":{\"deliveryMode\":\"Push\",\"push\":{\"maxDeliveryCount\":10,\"deliveryWithResourceIdentity\":{\"identity\":{\"type\":\"SystemAssigned\"},\"destination\":{\"endpointType\":\"EventHub\",\"properties\":{\"resourceId\":\"$eventHubResourceId\"}}}}}}"

Envoyer des événements à la rubrique

Maintenant, envoyez un exemple d'événement au sujet de l'espace de noms en suivant les étapes de cette section.

Répertorier les clés d’accès à l’espace de noms

  1. Obtenez les clés d'accès associées à l'espace de noms que vous avez créé. Vous utilisez l’une d’entre elles pour vous authentifier lors de la publication d’événements. Pour répertorier vos clés, vous avez d'abord besoin de l'ID de ressource d'espace de noms complet. Obtenez-le en exécutant la commande suivante :

    namespace_resource_id=$(az eventgrid namespace show -g $resource_group -n $namespace --query "id" --output tsv)
    
  2. Obtenez la première clé de l’espace de noms :

    key=$(az eventgrid namespace list-key -g $resource_group --namespace-name $namespace --query "key1" --output tsv)
    

Publier un événement

  1. Récupérez le nom d’hôte de l’espace de noms. Vous l’utilisez pour composer le point de terminaison HTTP de l’espace de noms auquel les événements sont envoyés. Les opérations suivantes ont d’abord été disponibles dans la version 2023-06-01-preview de l’API.

    publish_operation_uri="https://"$(az eventgrid namespace show -g $resource_group -n $namespace --query "topicsConfiguration.hostname" --output tsv)"/topics/"$topic:publish?api-version=2023-06-01-preview
    
  2. Créez un exemple d'événement conforme à CloudEvents :

    event=' { "specversion": "1.0", "id": "'"$RANDOM"'", "type": "com.yourcompany.order.ordercreatedV2", "source" : "/mycontext", "subject": "orders/O-234595", "time": "'`date +%Y-%m-%dT%H:%M:%SZ`'", "datacontenttype" : "application/json", "data":{ "orderId": "O-234595", "url": "https://yourcompany.com/orders/o-234595"}} '
    

    L’élément data est la charge utile de votre événement. N’importe quel fichier JSON bien construit peut être placé dans ce champ. Consultez les spécifications CloudEvents pour plus d’informations sur les propriétés (également appelées attributs de contexte) qui peuvent être activées dans un événement.

  3. Utilisez CURL pour envoyer l'événement au sujet. CURL est un utilitaire qui envoie des requêtes HTTP.

    curl -X POST -H "Content-Type: application/cloudevents+json" -H "Authorization:SharedAccessKey $key" -d "$event" $publish_operation_uri
    

    Accédez à la page Espace de noms Event Hubs dans le portail Azure, actualisez la page et vérifiez que le compteur de messages entrants dans le graphique indique qu’un événement a été reçu.

    Capture d’écran montrant la page Event Hub avec un graphique affichant la réception d’un événement.

Étapes suivantes

Dans cet article, vous avez créé et configuré l’espace de noms Event Grid et les ressources Event Hubs. Pour obtenir des instructions détaillées sur la réception d’événements à partir d’un hub d’événements, consultez les tutoriels suivants :