Jak pracować z wyzwalaczami i powiązaniami usługi Event Grid w usłudze Azure Functions
Usługa Azure Functions zapewnia wbudowaną integrację z usługą Azure Event Grid przy użyciu wyzwalaczy i powiązań. W tym artykule pokazano, jak skonfigurować i lokalnie ocenić wyzwalacz i powiązania usługi Event Grid. Aby uzyskać więcej informacji na temat definicji i przykładów powiązań wyjściowych usługi Event Grid, zobacz jeden z następujących artykułów referencyjnych:
- Omówienie powiązań usługi Azure Event Grid
- Wyzwalacz usługi Azure Event Grid dla usługi Azure Functions
- Powiązanie wyjściowe usługi Azure Event Grid dla usługi Azure Functions
Tworzenie subskrypcji zdarzeń
Aby rozpocząć odbieranie żądań HTTP usługi Event Grid, potrzebujesz subskrypcji zdarzeń zgłaszanych przez usługę Event Grid. Subskrypcje zdarzeń określają adres URL punktu końcowego, który wywołuje funkcję. Po utworzeniu subskrypcji zdarzeń na karcie Integracja funkcji w witrynie Azure Portal zostanie podany adres URL. Jeśli programowo utworzysz subskrypcję zdarzeń lub podczas tworzenia subskrypcji zdarzeń z usługi Event Grid, musisz podać punkt końcowy. Adres URL punktu końcowego zawiera klucz systemowy, który należy uzyskać z interfejsów API REST administratora usługi Functions.
Uzyskiwanie adresu URL punktu końcowego elementu webhook
Punkt końcowy adresu URL funkcji wyzwalanej przez usługę Event Grid zależy od wersji środowiska uruchomieniowego usługi Functions. W poniższym przykładzie przedstawiono wzorzec adresu URL specyficzny dla wersji:
https://{functionappname}.azurewebsites.net/runtime/webhooks/eventgrid?functionName={functionname}&code={systemkey}
Uwaga
Istnieje wersja wyzwalacza usługi Blob Storage, która używa również subskrypcji zdarzeń. Adres URL punktu końcowego dla tego rodzaju wyzwalacza usługi Blob Storage ma ścieżkę /runtime/webhooks/blobs
, natomiast ścieżka wyzwalacza usługi Event Grid to /runtime/webhooks/EventGrid
. Aby zapoznać się z porównaniem opcji przetwarzania obiektów blob, zobacz Wyzwalanie w kontenerze obiektów blob.
Uzyskiwanie klucza systemowego
Utworzony punkt końcowy adresu URL zawiera wartość klucza systemowego. Klucz systemowy jest kluczem autoryzacji specyficznym dla elementu webhook usługi Event Grid, który musi zostać uwzględniony w żądaniu do adresu URL punktu końcowego dla wyzwalacza usługi Event Grid. W poniższej sekcji wyjaśniono, jak uzyskać klucz systemowy.
Klucz główny aplikacji funkcji można również pobrać z poziomu kluczy aplikacji usługi Functions>w portalu.
Uwaga
Klucz główny zapewnia administratorowi dostęp do aplikacji funkcji. Nie udostępniaj tego klucza innym firmom ani nie rozpowszechniaj go w natywnych aplikacjach klienckich.
Aby uzyskać więcej informacji, zobacz Praca z kluczami dostępu w usłudze Azure Functions.
Klucz systemowy można pobrać z aplikacji funkcji przy użyciu następujących interfejsów API administratora (HTTP GET):
http://{functionappname}.azurewebsites.net/admin/host/systemkeys/eventgrid_extension?code={masterkey}
Ten interfejs API REST jest interfejsem API administratora, dlatego wymaga klucza głównego aplikacji funkcji. Nie należy mylić klucza systemowego (w przypadku wywoływania funkcji wyzwalacza usługi Event Grid) przy użyciu klucza głównego (do wykonywania zadań administracyjnych w aplikacji funkcji). Podczas subskrybowania tematu usługi Event Grid pamiętaj, aby użyć klucza systemowego.
Oto przykład odpowiedzi, która udostępnia klucz systemowy:
{
"name": "eventgridextensionconfig_extension",
"value": "{the system key for the function}",
"links": [
{
"rel": "self",
"href": "{the URL for the function, without the system key}"
}
]
}
Tworzenie subskrypcji
Subskrypcję zdarzeń można utworzyć w witrynie Azure Portal lub przy użyciu interfejsu wiersza polecenia platformy Azure.
W przypadku funkcji tworzonych w witrynie Azure Portal za pomocą wyzwalacza usługi Event Grid wybierz pozycję Integracja , a następnie wybierz pozycję Wyzwalacz usługi Event Grid i wybierz pozycję Utwórz subskrypcję usługi Event Grid.
Po wybraniu tego linku w portalu zostanie otwarta strona Tworzenie subskrypcji zdarzeń z już zdefiniowanym bieżącym punktem końcowym wyzwalacza.
Aby uzyskać więcej informacji na temat tworzenia subskrypcji przy użyciu witryny Azure Portal, zobacz Tworzenie zdarzeń niestandardowych — Azure Portal w dokumentacji usługi Event Grid.
Aby uzyskać więcej informacji na temat tworzenia subskrypcji, zobacz przewodnik Szybki start dotyczący usługi Blob Storage lub inne przewodniki Szybki start usługi Event Grid.
Lokalne testowanie za pomocą aplikacji internetowej przeglądarki
Aby przetestować wyzwalacz usługi Event Grid lokalnie, musisz pobrać żądania HTTP usługi Event Grid dostarczone z ich źródła w chmurze do komputera lokalnego. Jednym ze sposobów na to jest przechwytywanie żądań w trybie online i ręczne ponowne wysyłanie ich na komputerze lokalnym:
- Utwórz aplikację internetową przeglądarki, która przechwytuje komunikaty o zdarzeniach.
- Utwórz subskrypcję usługi Event Grid, która wysyła zdarzenia do aplikacji przeglądarki.
- Wygeneruj żądanie i skopiuj treść żądania z aplikacji przeglądarki.
- Ręcznie opublikuj żądanie pod adresem URL hosta lokalnego funkcji wyzwalacza usługi Event Grid.
Aby wysłać żądanie postu HTTP, potrzebne jest narzędzie do testowania HTTP. Pamiętaj, aby wybrać narzędzie, które zapewnia bezpieczeństwo danych. Aby uzyskać więcej informacji, zobacz Narzędzia do testowania HTTP.
Po zakończeniu testowania możesz użyć tej samej subskrypcji dla środowiska produkcyjnego, aktualizując punkt końcowy. Użyj polecenia interfejsu wiersza polecenia platformy az eventgrid event-subscription update
Azure.
Tworzenie aplikacji internetowej przeglądarki
Aby uprościć przechwytywanie komunikatów o zdarzeniach, można wdrożyć 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.
Wybierz pozycję Wdróż na platformie Azure w celu wdrożenia rozwiązania w subskrypcji. W witrynie Azure Portal podaj wartości parametrów.
Wdrożenie może potrwać kilka minut. Po pomyślnym wdrożeniu należy wyświetlić aplikację sieci Web i upewnić się, że jest uruchomiona. W przeglądarce sieci Web przejdź do: https://<your-site-name>.azurewebsites.net
Zobaczysz witrynę, w której nie opublikowano jeszcze żadnych zdarzeń.
Tworzenie subskrypcji usługi Event Grid
Utwórz subskrypcję usługi Event Grid typu, który chcesz przetestować, i nadaj mu adres URL z aplikacji internetowej jako punkt końcowy powiadomienia o zdarzeniach. Punkt końcowy dla aplikacji internetowej musi zawierać sufiks /api/updates/
. W związku z tym pełny adres URL to https://<your-site-name>.azurewebsites.net/api/updates
Aby uzyskać informacje o sposobie tworzenia subskrypcji przy użyciu witryny Azure Portal, zobacz Tworzenie zdarzeń niestandardowych — Azure Portal w dokumentacji usługi Event Grid.
Generowanie żądania
Wyzwalanie zdarzenia, które spowoduje wygenerowanie ruchu HTTP do punktu końcowego aplikacji internetowej. Jeśli na przykład utworzono subskrypcję magazynu obiektów blob, przekaż lub usuń obiekt blob. Gdy żądanie pojawi się w aplikacji internetowej, skopiuj treść żądania.
Żądanie weryfikacji subskrypcji zostanie odebrane jako pierwsze; ignoruj wszystkie żądania weryfikacji i skopiuj żądanie zdarzenia.
Ręczne publikowanie żądania
Uruchom lokalnie funkcję usługi Event Grid. Aby Content-Type
ręcznie ustawić nagłówki i aeg-event-type
, a wszystkie inne wartości mogą być pozostawione jako domyślne.
Użyj narzędzia do testowania HTTP, aby utworzyć żądanie HTTP POST:
Content-Type: application/json
Ustaw nagłówek.aeg-event-type: Notification
Ustaw nagłówek.Wklej dane RequestBin do treści żądania.
Wyślij żądanie HTTP POST do punktu końcowego, który ręcznie uruchamia wyzwalacz usługi Event Grid.
http://localhost:7071/runtime/webhooks/eventgrid?functionName={FUNCTION_NAME}
Parametr functionName
musi być nazwą określoną w atrybucie FunctionName
.
Funkcja wyzwalacza usługi Event Grid jest wykonywana i pokazuje dzienniki podobne do poniższego przykładu:
Następne kroki
Aby dowiedzieć się więcej o usłudze Event Grid z usługą Functions, zobacz następujące artykuły: