Udostępnij za pośrednictwem


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:

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.

Zrzut ekranu przedstawiający nawiązywanie połączenia z nową subskrypcją zdarzeń w celu wyzwolenia w portalu.

Po wybraniu tego linku w portalu zostanie otwarta strona Tworzenie subskrypcji zdarzeń z już zdefiniowanym bieżącym punktem końcowym wyzwalacza.

Zrzut ekranu przedstawiający tworzenie subskrypcji zdarzeń z już zdefiniowanym punktem końcowym funkcji.

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:

  1. Utwórz aplikację internetową przeglądarki, która przechwytuje komunikaty o zdarzeniach.
  2. Utwórz subskrypcję usługi Event Grid, która wysyła zdarzenia do aplikacji przeglądarki.
  3. Wygeneruj żądanie i skopiuj treść żądania z aplikacji przeglądarki.
  4. 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.

Przycisk wdrażania szablonu usługi Resource Manager na platformie Azure.

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

Wyświetlanie nowej witryny

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.

Kopiowanie treści żądania z aplikacji internetowej

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:

Przykładowe dzienniki funkcji wyzwalacza usługi Event Grid

Następne kroki

Aby dowiedzieć się więcej o usłudze Event Grid z usługą Functions, zobacz następujące artykuły: