Szybki start: kierowanie zdarzeń niestandardowych do funkcji platformy Azure za pomocą usługi Event Grid

Azure Event Grid to usługa do obsługi zdarzeń dla chmury. Usługa Azure Functions jest jednym z obsługiwanych programów obsługi zdarzeń. W tym artykule omówiono użycie witryny Azure Portal w celu utworzenia tematu niestandardowego, zasubskrybowania go i wyzwolenia zdarzenia pozwalającego na wyświetlenie wyniku. Zdarzenia są wysyłane do funkcji platformy Azure.

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

Tworzenie aplikacji funkcji platformy Azure

  1. Zaloguj się w witrynie Azure Portal.

  2. W menu nawigacji po lewej stronie wybierz pozycję Wszystkie usługi.

  3. Wybierz pozycję Obliczenia na liście Kategorii.

  4. Zatrzymaj wskaźnik myszy (nie wybierz) nad aplikacją funkcji i wybierz pozycję +.

    Zrzut ekranu przedstawiający wybieranie linku Utwórz dla aplikacji funkcji.

  5. Na stronie Podstawy Kreatora tworzenia aplikacji funkcji wykonaj następujące kroki:

    1. Wybierz subskrypcję platformy Azure, w której chcesz utworzyć aplikację funkcji.

    2. Utwórz nową grupę zasobów lub wybierz istniejącą grupę zasobów.

    3. Określ nazwę aplikacji funkcji.

    4. Wybierz pozycję .NET dla stosu środowiska uruchomieniowego.

    5. W obszarze Wersja wybierz pozycję 6 (LTS), model w procesie.

    6. Wybierz region najbliżej Ciebie.

    7. Wybierz pozycję Dalej: Magazyn w dolnej części strony.

      Zrzut ekranu przedstawiający kartę Podstawowe na stronie Tworzenie aplikacji funkcji.

  6. Na stronie Magazyn utwórz nowe konto magazynu lub wybierz istniejące konto magazynu, które ma być skojarzone z aplikacją funkcji, a następnie wybierz pozycję Przejrzyj i utwórz w dolnej części strony.

    Zrzut ekranu przedstawiający kartę Magazyn na stronie Tworzenie aplikacji funkcji.

  7. Na stronie Przeglądanie + tworzenie przejrzyj ustawienia i wybierz pozycję Utwórz w dolnej części strony, aby utworzyć aplikację funkcji.

  8. Po pomyślnym wdrożeniu wybierz pozycję Przejdź do zasobu , aby przejść do strony głównej aplikacji funkcji.

Tworzenie funkcji

Przed subskrybowaniem tematu niestandardowego utwórz funkcję do obsługi zdarzeń.

  1. Na stronie Aplikacja funkcji w sekcji Tworzenie w witrynie Azure Portal wybierz link Utwórz funkcję w okienku po prawej stronie.

    Zrzut ekranu przedstawiający wybór linku Utwórz funkcję.

  2. Na stronie Tworzenie funkcji wykonaj następujące kroki:

    1. W sekcji Wybieranie szablonu w polu filtru lub wyszukiwania wpisz wyzwalacz usługi Azure Event Grid.

    2. Wybierz szablon Wyzwalacz usługi Azure Event Grid na liście szablonów.

    3. Wybierz pozycję Dalej w dolnej części strony.

      Zrzut ekranu przedstawiający wybieranie wyzwalacza usługi Event Grid.

    4. Na stronie Szczegóły szablonu wprowadź nazwę funkcji. W tym przykładzie jest to HandleEventsFunc.

    5. Wybierz pozycję Utwórz.

      Zrzut ekranu przedstawiający stronę Szczegóły szablonu.

  3. Na stronie Funkcja dla funkcji HandleEventsFunc wybierz pozycję Kod + test w menu nawigacji po lewej stronie, zastąp kod następującym kodem, a następnie wybierz pozycję Zapisz na pasku poleceń.

    #r "Azure.Messaging.EventGrid"
    #r "System.Memory.Data"
    
    using Azure.Messaging.EventGrid;
    using System;
    
    public static void Run(EventGridEvent eventGridEvent, ILogger log)
    {
        log.LogInformation(eventGridEvent.Data.ToString());
    }        
    

    Obraz przedstawiający menu Wyboru Kod i test dla funkcji platformy Azure.

  4. Wybierz pozycję Monitoruj w menu po lewej stronie i przejdź do karty Dzienniki . Pozostaw to okno lub kartę przeglądarki, aby zobaczyć odebrane informacje o zdarzeniu.

    Zrzut ekranu przedstawiający widok Monitor funkcji platformy Azure.

Tworzenie tematu niestandardowego

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

  1. Na nowej karcie okna przeglądarki internetowej zaloguj się do witryny Azure Portal.

  2. Na pasku wyszukiwania w temacie wyszukaj tematy usługi Event Grid i wybierz pozycję Tematy usługi Event Grid.

    Obraz przedstawiający wybór tematów usługi Event Grid.

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

    Zrzut ekranu przedstawiający przycisk Utwórz, aby utworzyć temat usługi Event Grid.

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

    1. Wybierz swoją subskrypcję platformy Azure.

    2. Wybierz tę samą grupę zasobów z poprzednich krokó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.

      Zrzut ekranu przedstawiający stronę Tworzenie tematu.

    6. Na stronie Przeglądanie + tworzenie przejrzyj ustawienia i wybierz pozycję Utwórz.

  5. Po utworzeniu tematu niestandardowego wybierz link Przejdź do zasobu , aby wyświetlić następującą stronę tematu usługi Event Grid dla utworzonego tematu.

    Obraz przedstawiający stronę główną tematu niestandardowego usługi Event Grid.

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.

    Obraz przedstawiający wybór opcji Dodaj subskrypcję zdarzeń na pasku narzędzi.

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

    1. Wprowadź nazwę subskrypcji zdarzeń.

    2. Wybierz pozycję Funkcja platformy Azure dla typu punktu końcowego.

    3. Wybierz pozycję Konfiguruj punkt końcowy.

      Obraz przedstawiający wartości subskrypcji zdarzeń.

    4. W przypadku punktu końcowego funkcji wybierz subskrypcję platformy Azure i grupę zasobów, w której znajduje się aplikacja funkcji, a następnie wybierz utworzoną wcześniej aplikację funkcji i funkcję. Wybierz pozycję Potwierdź wybór.

      Obraz przedstawiający stronę Wybieranie funkcji platformy Azure z wyborem utworzonej wcześniej funkcji.

    5. Ten krok jest opcjonalny, ale zalecany w scenariuszach produkcyjnych. Na stronie Tworzenie subskrypcji zdarzeń przejdź do karty Funkcje zaawansowane i ustaw wartości maksymalnej liczby zdarzeń na partię i Preferowany rozmiar partii w kilobajtach.

      Przetwarzanie wsadowe może zapewnić wysoką przepływność. W obszarze Maksymalna liczba zdarzeń na partię ustaw maksymalną liczbę zdarzeń, które subskrypcja będzie uwzględniać w partii. Preferowany rozmiar partii ustawia preferowaną górną granicę rozmiaru partii w kilobajtach, ale można go przekroczyć, jeśli pojedyncze zdarzenie jest większe niż ten próg.

      Obraz przedstawiający ustawienia przetwarzania wsadowego dla subskrypcji zdarzeń.

    6. Na stronie Tworzenie subskrypcji zdarzeń wybierz pozycję Utwórz.

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. Wybierz pozycję Bash w lewym górnym rogu okna usługi Cloud Shell.

    Obraz przedstawiający okno Cloud Shell — Bash

  2. topicname Ustaw zmienne iresourcegroupname, które będą używane w poleceniach .

    Zastąp TOPICNAME ciąg nazwą tematu usługi Event Grid.

    topicname="TOPICNAME"
    

    Zastąp RESOURCEGROUPNAME ciąg nazwą grupy zasobów platformy Azure, która zawiera temat usługi Event Grid.

    resourcegroupname="RESOURCEGROUPNAME"
    
  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.

    endpoint=$(az eventgrid topic show --name $topicname -g $resourcegroupname --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.

    key=$(az eventgrid topic key list --name $topicname -g $resourcegroupname --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:

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

Azure PowerShell

Drugi przykład obejmuje wykonanie podobnych kroków przy użyciu programu PowerShell.

  1. W witrynie Azure Portal wybierz pozycję Cloud Shell (alternatywnie przejdź do witryny https://shell.azure.com/). 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.

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

    $resourceGroupName = "RESOURCEGROUPNAME"
    
    $topicName = "TOPICNAME"
    
  3. 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
    
  4. 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)+"]"
    
  5. Użyj polecenia cmdlet Invoke-WebRequest, aby wysłać zdarzenie.

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

Sprawdź, czy funkcja odebrała zdarzenie

Zdarzenie zostało wyzwolone, a usługa Event Grid wysłała komunikat do punktu końcowego skonfigurowanego podczas subskrybowania.

  1. Na stronie Monitorowanie funkcji platformy Azure zostanie wyświetlone wywołanie.

    Zrzut ekranu przedstawiający kartę Wywołania na stronie Monitorowanie.

  2. Wybierz wywołanie, aby wyświetlić szczegóły.

    Zrzut ekranu przedstawiający szczegóły wywołania.

  3. Możesz również użyć karty Dzienniki w okienku po prawej stronie, aby wyświetlić zarejestrowane komunikaty podczas publikowania zdarzeń do punktu końcowego tematu.

    Obraz przedstawiający widok Monitor funkcji platformy Azure z dziennikiem.

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.

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

    Grupy zasobów

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