Szybki start: kierowanie zdarzeń niestandardowych do punktu końcowego sieci Web za pomocą Azure CLI i Event Grid

W tym szybkim starcie używasz Azure CLI, aby utworzyć niestandardowy temat w Azure Event Grid, subskrybować ten temat i wywołać przykładowe zdarzenie, aby zobaczyć wynik.

Zazwyczaj użytkownik wysyła zdarzenia do punktu końcowego, w którym następuje przetwarzanie danych zdarzenia i są wykonywane akcje. Aby jednak uprościć ten szybki start, wysyłasz przykładowe zdarzenia do aplikacji webowej, która zbiera i wyświetla wiadomości. Po zakończeniu zobaczysz dane zdarzenia w aplikacji webowej, co pokazano na poniższym obrazku:

Zrzut ekranu przedstawiający przykład podglądu usługi Event Grid z przykładowym zdarzeniem.

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

Wymagania wstępne

  • Ten szybki start wymaga wersji 2.0.70 lub nowszej Azure CLI. Jeśli używasz usługi Azure Cloud Shell, najnowsza wersja jest już zainstalowana.
  • Jeśli jesteś nowy w Azure Event Grid, zobacz What's Azure Event Grid, aby zobaczyć przegląd usługi przed rozpoczęciem tego szybkiego startu.

Tworzenie grupy zasobów

Tematy Event Grid to zasoby Azure, które musisz umieścić w grupie zasobów Azure. Grupa zasobów to logiczna kolekcja, do której wdrażasz i zarządzasz zasobami Azure.

Utwórz grupę zasobów za pomocą polecenia az group create. Poniższy przykład obejmuje tworzenie grupy zasobów o nazwie gridResourceGroup w lokalizacji westus2. Zmień nazwę grupy zasobów i lokalizację, jeśli chcesz.

az group create --name gridResourceGroup --location westus2

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

  1. Jeśli po raz pierwszy używasz usługi Event Grid 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 tematu niestandardowego

Temat usługi Event Grid zawiera punkt końcowy zdefiniowany przez użytkownika, do którego są ogłaszane zdarzenia. Poniższy przykład tworzy niestandardowy temat w Twojej grupie zasobów za pomocą Bash w Azure Cloud Shell. Zamień <your-topic-name> na unikatową nazwę tematu. Niestandardowa nazwa tematu musi być unikalna, ponieważ jest częścią wpisu w systemie nazw domen (DNS). Ponadto musi mieć od 3 do 50 znaków i zawierać tylko wartości a-z, a-z, 0-9 oraz "-"

  1. Skopiuj następujące polecenie, podaj nazwę tematu i wybierz Enter , aby wykonać polecenie.

    topicname=<your-topic-name>
    
  2. Użyj polecenia , az eventgrid topic create aby utworzyć temat niestandardowy.

    az eventgrid topic create --name $topicname -l westus2 -g gridResourceGroup
    

Tworzenie punktu końcowego komunikatów

Przed zasubskrybowaniu tematu niestandardowego utwórz punkt końcowy dla komunikatu o zdarzeniu. Zazwyczaj w punkcie końcowym akcje są wykonywane na podstawie danych zdarzenia. Aby uprościć ten szybki start, wdroż gotową aplikację webową , która pokazuje komunikaty zdarzeń. 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, podaj nazwę aplikacji webowej (Event Grid Viewer sample) i wybierz Enter , aby wykonać 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 aplikację az deployment group create webową za pomocą szablonu Azure Resource Manager.

    az deployment group create \
      --resource-group gridResourceGroup \
      --template-uri "https://raw.githubusercontent.com/Azure-Samples/azure-event-grid-viewer/main/azuredeploy.json" \
      --parameters siteName=$sitename hostingPlanName=viewerhost
    

Ukończenie wdrożenia może potrwać kilka minut. Po pomyślnym wdrożeniu wyświetl aplikację internetową, aby upewnić się, że jest uruchomiona. W przeglądarce sieci Web przejdź do: https://<your-site-name>.azurewebsites.net

Powinieneś zobaczyć stronę bez żadnych wyświetlanych komunikatów.

Subskrybowanie tematu niestandardowego

Subskrybujesz temat usługi Event Grid, aby poinformować usługę Event Grid o zdarzeniach, które mają być śledzone i gdzie mają być wysyłane te zdarzenia. Poniższy przykład ilustruje subskrybowanie utworzonego tematu niestandardowego i przekazanie adresu URL z aplikacji internetowej jako punktu końcowego dla powiadomień o zdarzeniach.

Punkt końcowy dla aplikacji internetowej musi zawierać sufiks /api/updates/.

  1. Skopiuj poniższe polecenie, zastąp $sitename go nazwą aplikacji webowej utworzonej w poprzednim kroku i wybierz Enter , aby wykonać polecenie.

    endpoint=https://$sitename.azurewebsites.net/api/updates
    
  2. Uruchom następujące polecenie, aby uzyskać identyfikator zasobu utworzonego tematu.

    topicresourceid=$(az eventgrid topic show --resource-group gridResourceGroup --name $topicname --query "id" --output tsv)
    
  3. Uruchom następujące polecenie, aby utworzyć subskrypcję tematu niestandardowego za pomocą punktu końcowego.

    az eventgrid event-subscription create \
      --source-resource-id $topicresourceid \
      --name demoViewerSub \
      --endpoint $endpoint
    

    Wyświetl aplikację sieci Web ponownie i zwróć uwagę, że zdarzenie sprawdzania poprawności subskrypcji zostało do niej wysłane. Wybierz ikonę oka, aby rozwinąć dane zdarzenia. Usługa Event Grid wysyła zdarzenie weryfikacyjne, aby punkt końcowy mógł zweryfikować, czy chce otrzymywać dane zdarzeń. Aplikacja internetowa zawiera kod do sprawdzania poprawności subskrypcji.

    Zrzut ekranu przedstawiający przykład Event Grid Viewer ze zdarzeniem walidacji subskrypcji.

Wyślij zdarzenie do niestandardowego tematu

Wyzwólmy zdarzenie, aby zobaczyć, jak usługa Event Grid dystrybuuje komunikat do punktu końcowego. Najpierw zdobądź adres URL i klucz do tematu niestandardowego.

endpoint=$(az eventgrid topic show --name $topicname -g gridResourceGroup --query "endpoint" --output tsv)
key=$(az eventgrid topic key list --name $topicname -g gridResourceGroup --query "key1" --output tsv)

Aby uprościć ten szybki start, użyj przykładowych danych zdarzeń do niestandardowego tematu. Zazwyczaj aplikacja lub usługa platformy Azure wysyła dane zdarzenia. Poniższy przykład tworzy przykładowe dane zdarzenia:

event='[ {"id": "'"$RANDOM"'", "eventType": "recordInserted", "subject": "myapp/vehicles/motorcycles", "eventTime": "'`date +%Y-%m-%dT%H:%M:%S%z`'", "data":{ "make": "Ducati", "model": "Monster"},"dataVersion": "1.0"} ]'

Element data danych JSON to ładunek zdarzenia. W tym polu można umieścić dowolny prawidłowo sformatowany kod JSON. Można też używać pola tematu do zaawansowanego routingu i filtrowania.

cURL to narzędzie wysyłające żądania HTTP. W tym szybkim starcie użyj cURL, aby wysłać zdarzenie do tematu.

curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint

Ty wyzwoliłeś zdarzenie, a usługa Event Grid wysłała komunikat do punktu końcowego, który skonfigurowałeś przy subskrypcji. Otwórz aplikację internetową, aby zobaczyć zdarzenie, które właśnie wysłałeś.

[{
  "id": "1807",
  "eventType": "recordInserted",
  "subject": "myapp/vehicles/motorcycles",
  "eventTime": "2017-08-10T21:03:07+00:00",
  "data": {
    "make": "Ducati",
    "model": "Monster"
  },
  "dataVersion": "1.0",
  "metadataVersion": "1",
  "topic": "/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.EventGrid/topics/{topic}"
}]

Czyszczenie zasobów

Jeśli planujesz kontynuować pracę z tym wydarzeniem lub aplikacją event viewer, nie sprzątaj zasobów stworzonych w tym szybkim starcie. W przeciwnym razie użyj polecenia, aby usunąć zasoby utworzone w tym szybkim starcie.

az group delete --name gridResourceGroup --yes --no-wait

Wiesz już, jak tworzyć tematy i subskrypcje zdarzeń. Dowiedz się więcej na temat tego, co może Ci ułatwić usługa Event Grid:

Aby dowiedzieć się o publikowaniu zdarzeń do Event Grid i ich konsumowaniu w różnych językach programowania, zobacz poniższe przykłady: