Gebeurtenissen leveren aan Azure Event Hubs met behulp van naamruimteonderwerpen - Azure CLI (preview)

Het artikel bevat stapsgewijze instructies voor het publiceren van gebeurtenissen naar Azure Event Grid in de JSON-indeling van CloudEvents en het leveren van deze gebeurtenissen met behulp van het pushleveringsmodel. Om specifiek te zijn, gebruikt u Azure CLI en Curl om gebeurtenissen te publiceren naar een naamruimteonderwerp in Event Grid en deze gebeurtenissen van een gebeurtenisabonnement naar een Event Hubs-handlerbestemming te pushen. Zie het overzicht van pushlevering voor meer informatie over het pushleveringsmodel.

Notitie

  • Naamruimten, naamruimteonderwerpen en gebeurtenisabonnementen die zijn gekoppeld aan naamruimteonderwerpen, zijn in eerste instantie beschikbaar in de volgende regio's: VS - oost, VS - centraal, VS - zuid-centraal, VS - west 2, Azië - oost, Europa - noord, Europa - west, UAE - noord.
  • De Azure CLI Event Grid-extensie biedt nog geen ondersteuning voor naamruimten en een van de resources die deze bevat. We gebruiken de Azure CLI-resource om Event Grid-resources te maken.
  • Azure Event Grid-naamruimten ondersteunen momenteel SAS-token (Shared Access Signatures) en verificatie van toegangssleutels.

Als u geen Azure-abonnement hebt, kunt u een gratis Azure-account maken voordat u begint.

Vereisten

  • Gebruik de Bash-omgeving in Azure Cloud Shell. Zie quickstart voor Bash in Azure Cloud Shell voor meer informatie.

  • Installeer de Azure CLI, indien gewenst, om CLI-referentieopdrachten uit te voeren. Als u in Windows of macOS werkt, kunt u Azure CLI uitvoeren in een Docker-container. Zie De Azure CLI uitvoeren in een Docker-container voor meer informatie.

    • Als u een lokale installatie gebruikt, meldt u zich aan bij de Azure CLI met behulp van de az login opdracht. Volg de stappen die worden weergegeven in de terminal, om het verificatieproces te voltooien. Raadpleeg Aanmelden bij Azure CLI voor aanvullende aanmeldingsopties.

    • Installeer de Azure CLI-extensie bij het eerste gebruik, wanneer u hierom wordt gevraagd. Raadpleeg Extensies gebruiken met Azure CLI voor meer informatie over extensies.

    • Voer az version uit om de geïnstalleerde versie en afhankelijke bibliotheken te vinden. Voer az upgrade uit om te upgraden naar de nieuwste versie.

  • Voor dit artikel is versie 2.0.70 of hoger van Azure CLI vereist. Als u Azure Cloud Shell gebruikt, is de nieuwste versie al geïnstalleerd.

De Event Grid-resourceprovider inschakelen

  1. Als u Event Grid in uw Azure-abonnement nog niet eerder hebt gebruikt, moet u mogelijk de Event Grid-resourceprovider registreren. Voer de volgende opdracht uit om de provider te registreren:

    az provider register --namespace Microsoft.EventGrid
    
  2. Het kan even duren voordat de registratie is voltooid. Voer de volgende opdracht uit om de status te controleren:

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

    Wanneer registrationStateRegistered is, bent u klaar om door te gaan.

Een brongroep maken

Maak een Azure-resourcegroep met de opdracht az group create. U gebruikt deze resourcegroep om alle resources te bevatten die in dit artikel zijn gemaakt.

De algemene stappen voor het gebruik van Cloud Shell voor het uitvoeren van opdrachten zijn:

  • Selecteer Cloud Shell openen om een Azure Cloud Shell-venster in het rechterdeelvenster weer te geven.
  • Kopieer de opdracht en plak deze in het Azure Cloud Shell-venster.
  • Druk op ENTER de opdracht uit te voeren.
  1. Declareer een variabele voor het opslaan van de naam van een Azure-resourcegroep. Geef een naam op voor de resourcegroep door deze te vervangen door <your-resource-group-name> een waarde die u leuk vindt.

    resource_group="<your-resource-group-name>"
    
    location="<your-resource-group-location>"
    
  2. Maak een resourcegroep. Wijzig de locatie naar wens.

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

Een naamruimte maken

Een Event Grid-naamruimte biedt een door de gebruiker gedefinieerd eindpunt waarnaar u uw gebeurtenissen plaatst. In het volgende voorbeeld wordt een naamruimte in uw resourcegroep gemaakt met behulp van Bash in Azure Cloud Shell. De naamruimtenaam moet uniek zijn omdat deze deel uitmaakt van een DNS-vermelding (Domain Name System). Een naamruimtenaam moet voldoen aan de volgende regels:

  • Het moet tussen de 3 en 50 tekens zijn.
  • Het moet regionaal uniek zijn.
  • Alleen toegestane tekens zijn a-z, A-Z, 0-9 en -
  • Het mag niet beginnen met gereserveerde voorvoegsels voor sleutelwoorden zoals Microsoft, System of EventGrid.
  1. Declareer een variabele om de naam voor uw Event Grid-naamruimte op te slaan. Geef een naam op voor de naamruimte door deze te vervangen door <your-namespace-name> een waarde die u leuk vindt.

    namespace="<your-namespace-name>"
    
  2. Een naamruimte maken. Mogelijk wilt u de locatie wijzigen waar deze is geïmplementeerd.

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

Een naamruimteonderwerp maken

Maak een onderwerp dat wordt gebruikt voor het opslaan van alle gebeurtenissen die zijn gepubliceerd naar het naamruimte-eindpunt.

  1. Declareer een variabele om de naam voor uw naamruimteonderwerp op te slaan. Geef een naam op voor het onderwerp van de naamruimte door deze te vervangen door <your-topic-name> een waarde die u leuk vindt.

    topic="<your-topic-name>"
    
  2. Uw naamruimteonderwerp maken:

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

Een nieuwe Event Hubs-resource maken

Maak een Event Hubs-resource die wordt gebruikt als de handlerbestemming voor het pushleveringsabonnement voor de naamruimteonderwerp.

  1. Declareer een variabele om de naam van de Event Hubs-naamruimte te bewaren.

    eventHubsNamespace="<your-event-hubs-namespace-name>"
    
  2. De Event Hubs-naamruimte maken.

    az eventhubs namespace create --resource-group $resource_group --name $eventHubsNamespace --location $location  
    
  3. Declareer een variabele voor de naam van de Event Hub.

    eventHubsEventHub="<your-event-hub-name>"
    
  4. Voer de volgende opdracht uit om een Event Hub te maken in de naamruimte.

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

Gebeurtenissen leveren aan Event Hubs met behulp van een beheerde identiteit

Als u gebeurtenissen wilt leveren aan Event Hubs in uw Event Hubs-naamruimte met behulp van een beheerde identiteit, voert u de volgende stappen uit:

  1. Door het systeem toegewezen of door de gebruiker toegewezen beheerde identiteit inschakelen: naamruimten. Lees verder naar de volgende sectie voor informatie over het inschakelen van beheerde identiteiten met behulp van Azure CLI.
  2. Voeg de identiteit toe aan de rol Azure Event Hubs-gegevenszender in de Event Hubs-naamruimte en lees verder naar de volgende sectie om te zien hoe u de roltoewijzing toevoegt.
  3. Schakel de vertrouwde Microsoft-services toestaan in om deze firewallinstelling in uw Event Hubs-naamruimte te omzeilen.
  4. Configureer het gebeurtenisabonnement dat gebruikmaakt van een Event Hub als eindpunt om de door het systeem toegewezen of door de gebruiker toegewezen beheerde identiteit te gebruiken.

Notitie

Het leveren van gebeurtenissen aan Azure Event Hubs is momenteel in preview.

Beheerde identiteit inschakelen in de Event Grid-naamruimte

Schakel door het systeem toegewezen beheerde identiteit in de Event Grid-naamruimte in.

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

Roltoewijzing toevoegen in Event Hubs voor de beheerde Identiteit van Event Grid

  1. Haal de principal-id van de Event Grid-naamruimtesysteem beheerde identiteit op.

    principalId=$(az eventgrid namespace show --resource-group $resource_group --name $namespace --query identity.principalId -o tsv)
    
  2. Haal de Resource-id van Event Hubs op.

    eventHubResourceId=$(az eventhubs eventhub show --resource-group $resource_group --namespace-name $eventHubsNamespace --name $eventHubsEventHub --query id -o tsv)
    
  3. Voeg roltoewijzing toe in Event Hubs voor de door het Event Grid-systeem beheerde identiteit.

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

Een gebeurtenisabonnement maken

Maak een nieuw abonnement voor pushleveringsgebeurtenissen.

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\"}}}}}}"

Gebeurtenissen verzenden naar uw onderwerp

Verzend nu een voorbeeldgebeurtenis naar het onderwerp van de naamruimte door de stappen in deze sectie te volgen.

Toegangssleutels voor naamruimte weergeven

  1. Haal de toegangssleutels op die zijn gekoppeld aan de naamruimte die u hebt gemaakt. U gebruikt een van deze items om te verifiëren bij het publiceren van gebeurtenissen. Als u uw sleutels wilt weergeven, hebt u eerst de volledige resource-id van de naamruimte nodig. Haal deze op door de volgende opdracht uit te voeren:

    namespace_resource_id=$(az eventgrid namespace show -g $resource_group -n $namespace --query "id" --output tsv)
    
  2. Haal de eerste sleutel op uit de naamruimte:

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

Een gebeurtenis publiceren

  1. Haal de hostnaam van de naamruimte op. U gebruikt deze om het HTTP-eindpunt voor de naamruimte op te stellen waarnaar gebeurtenissen worden verzonden. De volgende bewerkingen waren voor het eerst beschikbaar met api-versie 2023-06-01-preview.

    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. Maak een voorbeeldgebeurtenis die compatibel is met 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"}} '
    

    Het data element is de nettolading van uw gebeurtenis. Elke juist opgemaakte JSON kan in dit veld worden ingevoerd. Zie de specificaties van CloudEvents voor meer informatie over eigenschappen (ook wel contextkenmerken genoemd) die in een gebeurtenis kunnen worden gebruikt.

  3. Gebruik CURL om de gebeurtenis naar het onderwerp te verzenden. CURL is een hulpprogramma waarmee HTTP-aanvragen worden verzonden.

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

    Navigeer naar de pagina Event Hubs-naamruimte in Azure Portal, vernieuw de pagina en controleer of de teller voor inkomende berichten in de grafiek aangeeft dat er een gebeurtenis is ontvangen.

    Schermopname van de Event Hub-pagina met een grafiek met een gebeurtenis die is ontvangen.

Volgende stappen

In dit artikel hebt u de Event Grid-naamruimte en Event Hubs-resources gemaakt en geconfigureerd. Zie de volgende zelfstudies voor stapsgewijze instructies voor het ontvangen van gebeurtenissen van een Event Hub: