Szybki start: kierowanie niestandardowych zdarzeń do funkcji platformy Azure przy użyciu usługi Event Grid

W tym szybkim starcie tworzysz funkcję z wyzwalaczem Event Grid w Visual Studio Code, tworzysz temat Event Grid i subskrypcję event w portalu Azure, a następnie wysyłasz testowe zdarzenie, aby sprawdzić, jak Event Grid kieruje niestandardowe zdarzenia do Twojej funkcji Azure.

Azure Event Grid to usługa routingu zdarzeń w chmurze, która dostarcza zdarzenia od źródła do handlera. Azure Functions jest jednym z obsługiwanych programów obsługi zdarzeń. Łącząc te dwa elementy, możesz automatycznie uruchamiać kod w odpowiedzi na zdarzenia, bez konieczności sprawdzania zmian czy zarządzania infrastrukturą.

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

Wymagania wstępne

Tworzenie funkcji z wyzwalaczem usługi Event Grid przy użyciu programu Visual Studio Code

W tej sekcji użyjesz programu Visual Studio Code do utworzenia funkcji z wyzwalaczem usługi Event Grid.

Tworzenie funkcji

  1. Otwórz Visual Studio Code.

  2. Na pasku po lewej stronie wybierz pozycję Azure.

  3. W okienku po lewej stronie w sekcji OBSZAR ROBOCZY wybierz pozycję Azure Functions na pasku poleceń. Następnie wybierz pozycję Utwórz funkcję.

    Zrzut ekranu przedstawiający kartę platformy Azure programu Visual Studio Code z poleceniem menu umożliwiającym utworzenie funkcji.

  4. Wybierz folder, w którym chcesz zapisać kod funkcji.

  5. Dla polecenia Create new project (Utwórz nowy projekt ) w polu Language (Język) wybierz pozycję C#. Wybierz Enter.

    Zrzut ekranu przedstawiający wybór języka C Sharp jako języka tworzenia funkcji platformy Azure.

  6. W przypadku środowiska uruchomieniowego platformy .NET wybierz .NET 8.0 Isolated LTS, a następnie naciśnij Enter.

  7. W polu Szablon dla funkcji wybierz Azure Event Grid trigger. Wybierz Enter.

  8. W polu Nazwa funkcji wprowadź nazwę funkcji. Wybierz Enter.

  9. W polu Przestrzeń nazw wprowadź nazwę przestrzeni nazw funkcji. Wybierz Enter.

  10. Otwórz projekt w bieżącym oknie lub nowym oknie lub dodaj go do obszaru roboczego.

  11. Poczekaj na utworzenie funkcji. Stan tworzenia funkcji zostanie wyświetlony w prawym dolnym rogu.

    Zrzut ekranu przedstawiający stan tworzenia funkcji.

  12. Wyświetl kod w pliku YourFunctionName.cs , w szczególności metodę Run . Wypisuje informacje za pomocą loggera.

    [Function(nameof(MyEventGridTriggerFunc))]
    public void Run([EventGridTrigger] CloudEvent cloudEvent)
    {
        _logger.LogInformation("Event type: {type}, Event subject: {subject}", cloudEvent.Type, cloudEvent.Subject);
    }
    

Wdrażanie funkcji na platformie Azure

  1. Wybierz przycisk Azure na pasku po lewej stronie, jeśli okienko platformy Azure nie jest jeszcze otwarte.

  2. Umieść kursor na projekcie i wybierz przycisk Wdróż na platformie Azure .

    Zrzut ekranu przedstawiający przycisk wdrażania na platformie Azure.

  3. Na liście rozwijanej palety poleceń wybierz pozycję + Utwórz nową aplikację funkcji, a następnie wybierz Enter.

  4. W polu Nazwa wprowadź globalnie unikatową nazwę nowej aplikacji funkcji. Wybierz Enter.

  5. W polu Stos środowiska uruchomieniowego wybierz opcję .NET 8 isolated.

  6. W polu Lokalizacja dla zasobów platformy Azure wybierz region, który jest blisko Ciebie.

  7. Stan tworzenia aplikacji funkcji pojawia się na karcie AZURE w dolnym panelu. Po utworzeniu aplikacji funkcji zobaczysz stan wdrażania funkcji utworzonej lokalnie w aplikacji funkcji.

  8. Rozwiń komunikat Tworzenie aplikacji funkcji zakończyło się pomyślnie po pomyślnym wdrożeniu. Wybierz Kliknij, aby wyświetlić zasób. Upewnij się, że funkcja została wybrana w sekcji ZASOBY w okienku po lewej stronie.

  9. Kliknij prawym przyciskiem myszy funkcję, a następnie wybierz polecenie Otwórz w portalu.

    Zrzut ekranu przedstawiający opcje otwierania funkcji w portalu.

  10. W razie potrzeby zaloguj się do platformy Azure i upewnij się, że zostanie wyświetlona strona Aplikacja funkcji dla Twojej funkcji.

  11. W dolnym okienku wybierz funkcję.

    Zrzut ekranu przedstawiający wybranie funkcji platformy Azure na stronie aplikacji funkcji.

  12. Przejdź do karty Dzienniki . Pozostaw tę kartę otwartą, aby zobaczyć zarejestrowane komunikaty podczas wysyłania zdarzenia do tematu usługi Event Grid w dalszej części tego artykułu.

    Zrzut ekranu przedstawiający kartę Dzienniki dla funkcji w witrynie Azure Portal.

Utwórz temat niestandardowy usługi Event Grid

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. W górnym pasku wyszukiwania wyszukaj Event Grid Topics, a następnie wybierz Event Grid Topics.

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

  3. Na stronie Tematy wybierz pozycję + Utwórz na pasku poleceń.

    Zrzut ekranu przedstawiający przycisk tworzenia tematu usługi Event Grid.

  4. W okienku Tworzenie tematu wykonaj następujące kroki:

    1. W polu Subskrypcja wybierz subskrypcję platformy Azure.

    2. W obszarze Grupa zasobów wybierz tę samą grupę zasobów z poprzednich kroków.

    3. W polu Nazwa podaj unikatową nazwę tematu niestandardowego. Nazwa tematu musi być unikalna, ponieważ reprezentuje ją wpis w systemie nazw domen (DNS).

      Nie używaj nazwy pokazanej na przykładowym obrazie. Zamiast tego utwórz własną nazwę. Musi zawierać od 3 do 50 znaków i zawierać tylko wartości a-z, A-Z, 0-9 i łącznik (-).

    4. W obszarze Region wybierz lokalizację tematu usługi Event Grid.

    5. Wybierz Przejrzyj i utwórz.

      Zrzut ekranu przedstawiający okienko tworzenia tematu.

    6. Na karcie Przeglądanie i tworzenie przejrzyj ustawienia, a następnie wybierz pozycję Utwórz.

  5. Po utworzeniu tematu niestandardowego wybierz Przejdź do zasobu, aby otworzyć stronę Temat Event Grid dla tego tematu.

    Zrzut ekranu przedstawiający stronę tematu niestandardowego usługi Event Grid.

Subskrybowanie niestandardowego tematu usługi Event Grid

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. Na stronie Temat Event Grid dla niestandardowego tematu wybierz na pasku narzędzi pozycję + Subskrypcja zdarzeń.

    Zrzut ekranu przedstawiający przycisk dodawania subskrypcji zdarzeń na pasku narzędzi.

  2. W okienku Tworzenie subskrypcji zdarzeń wykonaj następujące kroki:

    1. W polu Nazwa wprowadź nazwę subskrypcji zdarzeń.

    2. W polu Schemat zdarzeń wybierz pozycję Schemat zdarzeń w chmurze w wersji 1.0.

    3. W polu Typ punktu końcowego wybierz pozycję Funkcja platformy Azure.

    4. Wybierz pozycję Konfiguruj punkt końcowy.

      Zrzut ekranu przedstawiający wartości subskrypcji zdarzeń.

  3. W okienku Wybieranie funkcji platformy Azure wykonaj następujące kroki:

    1. W polu Subskrypcja wybierz subskrypcję platformy Azure, która ma funkcję.

    2. W polu Grupa zasobów wybierz grupę zasobów, która ma funkcję .

    3. W polu Aplikacja funkcji wybierz swoją aplikację funkcji.

    4. W polu Funkcja wybierz funkcję w aplikacji funkcji.

    5. Wybierz pozycję Potwierdź wybór.

      Zrzut ekranu przedstawiający okienko wybierania wcześniej utworzonej funkcji platformy Azure.

  4. Ten krok jest opcjonalny, ale zalecamy go w scenariuszach produkcyjnych. W okienku Tworzenie subskrypcji zdarzeń przejdź na kartę Dodatkowe funkcje i ustaw wartości dla Maksymalna liczba zdarzeń na partię oraz Preferowany rozmiar partii w kilobajtach.

    Przetwarzanie wsadowe może zapewnić wysoką przepływność. W polu Maksymalna liczba zdarzeń na partię ustaw maksymalną liczbę zdarzeń uwzględninych w subskrypcji w partii. Preferowany rozmiar partii w kilobajtach określa preferowaną górną granicę rozmiaru partii, ale można go przekroczyć, jeśli pojedyncze zdarzenie jest większe niż ten próg.

    Zrzut ekranu przedstawiający ustawienia przetwarzania wsadowego dla subskrypcji zdarzeń.

  5. W okienku Tworzenie subskrypcji zdarzeń wybierz pozycję Utwórz.

Wyślij zdarzenie testowe do tematu Event Grid

Teraz wyzwól zdarzenie, aby zobaczyć, jak usługa Event Grid dystrybuuje komunikat do punktu końcowego. Użyj interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell, aby wysłać zdarzenie testowe do tematu niestandardowego. Zazwyczaj aplikacja lub usługa Azure wysyła dane zdarzenia.

W pierwszym przykładzie użyto interfejsu wiersza polecenia platformy Azure. Pobiera on adres URL i klucz dla tematu niestandardowego oraz przykładowe dane zdarzenia. Użyj własnej nazwy tematu dla topicname. Tworzy przykładowe dane zdarzeń.

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.

Narzędzie cURL wysyła żądania HTTP. W tym artykule użyjesz narzędzia cURL, aby wysłać zdarzenie do niestandardowego tematu.

Interfejs wiersza polecenia platformy Azure

  1. W witrynie Azure Portal wybierz pozycję Cloud Shell. Jeśli jesteś w trybie programu Azure PowerShell, wybierz pozycję Przełącz na powłokę Bash.

    Zrzut ekranu przedstawiający okno Bash w usłudze Azure Cloud Shell.

  2. Ustaw zmienne topicname i resourcegroupname, które są używane w poleceniach.

    Zastąp TOPICNAME 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. Użyj następującego polecenia, aby uzyskać punkt końcowy tematu. Po skopiowaniu i wklejeniu polecenia zaktualizuj nazwę tematu i nazwę grupy zasobów przed jego uruchomieniem.

    endpoint=$(az eventgrid topic show --name $topicname -g $resourcegroupname --query "endpoint" --output tsv)
    
  4. Użyj następującego polecenia, aby uzyskać klucz dla tematu niestandardowego. Po skopiowaniu i wklejeniu polecenia zaktualizuj nazwę tematu i nazwę grupy zasobów przed jego uruchomieniem.

    key=$(az eventgrid topic key list --name $topicname -g $resourcegroupname --query "key1" --output tsv)
    
  5. Skopiuj następującą instrukcję z definicją zdarzenia, a następnie wybierz 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
    
  7. Upewnij się, że komunikat z funkcji jest wyświetlany na karcie Dzienniki dla tej funkcji w portalu Azure.

    Zrzut ekranu przedstawiający kartę Dzienniki dla funkcji platformy Azure.

Azure PowerShell

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

  1. W witrynie Azure Portal wybierz pozycję Cloud Shell lub przejdź do strony usługi Azure Cloud Shell. W lewym górnym rogu okna usługi Cloud Shell wybierz pozycję Przełącz do programu PowerShell.

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

    $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 następujące instrukcje w oknie usługi Cloud Shell:

    $eventID = Get-Random 99999
    
    #Date format should be SortableDateTimePattern (ISO 8601)
    $eventDate = Get-Date -Format s
    
    #Construct the body by using a hash table
    $htbody = @{
        id= $eventID
        eventType="recordInserted"
        subject="myapp/vehicles/motorcycles"
        eventTime= $eventDate   
        data= @{
            make="Ducati"
            model="Monster"
        }
        dataVersion="1.0"
    }
    
    #Use ConvertTo-Json to convert the event body from a hash table to a JSON object
    #Append square brackets to the converted JSON payload because they're 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}
    
  6. Upewnij się, że komunikat z funkcji pojawia się na karcie Dzienniki dla funkcji w witrynie Azure Portal.

    Zrzut ekranu przedstawiający kartę „Dzienniki” dla funkcji.

Sprawdź, czy funkcja odebrała zdarzenie

Wywołano zdarzenie, a usługa Event Grid wysłała komunikat do punktu końcowego skonfigurowanego podczas tworzenia subskrypcji. Teraz możesz sprawdzić, czy funkcja ją odebrała.

  1. Otwórz kartę Wywołanie dla funkcji.

    Zrzut ekranu przedstawiający zakładkę „Wywołania” na stronie „Monitor”.

  2. Aby wyświetlić szczegóły, wybierz wywołanie.

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

    Możesz również użyć karty Dzienniki .

    Zrzut ekranu przedstawiający widok Monitora funkcji wraz z dziennikiem.

Czyszczenie zasobów

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

  1. W polu wyszukiwania witryny Azure Portal wprowadź ciąg Grupy zasobów , a następnie wybierz pozycję Grupy zasobów.

    Zrzut ekranu przedstawiający stronę grup zasobów.

  2. Wybierz grupę zasobów, aby otworzyć okienko, aby uzyskać szczegółowe informacje.

  3. Na pasku narzędzi wybierz pozycję Usuń grupę zasobów.

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

W oknie usługi Cloud Shell utworzono i użyto tej drugiej grupy zasobów widocznej na stronie Grupy zasobów. Usuń tę grupę zasobów, jeśli nie planujesz później korzystać z okna usługi Cloud Shell.

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ę więcej o publikowaniu zdarzeń i używaniu zdarzeń z usługi Event Grid przy użyciu różnych języków programowania, zobacz następujące przykłady: