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
- Program Visual Studio Code zainstalowany na jednej z obsługiwanych platform
- Rozszerzenie usługi Azure Functions
Tworzenie funkcji
Otwórz Visual Studio Code.
Na pasku po lewej stronie wybierz pozycję Azure.
W okienku po lewej stronie w sekcji OBSZAR ROBOCZY wybierz przycisk Azure Functions na pasku poleceń, a następnie wybierz pozycję Utwórz funkcję.
Wybierz folder, w którym chcesz zapisać kod funkcji.
Dla polecenia Utwórz nowy projekt w polu Język wybierz pozycję C#, a następnie wybierz Enter.
W przypadku środowiska uruchomieniowego platformy .NET wybierz pozycję .NET 8.0 Isolated LTS, a następnie wybierz Enter.
W polu Szablon dla funkcji wybierz pozycję Wyzwalacz usługi Azure Event Grid, a następnie wybierz Enter.
W polu Nazwa funkcji wprowadź nazwę funkcji, a następnie wybierz Enter.
W polu Przestrzeń nazw wprowadź nazwę przestrzeni nazw funkcji, a następnie wybierz Enter.
Otwórz projekt w bieżącym oknie lub nowym oknie lub dodaj go do obszaru roboczego.
Poczekaj na utworzenie funkcji. Stan tworzenia funkcji zostanie wyświetlony w prawym dolnym rogu.
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
Wybierz przycisk Azure na pasku po lewej stronie, jeśli okienko platformy Azure nie jest jeszcze otwarte.
Umieść kursor na projekcie i wybierz przycisk Wdróż na platformie Azure .
Na liście rozwijanej palety poleceń wybierz pozycję + Utwórz nową aplikację funkcji, a następnie wybierz Enter.
W polu Nazwa wprowadź globalnie unikatową nazwę nowej aplikacji funkcji, a następnie wybierz Enter.
W obszarze Stos środowiska uruchomieniowego wybierz pozycję .NET 8 Izolowane.
W polu Lokalizacja dla zasobów platformy Azure wybierz region, który jest blisko Ciebie.
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.
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.
Kliknij prawym przyciskiem myszy funkcję, a następnie wybierz polecenie Otwórz w portalu.
W razie potrzeby zaloguj się do platformy Azure i upewnij się, że dla funkcji zostanie wyświetlona strona Aplikacja funkcji.
W dolnym okienku wybierz funkcję.
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.
Tworzenie tematu niestandardowego
Temat usługi Event Grid zawiera punkt końcowy zdefiniowany przez użytkownika, do którego są ogłaszane zdarzenia.
Na nowej karcie okna przeglądarki internetowej zaloguj się do witryny Azure Portal.
Na pasku wyszukiwania w temacie wyszukaj tematy usługi Event Grid, a następnie wybierz pozycję Tematy usługi Event Grid.
Na stronie Tematy wybierz pozycję + Utwórz na pasku poleceń.
W okienku Tworzenie tematu wykonaj następujące kroki:
W polu Subskrypcja wybierz subskrypcję platformy Azure.
W obszarze Grupa zasobów wybierz tę samą grupę zasobów z poprzednich kroków.
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 (
-
).W obszarze Region wybierz lokalizację tematu usługi Event Grid.
Wybierz pozycję Przejrzyj i utwórz.
Na karcie Przeglądanie i tworzenie przejrzyj ustawienia, a następnie wybierz pozycję Utwórz.
Po utworzeniu tematu niestandardowego wybierz link Przejdź do zasobu , aby otworzyć stronę Temat usługi Event Grid dla tego tematu.
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.
Na stronie Temat usługi Event Grid dla tematu niestandardowego wybierz pozycję + Subskrypcja zdarzeń na pasku narzędzi.
W okienku Tworzenie subskrypcji zdarzeń wykonaj następujące kroki:
W polu Nazwa wprowadź nazwę subskrypcji zdarzeń.
W polu Schemat zdarzeń wybierz pozycję Schemat zdarzeń w chmurze w wersji 1.0.
W polu Typ punktu końcowego wybierz pozycję Funkcja platformy Azure.
Wybierz pozycję Konfiguruj punkt końcowy.
W okienku Wybieranie funkcji platformy Azure wykonaj następujące kroki:
W polu Subskrypcja wybierz subskrypcję platformy Azure, która ma funkcję.
W polu Grupa zasobów wybierz grupę zasobów, która ma funkcję .
W polu Aplikacja funkcji wybierz aplikację funkcji.
W polu Funkcja wybierz funkcję w aplikacji funkcji.
Wybierz pozycję Potwierdź wybór.
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.
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
W witrynie Azure Portal wybierz pozycję Cloud Shell. Jeśli jesteś w trybie programu Azure PowerShell, wybierz pozycję Przełącz na powłokę Bash.
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"
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)
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)
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"} ]'
Uruchom następujące polecenie cURL, aby opublikować zdarzenie:
curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint
Upewnij się, że komunikat z funkcji jest wyświetlany na karcie Dzienniki funkcji w witrynie Azure Portal.
Azure PowerShell
W drugim przykładzie do wykonania podobnych kroków użyto programu Azure PowerShell.
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.
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"
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
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)+"]"
Invoke-WebRequest
Użyj polecenia cmdlet , aby wysłać zdarzenie:Invoke-WebRequest -Uri $endpoint -Method POST -Body $body -Headers @{"aeg-sas-key" = $keys.Key1}
Upewnij się, że komunikat z funkcji jest wyświetlany na karcie Dzienniki funkcji w witrynie Azure Portal.
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.
Na stronie Monitorowanie funkcji znajdź wywołanie.
Wybierz wywołanie, aby wyświetlić szczegóły.
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.
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.
W menu po lewej stronie wybierz pozycję Grupy zasobów.
Alternatywą jest wybranie pozycji Wszystkie usługi w menu po lewej stronie, a następnie wybranie pozycji Grupy zasobów.
Wybierz grupę zasobów, aby otworzyć okienko, aby uzyskać szczegółowe informacje.
Na pasku narzędzi wybierz pozycję Usuń grupę zasobów.
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.
Powiązana zawartość
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:
- Event Grid — informacje
- Kierowanie zdarzeń usługi Azure Blob Storage do niestandardowego internetowego punktu końcowego
- Monitorowanie zmian maszyn wirtualnych za pomocą usług Azure Event Grid i Logic Apps
- Przesyłanie strumieniowe danych Big Data do magazynu danych
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: