Gebeurtenissen leveren aan Azure Event Hubs met behulp van naamruimteonderwerpen - Azure CLI
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
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.
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
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
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
registrationState
Registered
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.
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>"
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 voorvoegsels voor gereserveerde sleutelwoorden zoals
Microsoft
,System
ofEventGrid
.
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>"
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.
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>"
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.
Declareer een variabele om de naam van de Event Hubs-naamruimte te bewaren.
eventHubsNamespace="<your-event-hubs-namespace-name>"
De Event Hubs-naamruimte maken.
az eventhubs namespace create --resource-group $resource_group --name $eventHubsNamespace --location $location
Declareer een variabele voor de naam van de Event Hub.
eventHubsEventHub="<your-event-hub-name>"
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:
- 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.
- 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.
- Schakel de vertrouwde Microsoft-services toestaan in om deze firewallinstelling in uw Event Hubs-naamruimte te omzeilen.
- 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.
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
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)
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)
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
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)
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
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
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.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.
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: