Kierowanie zdarzeń niestandardowych do internetowego punktu końcowego za pomocą witryny Azure Portal i usługi Azure Event Grid

Event Grid to w pełni zarządzana usługa, która umożliwia łatwe zarządzanie zdarzeniami w wielu różnych usługach i aplikacjach platformy Azure. Upraszcza tworzenie aplikacji opartych na zdarzeniach i bezserwerowych. Aby zapoznać się z omówieniem usługi, zobacz Omówienie usługi Event Grid.

W tym artykule wykonasz następujące zadania za pomocą witryny Azure Portal:

  1. Utwórz temat niestandardowy.
  2. Zasubskrybuj temat niestandardowy.
  3. Wyzwól zdarzenie.
  4. Wyświetl wynik. Zazwyczaj użytkownik wysyła zdarzenia do punktu końcowego, w którym następuje przetwarzanie danych zdarzenia i są wykonywane akcje. Jednak aby uprościć ten artykuł, zdarzenia zostaną wysłane do aplikacji internetowej, która zbiera i wyświetla komunikaty.

Wymagania wstępne

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

Rejestrowanie dostawcy zasobów usługi Event Grid

Jeśli usługa Event Grid nie została wcześniej użyta, musisz zarejestrować dostawcę zasobów usługi Event Grid. Jeśli wcześniej użyto usługi Event Grid, przejdź do następnej sekcji.

W witrynie Azure Portal wykonaj następujące czynności:

  1. W menu po lewej stronie wybierz pozycję Subskrypcje.

  2. Wybierz subskrypcję, której chcesz użyć dla usługi Event Grid z listy subskrypcji.

  3. Na stronie Subskrypcja wybierz pozycję Dostawcy zasobów w obszarze Ustawienia w menu po lewej stronie.

  4. Wyszukaj ciąg Microsoft.EventGrid i upewnij się, że stan to Niezarejestrowany.

  5. Wybierz pozycję Microsoft.EventGrid na liście dostawców.

  6. Wybierz pozycję Zarejestruj na pasku poleceń.

    Image showing the registration of Microsoft.EventGrid provider with the Azure subscription.

  7. Odśwież, aby upewnić się, że stan microsoft.EventGrid został zmieniony na Zarejestrowany.

    Image showing the successful registration of Microsoft.EventGrid provider with the Azure subscription.

Tworzenie tematu niestandardowego

Temat usługi Event Grid zawiera punkt końcowy zdefiniowany przez użytkownika, do którego są ogłaszane zdarzenia.

  1. Zaloguj się do Portalu Azure.

  2. Na pasku wyszukiwania w temacie wpisz Tematy usługi Event Grid, a następnie wybierz pozycję Tematy usługi Event Grid z listy rozwijanej.

    Screenshot showing the Azure port search bar to search for Event Grid topics.

  3. Na stronie Tematy usługi Event Grid wybierz pozycję + Utwórz na pasku narzędzi.

    Screenshot showing the Create Topic button on Event Grid topics page.

  4. Na stronie Tworzenie tematu wykonaj następujące kroki:

    1. Wybierz swoją subskrypcję platformy Azure.

    2. Wybierz istniejącą grupę zasobów lub wybierz pozycję Utwórz nową, a następnie wprowadź nazwę grupy zasobów.

    3. Podaj unikatową nazwę tematu niestandardowego. Nazwa tematu musi być unikatowa, ponieważ jest reprezentowana przez wpis DNS. Nie należy używać nazwy widocznej na obrazie. Zamiast tego utwórz własną nazwę — musi mieć od 3 do 50 znaków i może zawierać wyłącznie wartości a–z, A–Z, 0–9 i „-”.

    4. Wybierz lokalizację tematu usługi Event Grid.

    5. Wybierz pozycję Przejrzyj i utwórz w dolnej części strony.

      Create Topic page

    6. Na karcie Przeglądanie i tworzenie na stronie Tworzenie tematu wybierz pozycję Utwórz.

      Review settings and create

  5. Po pomyślnym zakończeniu wdrażania wybierz pozycję Przejdź do zasobu, aby przejść do strony Temat usługi Event Grid dla tematu. Pozostaw tę stronę otwartą. Użyjesz go później w przewodniku Szybki start.

    Screenshot showing the Event Grid topic home page.

    Uwaga

    Aby zachować prosty przewodnik Szybki start, użyjesz tylko strony Podstawy , aby utworzyć temat. Aby uzyskać szczegółowe instrukcje dotyczące konfigurowania ustawień rezydencji sieci, zabezpieczeń i danych na innych stronach kreatora, zobacz Tworzenie tematu niestandardowego.

Tworzenie punktu końcowego komunikatów

Przed utworzeniem subskrypcji dla 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 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. Na stronie artykułu wybierz pozycję Wdróż na platformie Azure , aby wdrożyć rozwiązanie w ramach subskrypcji. W witrynie Azure Portal podaj wartości parametrów.

    Button to deploy the Resource Manager template to Azure.

  2. Na stronie Wdrażanie niestandardowe wykonaj następujące czynności:

    1. W obszarze Grupa zasobów wybierz grupę zasobów utworzoną podczas tworzenia konta magazynu. Po zakończeniu pracy z samouczkiem łatwiej będzie wyczyścić grupę zasobów.

    2. W polu Nazwa witryny wprowadź nazwę aplikacji internetowej.

    3. W polu Nazwa planu hostingu wprowadź nazwę planu usługi App Service, która będzie używana do hostowania aplikacji internetowej.

    4. Wybierz pozycję Przejrzyj i utwórz.

      Screenshot showing the Custom deployment page.

  3. Na stronie Przeglądanie i tworzenie wybierz pozycję Utwórz.

  4. Wdrożenie może potrwać kilka minut. Wybierz pozycję Alerty (ikona dzwonka) w portalu, a następnie wybierz pozycję Przejdź do grupy zasobów.

    Screenshot showing the successful deployment message with a link to navigate to the resource group.

  5. Na stronie Grupa zasobów na liście zasobów wybierz utworzoną aplikację internetową. Zostanie również wyświetlony plan usługi App Service i konto magazynu na tej liście.

    Screenshot that shows the Resource Group page with the deployed resources.

  6. Na stronie App Service aplikacji internetowej wybierz adres URL, aby przejść do witryny internetowej. Adres URL powinien mieć następujący format: https://<your-site-name>.azurewebsites.net.

    Screenshot that shows the App Service page with the link to the site highlighted.

  7. Upewnij się, że witryna jest widoczna, ale nie wysłano do niej żadnych zdarzeń.

    Screenshot that shows the Event Grid Viewer sample app.

Subskrybowanie do 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 zdarzenia.

  1. Teraz na stronie Temat usługi Event Grid dla tematu niestandardowego wybierz pozycję + Subskrypcja zdarzeń na pasku narzędzi.

    Add event subscription button

  2. Na stronie Tworzenie subskrypcji zdarzeń wykonaj następujące kroki:

    1. Wprowadź nazwę subskrypcji zdarzeń.

    2. Wybierz pozycję Web Hook dla typu punktu końcowego.

    3. Wybierz pozycję Wybierz punkt końcowy.

      Provide event subscription values

    4. Dla punktu końcowego elementu webhook podaj adres URL aplikacji internetowej i dodaj element api/updates do adresu URL strony głównej. Wybierz pozycję Potwierdź wybór.

      Provide endpoint URL

    5. Po powrocie na stronę Tworzenie subskrypcji zdarzeń wybierz pozycję Utwórz.

  3. 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 weryfikacji, aby w punkcie końcowym mogło nastąpić sprawdzenie, czy dane zdarzenia mają być odbierane. Aplikacja internetowa zawiera kod do sprawdzania poprawności subskrypcji.

    Screenshot of the Event Grid Viewer app with the Subscription Validated event.

Wysyłanie zdarzenia do tematu

Teraz wyzwólmy zdarzenie, aby zobaczyć, jak usługa Event Grid dystrybuuje komunikat do punktu końcowego. Możesz wysłać zdarzenie testowe do niestandardowego tematu za pomocą interfejsu wiersza polecenia platformy Azure lub programu PowerShell. Zwykle dane zdarzenia są wysyłane przez aplikację lub usługę platformy Azure.

W pierwszym przykładzie użyto interfejsu wiersza polecenia platformy Azure. Pobierany jest adres URL i klucz dla tematu niestandardowego oraz przykładowe dane zdarzenia. Użyj nazwy tematu niestandardowego dla wartości <topic name>. Tworzy ona przykładowe dane zdarzenia. Element data danych JSON to ładunek zdarzenia. W tym polu można umieścić dowolną poprawnie sformułowaną zawartość JSON. Można też używać pola tematu do zaawansowanego routingu i filtrowania. CURL to narzędzie, które wysyła żądania HTTP.

Interfejs wiersza polecenia platformy Azure

  1. W witrynie Azure Portal wybierz pozycję Cloud Shell. Usługa Cloud Shell zostanie otwarta w dolnym okienku przeglądarki internetowej.

    Select Cloud Shell icon

  2. Wybierz pozycję Bash w lewym górnym rogu okna usługi Cloud Shell.

    Screenshot that shows the Cloud Shell with Bash selected in the top-left corner.

  3. Uruchom następujące polecenie, aby uzyskać punkt końcowy tematu: Po skopiowaniu i wklejeniu polecenia zaktualizuj nazwę tematu i nazwę grupy zasobów przed uruchomieniem polecenia. Przykładowe zdarzenia są publikowane w tym punkcie końcowym tematu.

    endpoint=$(az eventgrid topic show --name <topic name> -g <resource group name> --query "endpoint" --output tsv)
    
  4. Uruchom następujące polecenie, aby uzyskać klucz dla tematu niestandardowego: po skopiowaniu i wklejeniu polecenia zaktualizuj nazwę tematu i nazwę grupy zasobów przed uruchomieniem polecenia. Jest to klucz podstawowy tematu usługi Event Grid. Aby uzyskać ten klucz z witryny Azure Portal, przejdź do karty Klucze dostępu na stronie Temat usługi Event Grid. Aby można było opublikować zdarzenie w temacie niestandardowym, potrzebny jest klucz dostępu.

    key=$(az eventgrid topic key list --name <topic name> -g <resource group name> --query "key1" --output tsv)
    
  5. Skopiuj następującą instrukcję z definicją zdarzenia i naciśnij klawisz ENTER.

    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"} ]'
    
  6. Uruchom następujące polecenie Curl , aby opublikować zdarzenie: W poleceniu nagłówek jest ustawiony na klucz dostępu, aeg-sas-key który został wcześniej wyświetlony.

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

