Leverera händelser till webhooks med hjälp av namnområdesämnen – Azure CLI (förhandsversion)
Artikeln innehåller stegvisa instruktioner för att publicera händelser till Azure Event Grid i CloudEvents JSON-format och leverera dessa händelser med hjälp av push-leveransmodellen. För att vara specifik använder du Azure CLI och Curl för att publicera händelser till ett namnområdesavsnitt i Event Grid och push-överföra dessa händelser från en händelseprenumeration till ett webhookhanterarmål. Mer information om push-leveransmodellen finns i Översikt över push-leverans.
Kommentar
Azure CLI Event Grid-tillägget har ännu inte stöd för namnområden och någon av de resurser som det innehåller. Vi använder Azure CLI-resursen för att skapa Event Grid-resurser.
Om du inte har en Azure-prenumeration skapar du ett kostnadsfritt Azure-konto innan du börjar.
Förutsättningar
Använd Bash-miljön i Azure Cloud Shell. Mer information finns i Snabbstart för Bash i Azure Cloud Shell.
Om du föredrar att köra CLI-referenskommandon lokalt installerar du Azure CLI. Om du kör i Windows eller macOS kan du köra Azure CLI i en Docker-container. Mer information finns i Så här kör du Azure CLI i en Docker-container.
Om du använder en lokal installation loggar du in på Azure CLI med hjälp
az login
av kommandot . Slutför autentiseringsprocessen genom att följa stegen som visas i terminalen. Andra inloggningsalternativ finns i Logga in med Azure CLI.När du uppmanas att installera Azure CLI-tillägget vid första användningen. Mer information om tillägg finns i Använda tillägg med Azure CLI.
Kör az version om du vill hitta versionen och de beroende bibliotek som är installerade. Om du vill uppgradera till den senaste versionen kör du az upgrade.
Den här artikeln kräver version 2.0.70 eller senare av Azure CLI. Om du använder Azure Cloud Shell är den senaste versionen redan installerad.
Aktivera Event Grid-resursprovidern
Om du inte tidigare har använt Event Grid i din Azure-prenumeration kan du behöva registrera Event Grid-resursprovidern. Registrera providern genom att köra följande kommando:
az provider register --namespace Microsoft.EventGrid
Det kan ta en stund innan registreringen är klar. Kontrollera statusen genom att köra följande kommando:
az provider show --namespace Microsoft.EventGrid --query "registrationState"
När
registrationState
ärRegistered
kan du fortsätta.
Skapa en resursgrupp
Skapa en Azure-resursgrupp med kommandot az group create. Du använder den här resursgruppen för att innehålla alla resurser som skapats i den här artikeln.
De allmänna stegen för att använda Cloud Shell för att köra kommandon är:
- Välj Öppna Cloud Shell för att se ett Azure Cloud Shell-fönster i den högra rutan.
- Kopiera kommandot och klistra in det i Azure Cloud Shell-fönstret.
- Kör kommandot genom att trycka på RETUR.
Deklarera en variabel som innehåller namnet på en Azure-resursgrupp. Ange ett namn för resursgruppen genom att
<your-resource-group-name>
ersätta med ett värde som du gillar.resource_group="<your-resource-group-name>"
location="<your-resource-group-location>"
Skapa en resursgrupp. Ändra platsen efter behov.
az group create --name $resource_group --location $location
Skapa ett namnområde
Ett Event Grid-namnområde innehåller en användardefinierad slutpunkt som du publicerar dina händelser till. I följande exempel skapas ett namnområde i resursgruppen med bash i Azure Cloud Shell. Namnområdesnamnet måste vara unikt eftersom det ingår i en DNS-post (Domain Name System). Ett namnområdesnamn bör uppfylla följande regler:
- Den ska vara mellan 3 och 50 tecken.
- Den bör vara regionalt unik.
- Endast tillåtna tecken är a-z, A-Z, 0-9 och -
- Det bör inte börja med reserverade nyckelordsprefix som
Microsoft
,System
ellerEventGrid
.
Deklarera en variabel för att lagra namnet på Event Grid-namnområdet. Ange ett namn för namnområdet genom att
<your-namespace-name>
ersätta med ett värde som du gillar.namespace="<your-namespace-name>"
Skapa ett namnområde. Du kanske vill ändra platsen där den distribueras.
az eventgrid namespace create -g $resource_group -n $namespace -l $location
Skapa ett namnområdesavsnitt
Skapa ett ämne som används för att lagra alla händelser som publicerats till namnområdesslutpunkten.
Deklarera en variabel som innehåller namnet på ditt namnområdesämne. Ange ett namn för namnområdesavsnittet genom att
<your-topic-name>
ersätta med ett värde som du gillar.topic="<your-topic-name>"
Skapa ditt namnområdesämne:
az eventgrid namespace topic create -g $resource_group -n $topic --namespace-name $namespace
Skapa en slutpunkt för meddelanden
Innan vi prenumererar på namnområdesavsnittet ska vi skapa slutpunkten för händelsemeddelandet. Slutpunkten utför vanligtvis åtgärder baserat på informationen om händelsen. För att förenkla den här snabbstarten distribuerar du en fördefinierad webbapp som visar händelsemeddelandena. Den distribuerade lösningen innehåller en App Service-plan,en webbapp för App Service och källkod från GitHub.
Kopiera följande kommando, ange ett namn för webbappen (Exempel på Loggboken i Event Grid) och tryck på RETUR för att köra kommandot. Ersätt
<your-site-name>
med ett unikt namn för din webbapp. Webbappnamnet måste vara unikt eftersom det är en del av DNS-posten.sitename="<your-site-name>"
az deployment group create
Kör för att distribuera webbappen med hjälp av en Azure Resource Manager-mall.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
Distributionen kan ta några minuter att slutföra. Efter distributionen har slutförts kan du visa webbappen för att kontrollera att den körs. I en webbläsare navigerar du till: https://<your-site-name>.azurewebsites.net
. Webbplatsen bör visas utan några meddelanden.
Leverera händelser till Webhook för Azure Event Grid Viewer
Skapa en push-leveranshändelseprenumeration till namnområdet med webhooken för Azure Event Grid Viewer.
Definiera en variabel som innehåller namnet på händelseprenumerationen.
event_subscription="<your_event_subscription_name>"
Ersätt
EVENTGRIDWEBSITENAME
med namnet på Event Grid Viewer-webbplatsen. Exempel: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\"}}}}}"
Skicka händelser till ditt ämne
Skicka nu en exempelhändelse till namnområdesavsnittet genom att följa stegen i det här avsnittet.
Visa namnområdesåtkomstnycklar
Hämta de åtkomstnycklar som är associerade med det namnområde som du skapade. Du använder en av dem för att autentisera när du publicerar händelser. Om du vill visa en lista över dina nycklar behöver du det fullständiga namnområdesresurs-ID:t först. Hämta det genom att köra följande kommando:
namespace_resource_id=$(az eventgrid namespace show -g $resource_group -n $namespace --query "id" --output tsv)
Hämta den första nyckeln från namnområdet:
key=$(az eventgrid namespace list-key -g $resource_group --namespace-name $namespace --query "key1" --output tsv)
Publicera en händelse
Hämta värdnamnet för namnområdet. Du använder den för att skriva namnområdets HTTP-slutpunkt till vilken händelser skickas. Följande åtgärder var först tillgängliga med API-versionen
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
Skapa en CloudEvents-exempelkompatibel händelse:
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"}} '
Elementet
data
är nyttolasten för din händelse. All välformulerad JSON kan stå i det här fältet. Mer information om egenskaper (även kallade kontextattribut) som kan användas i en händelse finns i CloudEvents-specifikationerna .Använd CURL för att skicka händelsen till ämnet. CURL är ett verktyg som skickar HTTP-förfrågningar.
curl -X POST -H "Content-Type: application/cloudevents+json" -H "Authorization:SharedAccessKey $key" -d "$event" $publish_operation_uri
Kontrollera att Azure Event Grid Viewer tog emot händelsen
Kontrollera att Azure Event Grid Viewer-webbappen visar de händelser som den tog emot från Event Grid.
Relaterat innehåll
I den här snabbstarten använde du en webhook som händelsehanterare. Snabbstart som använder en Azure-händelsehubb som händelsehanterare finns i Avsnittet om att leverera händelser till Azure Event Hubs med hjälp av namnområdesavsnitt.