Gebeurtenissen leveren aan webhooks 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 vanuit een gebeurtenisabonnement naar een webhookhandlerbestemming 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
Het eindpunt van een bericht maken
Voordat u zich abonneert op het onderwerp van de naamruimte, gaan we het eindpunt voor het gebeurtenisbericht maken. Het eindpunt onderneemt normaal gesproken actie op basis van de gebeurtenisgegevens. Ter vereenvoudiging van deze quickstart implementeert u een vooraf gemaakte web-app die de gebeurtenisberichten weergeeft. De geïmplementeerde oplossing omvat een App Service-plan, een App Service-web-app en broncode van GitHub.
Kopieer de volgende opdracht, geef een naam op voor de web-app (Event Grid Viewer-voorbeeld) en druk op Enter om de opdracht uit te voeren. Vervang
<your-site-name>
door een unieke naam voor de web-app. De naam van de web-app moet uniek zijn omdat deze deel uitmaakt van de DNS-vermelding.sitename="<your-site-name>"
Voer de
az deployment group create
opdracht uit om de web-app te implementeren met behulp van een Azure Resource Manager-sjabloon.az deployment group create \ --resource-group $resource_group \ --template-uri "https://raw.githubusercontent.com/Azure-Samples/azure-event-grid-viewer/master/azuredeploy.json" \ --parameters siteName=$sitename hostingPlanName=viewerhost
De implementatie kan enkele minuten duren. Controleer of uw web-app wordt uitgevoerd nadat de implementatie is voltooid. Navigeer in een webbrowser naar: https://<your-site-name>.azurewebsites.net
. Op de site zouden momenteel geen berichten moeten wijn weergeven.
Gebeurtenissen leveren aan de Azure Event Grid Viewer-webhook
Maak een gebeurtenisabonnement voor pushlevering naar de naamruimte met behulp van de webhook voor Azure Event Grid Viewer.
Definieer een variabele voor het opslaan van de naam van het gebeurtenisabonnement.
event_subscription="<your_event_subscription_name>"
Vervang door
EVENTGRIDWEBSITENAME
de naam van de Event Grid Viewer-website. Voorbeeld:contosoegridviewer
.az resource create --api-version 2024-06-01-preview --resource-group $resource_group --namespace Microsoft.EventGrid --resource-type eventsubscriptions --name $event_subscription --parent namespaces/$namespace/topics/$topic --location $location --properties "{\"eventDeliverySchema\": \"CloudEventSchemaV1_0\",\"deliveryConfiguration\":{\"deliveryMode\":\"Push\",\"push\":{\"destination\":{\"endpointType\":\"WebHook\",\"properties\":{\"endpointUrl\":\"https:\/\/$sitename.azurewebsites.net\/api/updates\"}}}}}"
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
Controleer of Azure Event Grid Viewer de gebeurtenis heeft ontvangen
Controleer of in de Azure Event Grid Viewer-web-app de gebeurtenissen worden weergegeven die zijn ontvangen van Event Grid.
Gerelateerde inhoud
In deze quickstart hebt u een webhook gebruikt als gebeurtenis-handler. Zie Gebeurtenissen bezorgen bij Azure Event Hubs met behulp van naamruimteonderwerpen voor quickstarts die een Azure Event Hub als gebeurtenis-handler gebruiken.