Azure PowerShell

W drugim przykładzie do wykonania podobnych kroków użyto programu PowerShell.

  1. W witrynie Azure Portal wybierz pozycję Cloud Shell (alternatywnie przejdź do witryny https://shell.azure.com/). Usługa Cloud Shell zostanie otwarta w dolnym okienku przeglądarki internetowej.

    Select Cloud Shell icon

  2. W usłudze Cloud Shell wybierz pozycję PowerShell w lewym górnym rogu okna usługi Cloud Shell. Zobacz przykładowy obraz okna usługi Cloud Shell w sekcji interfejsu wiersza polecenia platformy Azure.

  3. Ustaw następujące zmienne. Po skopiowaniu i wklejeniu każdego polecenia zaktualizuj nazwę tematu i nazwę grupy zasobów przed uruchomieniem polecenia:

    Grupa zasobów:

    $resourceGroupName = "<resource group name>"
    

    Nazwa tematu usługi Event Grid:

    $topicName = "<topic name>"
    
  4. Uruchom następujące polecenia, aby uzyskać punkt końcowy i klucze dla tematu:

    $endpoint = (Get-AzEventGridTopic -ResourceGroupName $resourceGroupName -Name $topicName).Endpoint
    $keys = Get-AzEventGridTopicKey -ResourceGroupName $resourceGroupName -Name $topicName
    
  5. Przygotuj zdarzenie. Skopiuj i uruchom instrukcje w oknie usługi Cloud Shell.

    $eventID = Get-Random 99999
    
    #Date format should be SortableDateTimePattern (ISO 8601)
    $eventDate = Get-Date -Format s
    
    #Construct body using Hashtable
    $htbody = @{
        id= $eventID
        eventType="recordInserted"
        subject="myapp/vehicles/motorcycles"
        eventTime= $eventDate   
        data= @{
            make="Ducati"
            model="Monster"
        }
        dataVersion="1.0"
    }
    
    #Use ConvertTo-Json to convert event body from Hashtable to JSON Object
    #Append square brackets to the converted JSON payload since they are expected in the event's JSON payload syntax
    $body = "["+(ConvertTo-Json $htbody)+"]"
    
  6. Użyj polecenia cmdlet Invoke-WebRequest, aby wysłać zdarzenie.

    Invoke-WebRequest -Uri $endpoint -Method POST -Body $body -Headers @{"aeg-sas-key" = $keys.Key1}
    

Weryfikowanie w podglądzie usługi Event Grid

Zdarzenie zostało wyzwolone, a usługa Event Grid wysłała komunikat do punktu końcowego skonfigurowanego podczas subskrybowania. Wyświetl aplikację sieci Web, aby wyświetlić właśnie wysłane zdarzenie.

Event Grid Viewer

Czyszczenie zasobów

Jeśli zamierzasz kontynuować pracę z tym zdarzeniem, nie usuwaj zasobów utworzonych w tym artykule. W przeciwnym razie usuń zasoby utworzone w ramach tego artykułu.

  1. Wybierz pozycję Grupy zasobów w menu po lewej stronie. Jeśli nie widzisz go w menu po lewej stronie, wybierz pozycję Wszystkie usługi w menu po lewej stronie i wybierz pozycję Grupy zasobów.

    Screenshot that shows the Resource Groups page.

  2. Wybierz grupę zasobów, aby uruchomić stronę Grupa zasobów.

  3. Wybierz pozycję Usuń grupę zasobów na pasku narzędzi.

  4. Potwierdź usunięcie, wprowadzając nazwę grupy zasobów, a następnie wybierz pozycję Usuń.

    Druga grupa zasobów widoczna na obrazie została utworzona i użyta przez okno usługi Cloud Shell. Usuń go, jeśli nie planujesz później korzystać z okna usługi Cloud Shell.

Następne kroki

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

Zapoznaj się z poniższymi przykładami, aby dowiedzieć się więcej na temat publikowania zdarzeń do usługi Event Grid i korzystania z nich przy użyciu różnych języków programowania.