Leverera händelser till Azure Event Hubs med hjälp av namnområdesämnen – Azure CLI

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 Event Hubs-hanteringsmå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

Aktivera Event Grid-resursprovidern

  1. 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
    
  2. 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 är Registered 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.
  1. 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>"
    
  2. 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, Systemeller EventGrid.
  1. 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>"
    
  2. 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.

  1. 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>"
    
  2. Skapa ditt namnområdesämne:

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

Skapa en ny Event Hubs-resurs

Skapa en Event Hubs-resurs som används som hanteringsmål för push-leveransprenumerationen för namnområdesämnet.

  1. Deklarera en variabel som ska innehålla Namnområdesnamnet för Event Hubs.

    eventHubsNamespace="<your-event-hubs-namespace-name>"
    
  2. Skapa Event Hubs-namnrymden.

    az eventhubs namespace create --resource-group $resource_group --name $eventHubsNamespace --location $location  
    
  3. Deklarera en variabel som ska innehålla händelsehubbens namn.

    eventHubsEventHub="<your-event-hub-name>"
    
  4. Kör följande kommando för att skapa en händelsehubb i namnområdet.

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

Leverera händelser till Event Hubs med hanterad identitet

Följ dessa steg för att leverera händelser till händelsehubbar i event hubs-namnområdet med hjälp av hanterad identitet:

  1. Aktivera systemtilldelad eller användartilldelad hanterad identitet: namnområden. Fortsätt läsa till nästa avsnitt för att hitta hur du aktiverar hanterad identitet med hjälp av Azure CLI.
  2. Lägg till identiteten i rollen Azure Event Hubs Data Sender i Event Hubs-namnområdet. Fortsätt läsa i nästa avsnitt för att se hur du lägger till rolltilldelningen.
  3. Aktivera inställningen Tillåt betrodda Microsoft-tjänster att kringgå den här brandväggsinställningen i event hubs-namnområdet.
  4. Konfigurera händelseprenumerationen som använder en händelsehubb som slutpunkt för att använda den systemtilldelade eller användartilldelade hanterade identiteten.

Aktivera hanterad identitet i Event Grid-namnområdet

Aktivera systemtilldelad hanterad identitet i Event Grid-namnområdet.

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

Lägga till rolltilldelning i Event Hubs för den hanterade Event Grid-identiteten

  1. Hämta Event Grid-namnrymdens systemhanterade identitetshuvudnamns-ID.

    principalId=$(az eventgrid namespace show --resource-group $resource_group --name $namespace --query identity.principalId -o tsv)
    
  2. Hämta event hubs-resurs-ID för händelsehubben.

    eventHubResourceId=$(az eventhubs eventhub show --resource-group $resource_group --namespace-name $eventHubsNamespace --name $eventHubsEventHub --query id -o tsv)
    
  3. Lägg till rolltilldelning i Event Hubs för event grid-systemets hanterade identitet.

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

Skapa en händelseprenumeration

Skapa en ny push-leveranshändelseprenumeration.

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

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

  1. 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)
    
  2. 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

  1. 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
    
  2. 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 .

  3. 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
    

    Gå till sidan Event Hubs-namnområde i Azure-portalen, uppdatera sidan och kontrollera att räknaren för inkommande meddelanden i diagrammet anger att en händelse har tagits emot.

    Skärmbild som visar sidan Händelsehubb med ett diagram som visar att en händelse har tagits emot.

Nästa steg

I den här artikeln skapade och konfigurerade du Event Grid-namnområdet och Event Hubs-resurserna. Stegvisa instruktioner för att ta emot händelser från en händelsehubb finns i följande självstudier: