Udostępnij za pośrednictwem


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

Azure Event Grid to usługa routingu zdarzeń dla chmury. Usługa Azure Functions jest jednym z obsługiwanych programów obsługi zdarzeń.

W tym przewodniku Szybki start użyjesz witryny Azure Portal do utworzenia tematu niestandardowego, zasubskrybowania tematu niestandardowego i wyzwolenia zdarzenia w celu wyświetlenia 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 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.

Wymagania wstępne

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 przycisk Azure Functions na pasku poleceń, a 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 Utwórz nowy projekt w polu Język wybierz pozycję C#, a następnie 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 pozycję .NET 8.0 Isolated LTS, a następnie wybierz Enter.

  7. W polu Szablon dla funkcji wybierz pozycję Wyzwalacz usługi Azure Event Grid, a następnie wybierz Enter.

  8. W polu Nazwa funkcji wprowadź nazwę funkcji, a następnie wybierz Enter.

  9. W polu Przestrzeń nazw wprowadź nazwę przestrzeni nazw funkcji, a następnie 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 . Wyświetla informacje przy użyciu rejestratora.

    [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, a następnie wybierz Enter.

  5. W obszarze Stos środowiska uruchomieniowego wybierz pozycję .NET 8 Izolowane.

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

  7. Stan tworzenia aplikacji funkcji jest wyświetlany na karcie AZURE w dolnym okienku. Po utworzeniu aplikacji funkcji zobaczysz stan wdrażania funkcji utworzonej lokalnie w aplikacji funkcji.

  8. Po pomyślnym wdrożeniu rozwiń komunikat Tworzenie aplikacji funkcji zakończył się pomyślnie i wybierz pozycję 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 dla funkcji zostanie wyświetlona strona Aplikacja funkcji.

  11. W dolnym okienku wybierz funkcję.

    Zrzut ekranu przedstawiający wybór funkcji platformy Azure na stronie Aplikacja 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 samouczka.

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

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, a następnie wybierz pozycję Tematy usługi Event Grid.

    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ć unikatowa, ponieważ wpis system nazw domen (DNS) reprezentuje go.

      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 pozycję 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 link Przejdź do zasobu , aby otworzyć stronę Temat usługi Event Grid dla tego tematu.

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

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

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

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

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

    6. Ten krok jest opcjonalny, ale zalecamy go w scenariuszach produkcyjnych. W okienku Tworzenie subskrypcji zdarzeń przejdź do karty Dodatkowe funkcje i ustaw wartości maksymalnej liczby zdarzeń na partię i Preferowany rozmiar partii w kilobajtach.

      Przetwarzanie wsadowe może zapewnić wysoką przepływność. W polu Maksymalna liczba zdarzeń na partię ustaw maksymalną liczbę zdarzeń, które subskrypcja będzie zawierać 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ń.

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

Wysyłanie zdarzenia do tematu

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 platformy 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 nazwy tematu niestandardowego dla wartości topicname. 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.

Narzędzie cURL wysyła żądania HTTP. W tym artykule użyjesz biblioteki cURL do wysłania zdarzenia do tematu niestandardowego.

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 powłoki Bash w usłudze Azure Cloud Shell.

  2. topicname Ustaw zmienne iresourcegroupname, które są 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. 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 funkcji w witrynie Azure Portal.

    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. Invoke-WebRequest Użyj polecenia cmdlet , 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 jest wyświetlany na karcie Dzienniki funkcji w witrynie Azure Portal.

    Zrzut ekranu przedstawiający kartę Dzienniki dla funkcji.

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. Teraz możesz sprawdzić, czy funkcja ją odebrała.

  1. Na stronie Monitorowanie funkcji znajdź 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.

    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.

    Zrzut ekranu przedstawiający widok Monitor funkcji z dziennikiem.

Czyszczenie zasobów

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

  1. W menu po lewej stronie wybierz pozycję Grupy zasobów.

    Zrzut ekranu przedstawiający stronę grup zasobów

    Alternatywą jest wybranie pozycji Wszystkie usługi w menu po lewej stronie, a następnie wybranie pozycji Grupy 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ń.

Okno usługi Cloud Shell zostało utworzone i użyto innej grupy zasobów wyświetlanej 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: