Udostępnij za pośrednictwem


Dostarczanie zdarzeń do elementów webhook 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 elementów webhook. Aby uzyskać więcej informacji na temat modelu dostarczania wypychanych, zobacz Push delivery overview (Omówienie dostarczania wypychanych).

Uwaga

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.

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 należy rozpoczynać od zarezerwowanych prefiksów słów kluczowych, takich jak Microsoft, Systemlub 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 punktu końcowego komunikatów

Przed subskrybowaniem tematu przestrzeni nazw utwórzmy punkt końcowy komunikatu o zdarzeniu. Zazwyczaj w punkcie końcowym akcje są wykonywane na podstawie danych zdarzenia. Aby uprościć ten przewodnik Szybki start, wdrożysz wstępnie utworzoną aplikację internetową, która wyświetla komunikaty o zdarzeniach. Wdrożone rozwiązanie zawiera plan usługi App Service, aplikację internetową usługi App Service i kod źródłowy z repozytorium GitHub.

  1. Skopiuj następujące polecenie, określ nazwę aplikacji internetowej (przykład podglądu usługi Event Grid) i naciśnij klawisz ENTER, aby uruchomić polecenie. Zastąp <your-site-name> unikatową nazwą aplikacji internetowej. Nazwa aplikacji internetowej musi być unikatowa, ponieważ stanowi część wpisu DNS.

    sitename="<your-site-name>"
    
  2. Uruchom polecenie , az deployment group create aby wdrożyć aplikację internetową przy użyciu szablonu usługi Azure Resource Manager.

    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
    

Ukończenie wdrożenia może potrwać kilka minut. Po pomyślnym wdrożeniu należy wyświetlić aplikację sieci Web i upewnić się, że jest uruchomiona. W przeglądarce internetowej przejdź do: https://<your-site-name>.azurewebsites.net. Powinna być widoczna witryna internetowa bez żadnych aktualnie wyświetlanych komunikatów.

Dostarczanie zdarzeń do elementu webhook podglądu usługi Azure Event Grid

Utwórz subskrypcję zdarzeń dostarczania wypychanego do przestrzeni nazw przy użyciu elementu webhook podglądu usługi Azure Event Grid.

  1. Zdefiniuj zmienną do przechowywania nazwy subskrypcji zdarzeń.

    event_subscription="<your_event_subscription_name>"
    
  2. Zastąp EVENTGRIDWEBSITENAME ciąg nazwą witryny sieci Web Podgląd usługi Event Grid. Na przykład: 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\"}}}}}"
    

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
    

Sprawdź, czy podgląd usługi Azure Event Grid odebrał zdarzenie

Sprawdź, czy aplikacja internetowa Podgląd usługi Azure Event Grid wyświetla zdarzenia odebrane z usługi Event Grid.

Zrzut ekranu przedstawiający podgląd usługi Azure Event Grid z przykładowym odebranym zdarzeniem.

W tym przewodniku Szybki start użyto elementu webhook jako procedury obsługi zdarzeń. Aby uzyskać przewodnik Szybki start, który używa centrum zdarzeń platformy Azure jako procedury obsługi zdarzeń, zobacz Dostarczanie zdarzeń do usługi Azure Event Hubs przy użyciu tematów przestrzeni nazw.