Dostarczanie zdarzeń do usługi Azure Event Hubs przy użyciu tematów przestrzeni nazw — interfejs wiersza polecenia platformy Azure (wersja zapoznawcza)

Artykuł zawiera instrukcje krok po kroku dotyczące publikowania zdarzeń w usłudze Azure Event Grid w formacie JSON cloudEvents i dostarczania tych zdarzeń przy użyciu modelu dostarczania wypychanego. Aby być konkretnym, należy użyć interfejsu wiersza polecenia platformy Azure i narzędzia Curl do publikowania zdarzeń w temacie przestrzeni nazw w usłudze Event Grid i wypychania tych zdarzeń z subskrypcji zdarzeń do miejsca docelowego programu obsługi usługi Event Hubs. Aby uzyskać więcej informacji na temat modelu dostarczania wypychanych, zobacz Push delivery overview (Omówienie dostarczania wypychanych).

Uwaga

  • Przestrzenie nazw, tematy przestrzeni nazw i subskrypcje zdarzeń skojarzone z tematami przestrzeni nazw są początkowo dostępne w następujących regionach: Wschodnie stany USA, Środkowe stany USA, Południowo-środkowe stany USA, Zachodnie stany USA 2, Azja Wschodnia, Azja Południowo-Wschodnia, Europa Północna, Europa Zachodnia, Zjednoczone Emiraty Arabskie.
  • Rozszerzenie usługi Event Grid interfejsu wiersza polecenia platformy Azure nie obsługuje jeszcze przestrzeni nazw ani żadnych zawartych w nim zasobów. Użyjemy zasobu interfejsu wiersza polecenia platformy Azure do utworzenia zasobów usługi Event Grid.
  • Przestrzenie nazw usługi Azure Event Grid obecnie obsługują token sygnatury dostępu współdzielonego i uwierzytelnianie kluczy dostępu.

Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto platformy Azure.

Wymagania wstępne

Włączanie dostawcy zasobów usługi Event Grid

  1. Jeśli usługa Event Grid nie była wcześniej używana w ramach subskrypcji platformy Azure, może być konieczne zarejestrowanie dostawcy zasobów usługi Event Grid. Uruchom następujące polecenie, aby zarejestrować dostawcę:

    az provider register --namespace Microsoft.EventGrid
    
  2. Ukończenie rejestracji może zająć trochę czasu. Aby sprawdzić stan, uruchom następujące polecenie:

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

    Gdy właściwość registrationState uzyska wartość Registered, można kontynuować.

Tworzenie grupy zasobów

Grupę zasobów platformy Azure można utworzyć za pomocą polecenia az group create. Ta grupa zasobów służy do przechowywania wszystkich zasobów utworzonych w tym artykule.

Ogólne kroki używania usługi Cloud Shell do uruchamiania poleceń to:

  • Wybierz pozycję Otwórz usługę Cloud Shell, aby wyświetlić okno usługi Azure Cloud Shell w okienku po prawej stronie.
  • Skopiuj polecenie i wklej je w oknie usługi Azure Cloud Shell.
  • Naciśnij klawisz ENTER, aby uruchomić to polecenie.
  1. Zadeklaruj zmienną do przechowywania nazwy grupy zasobów platformy Azure. Określ nazwę grupy zasobów, zastępując <your-resource-group-name> ciąg wartością, którą chcesz.

    resource_group="<your-resource-group-name>"
    
    location="<your-resource-group-location>"
    
  2. Utwórz grupę zasobów. Zmień lokalizację w miarę dopasowania.

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

Tworzenie przestrzeni nazw

Przestrzeń nazw usługi Event Grid udostępnia zdefiniowany przez użytkownika punkt końcowy, do którego są ogłaszane zdarzenia. Poniższy przykład tworzy przestrzeń nazw w grupie zasobów przy użyciu powłoki Bash w usłudze Azure Cloud Shell. Nazwa przestrzeni nazw musi być unikatowa, ponieważ jest częścią wpisu systemu nazw domen (DNS). Nazwa przestrzeni nazw powinna spełniać następujące reguły:

  • Powinna zawierać się od 3 do 50 znaków.
  • Powinna być unikatowa w regionie.
  • Dozwolone znaki to a-z, A-Z, 0-9 i -
  • Nie powinien zaczynać się od zarezerwowanych prefiksów słów kluczowych, takich jak Microsoft, System lub EventGrid.
  1. Zadeklaruj zmienną do przechowywania nazwy przestrzeni nazw usługi Event Grid. Określ nazwę przestrzeni nazw, zastępując ciąg <your-namespace-name> wartością, którą chcesz.

    namespace="<your-namespace-name>"
    
  2. Tworzenie przestrzeni nazw. Możesz zmienić lokalizację, w której została wdrożona.

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

Tworzenie tematu przestrzeni nazw

Utwórz temat używany do przechowywania wszystkich zdarzeń publikowanych w punkcie końcowym przestrzeni nazw.

  1. Zadeklaruj zmienną do przechowywania nazwy tematu przestrzeni nazw. Określ nazwę tematu przestrzeni nazw, zastępując ciąg <your-topic-name> wartością, którą chcesz.

    topic="<your-topic-name>"
    
  2. Utwórz temat przestrzeni nazw:

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

Tworzenie nowego zasobu usługi Event Hubs

Utwórz zasób usługi Event Hubs, który jest używany jako miejsce docelowe programu obsługi dla subskrypcji dostarczania wypychanego tematu przestrzeni nazw.

  1. Zadeklaruj zmienną do przechowywania nazwy przestrzeni nazw usługi Event Hubs.

    eventHubsNamespace="<your-event-hubs-namespace-name>"
    
  2. Tworzenie przestrzeni nazw usługi Event Hubs.

    az eventhubs namespace create --resource-group $resource_group --name $eventHubsNamespace --location $location  
    
  3. Zadeklaruj zmienną do przechowywania nazwy centrum zdarzeń.

    eventHubsEventHub="<your-event-hub-name>"
    
  4. Uruchom następujące polecenie, aby utworzyć centrum zdarzeń w przestrzeni nazw.

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

Dostarczanie zdarzeń do usługi Event Hubs przy użyciu tożsamości zarządzanej

Aby dostarczać zdarzenia do centrów zdarzeń w przestrzeni nazw usługi Event Hubs przy użyciu tożsamości zarządzanej, wykonaj następujące kroki:

  1. Włącz tożsamość zarządzaną przypisaną przez system lub przypisaną przez użytkownika: przestrzenie nazw. Przejdź do następnej sekcji, aby dowiedzieć się, jak włączyć tożsamość zarządzaną przy użyciu interfejsu wiersza polecenia platformy Azure.
  2. Dodaj tożsamość do roli Nadawca danych usługi Azure Event Hubs w przestrzeni nazw usługi Event Hubs, kontynuuj czytanie do następnej sekcji, aby dowiedzieć się, jak dodać przypisanie roli.
  3. Włącz ustawienie Zezwalaj na zaufane usługi firmy Microsoft, aby pominąć to ustawienie zapory w przestrzeni nazw usługi Event Hubs.
  4. Skonfiguruj subskrypcję zdarzeń, która używa centrum zdarzeń jako punktu końcowego do używania tożsamości zarządzanej przypisanej przez system lub przypisanej przez użytkownika.

Uwaga

Dostarczanie zdarzeń do usługi Azure Event Hubs jest obecnie dostępne w wersji zapoznawczej.

Włączanie tożsamości zarządzanej w przestrzeni nazw usługi Event Grid

Włącz tożsamość zarządzaną przypisaną przez system w przestrzeni nazw usługi Event Grid.

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

Dodawanie przypisania roli w usłudze Event Hubs dla tożsamości zarządzanej usługi Event Grid

  1. Pobierz identyfikator podmiotu zabezpieczeń tożsamości zarządzanej systemu przestrzeni nazw usługi Event Grid.

    principalId=$(az eventgrid namespace show --resource-group $resource_group --name $namespace --query identity.principalId -o tsv)
    
  2. Pobierz identyfikator zasobu centrum zdarzeń usługi Event Hubs.

    eventHubResourceId=$(az eventhubs eventhub show --resource-group $resource_group --namespace-name $eventHubsNamespace --name $eventHubsEventHub --query id -o tsv)
    
  3. Dodaj przypisanie roli w usłudze Event Hubs dla tożsamości zarządzanej systemu usługi Event Grid.

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

Tworzenie subskrypcji zdarzeń

Utwórz nową subskrypcję zdarzeń dostarczania wypychanego.

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

Wysyłanie zdarzeń do tematu

Teraz wyślij przykładowe zdarzenie do tematu przestrzeni nazw, wykonując kroki opisane w tej sekcji.

Wyświetlanie listy kluczy dostępu do przestrzeni nazw

  1. Pobierz klucze dostępu skojarzone z utworzoną przestrzenią nazw. Jeden z nich służy do uwierzytelniania podczas publikowania zdarzeń. Aby wyświetlić listę kluczy, musisz najpierw uzyskać pełny identyfikator zasobu przestrzeni nazw. Pobierz go, uruchamiając następujące polecenie:

    namespace_resource_id=$(az eventgrid namespace show -g $resource_group -n $namespace --query "id" --output tsv)
    
  2. Pobierz pierwszy klucz z przestrzeni nazw:

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

Publikowanie zdarzenia

  1. Pobierz nazwę hosta przestrzeni nazw. Służy do tworzenia punktu końcowego HTTP przestrzeni nazw, do którego są wysyłane zdarzenia. Następujące operacje były najpierw dostępne w wersji 2023-06-01-previewinterfejsu API .

    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. Utwórz przykładowe zdarzenie zgodne z rozwiązaniem 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"}} '
    

    Element data to ładunek zdarzenia. W tym polu można umieścić dowolną poprawnie sformułowaną zawartość JSON. Aby uzyskać więcej informacji na temat właściwości (nazywanych również atrybutami kontekstu), które mogą przejść w zdarzeniu, zobacz specyfikacje CloudEvents .

  3. Użyj narzędzia CURL, aby wysłać zdarzenie do tematu. CURL to narzędzie, które wysyła żądania HTTP.

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

    Przejdź do strony Przestrzeń nazw usługi Event Hubs w witrynie Azure Portal, odśwież stronę i sprawdź, czy licznik komunikatów przychodzących na wykresie wskazuje, że zdarzenie zostało odebrane.

    Zrzut ekranu przedstawiający stronę centrum zdarzeń z wykresem przedstawiającym odebrane zdarzenie.

Następne kroki

W tym artykule utworzono i skonfigurowano przestrzeń nazw usługi Event Grid oraz zasoby usługi Event Hubs. Aby uzyskać instrukcje krok po kroku dotyczące odbierania zdarzeń z centrum zdarzeń, zobacz następujące samouczki: