Używanie usługi Event Grid dla powiadomień o zmianie danych usługi App Configuration

Z tego artykułu dowiesz się, jak skonfigurować subskrypcje zdarzeń konfiguracji aplikacja systemu Azure w celu wysyłania zdarzeń modyfikacji klucz-wartość do internetowego punktu końcowego. aplikacja systemu Azure Użytkownicy usługi Configuration mogą subskrybować zdarzenia emitowane za każdym razem, gdy wartości kluczy są modyfikowane. Te zdarzenia mogą wyzwalać elementy webhook, usługę Azure Functions, kolejki usługi Azure Storage lub dowolną inną procedurę obsługi zdarzeń obsługiwaną przez usługę Azure Event Grid. Zazwyczaj użytkownik wysyła zdarzenia do punktu końcowego, w którym następuje przetwarzanie danych zdarzenia i są wykonywane akcje. Jednak aby uprościć ten artykuł, zdarzenia zostaną wysłane do aplikacji internetowej, która zbiera i wyświetla komunikaty.

Wymagania wstępne

  • Subskrypcja platformy Azure — utwórz bezpłatnie. Opcjonalnie możesz użyć usługi Azure Cloud Shell.

Azure Cloud Shell

Na platforma Azure hostowane jest Azure Cloud Shell, interaktywne środowisko powłoki, z którego można korzystać w przeglądarce. Do pracy z usługami platformy Azure można używać programu Bash lub PowerShell w środowisku Cloud Shell. Aby uruchomić kod w tym artykule, możesz użyć wstępnie zainstalowanych poleceń usługi Cloud Shell bez konieczności instalowania niczego w środowisku lokalnym.

Aby uruchomić środowisko Azure Cloud Shell:

Opcja Przykład/link
Wybierz pozycję Wypróbuj w prawym górnym rogu bloku kodu lub polecenia. Wybranie pozycji Wypróbuj nie powoduje automatycznego skopiowania kodu lub polecenia do usługi Cloud Shell. Screenshot that shows an example of Try It for Azure Cloud Shell.
Przejdź do witryny https://shell.azure.com lub wybierz przycisk Uruchom Cloud Shell, aby otworzyć środowisko Cloud Shell w przeglądarce. Button to launch Azure Cloud Shell.
Wybierz przycisk Cloud Shell na pasku menu w prawym górnym rogu witryny Azure Portal. Screenshot that shows the Cloud Shell button in the Azure portal

Aby użyć usługi Azure Cloud Shell:

  1. Uruchom usługę Cloud Shell.

  2. Wybierz przycisk Kopiuj w bloku kodu (lub bloku poleceń), aby skopiować kod lub polecenie.

  3. Wklej kod lub polecenie do sesji usługi Cloud Shell, wybierając klawisze Ctrl+Shift V w systemach Windows i Linux lub wybierając pozycję Cmd+Shift++V w systemie macOS.

  4. Wybierz klawisz Enter, aby uruchomić kod lub polecenie.

Jeśli zdecydujesz się zainstalować interfejs wiersza polecenia i korzystać z niego lokalnie, w tym artykule jest wymagana najnowsza wersja interfejsu wiersza polecenia platformy Azure (2.0.70 lub nowsza). Aby dowiedzieć się, jaka wersja jest używana, uruchom polecenie az --version. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.

Jeśli nie korzystasz z usługi Cloud Shell, musisz się najpierw zalogować za pomocą polecenia az login.

Tworzenie grupy zasobów

Tematy usługi Event Grid to zasoby platformy Azure i muszą być umieszczone w grupie zasobów platformy Azure. Grupa zasobów to kolekcja logiczna przeznaczona do wdrażania zasobów platformy Azure i zarządzania nimi.

Utwórz grupę zasobów za pomocą polecenia az group create.

Poniższy przykład tworzy grupę zasobów o nazwie <resource_group_name> w lokalizacji westus . Zamień <resource_group_name> na unikatową nazwę grupy zasobów.

az group create --name <resource_group_name> --location westus

Tworzenie magazynu usługi App Configuration

Zastąp <appconfig_name> ciąg unikatową nazwą magazynu konfiguracji i <resource_group_name> utworzoną wcześniej grupą zasobów. Nazwa musi być unikatowa, ponieważ jest używana jako nazwa DNS.

az appconfig create \
  --name <appconfig_name> \
  --location westus \
  --resource-group <resource_group_name> \
  --sku free

Tworzenie punktu końcowego komunikatów

Przed zasubskrybowaniem tematu utwórzmy punkt końcowy dla komunikatów o zdarzeniach. Zazwyczaj w punkcie końcowym akcje są wykonywane na podstawie danych zdarzenia. Aby uprościć ten przewodnik Szybki Start, wdrożysz wstępnie zbudowaną aplikację sieci Web, która będzie 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.

Zastąp <your-site-name> unikatową nazwą aplikacji internetowej. Nazwa aplikacji internetowej musi być unikatowa, ponieważ stanowi część wpisu DNS.

$sitename=<your-site-name>

az deployment group create \
  --resource-group <resource_group_name> \
  --template-uri "https://raw.githubusercontent.com/Azure-Samples/azure-event-grid-viewer/master/azuredeploy.json" \
  --parameters siteName=$sitename hostingPlanName=viewerhost

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

Powinna być widoczna witryna internetowa bez żadnych aktualnie wyświetlanych komunikatów.

Włączanie dostawcy zasobów usługi Event Grid

  1. Jeśli usługa Event Grid nie była wcześniej używana w ramach subskrypcji platformy Azure, może być konieczne zarejestrowanie dostawcy zasobów usługi Event Grid. Uruchom następujące polecenie, aby zarejestrować dostawcę:

    az provider register --namespace Microsoft.EventGrid
    
  2. Ukończenie rejestracji może zająć trochę czasu. Aby sprawdzić stan, uruchom następujące polecenie:

    az provider show --namespace Microsoft.EventGrid --query "registrationState"
    

    Gdy właściwość registrationState uzyska wartość Registered, można kontynuować.

Subskrybowanie sklepu App Configuration

Subskrybowanie tematu to dla usługi Event Grid informacja o tym, które zdarzenia chcesz śledzić i gdzie mają być one wysyłane. Poniższy przykład subskrybuje utworzoną konfigurację aplikacji i przekazuje adres URL z aplikacji internetowej jako punkt końcowy powiadomienia o zdarzeniach. Zastąp element <event_subscription_name> nazwą Twojej subskrypcji zdarzeń. Jako parametrów <resource_group_name> i <appconfig_name> użyj utworzonych wcześniej wartości.

Punkt końcowy dla aplikacji internetowej musi zawierać sufiks /api/updates/.

appconfigId=$(az appconfig show --name <appconfig_name> --resource-group <resource_group_name> --query id --output tsv)
endpoint=https://$sitename.azurewebsites.net/api/updates

az eventgrid event-subscription create \
  --source-resource-id $appconfigId \
  --name <event_subscription_name> \
  --endpoint $endpoint

Wyświetl aplikację sieci Web ponownie i zwróć uwagę, że zdarzenie sprawdzania poprawności subskrypcji zostało do niej wysłane. Wybierz ikonę oka, aby rozwinąć dane zdarzenia. Usługa Event Grid wysyła zdarzenie weryfikacji, aby w punkcie końcowym mogło nastąpić sprawdzenie, czy dane zdarzenia mają być odbierane. Aplikacja internetowa zawiera kod do sprawdzania poprawności subskrypcji.

View subscription event

Wyzwalanie zdarzenia konfiguracji aplikacji

Teraz wyzwólmy zdarzenie, aby zobaczyć, jak usługa Event Grid dystrybuuje komunikat do punktu końcowego. Utwórz wartość klucz-wartość przy użyciu wartości z wcześniejszej <appconfig_name> .

az appconfig kv set --name <appconfig_name> --key Foo --value Bar --yes

Zdarzenie zostało wyzwolone, a usługa Event Grid wysłała komunikat do punktu końcowego skonfigurowanego podczas subskrybowania. Wyświetl aplikację sieci Web, aby wyświetlić właśnie wysłane zdarzenie.

[{
  "id": "00000000-0000-0000-0000-000000000000",
  "topic": "/subscriptions/{subscription-id}/resourceGroups/eventDemoGroup/providers/microsoft.appconfiguration/configurationstores/{appconfig-name}",
  "subject": "https://{appconfig-name}.azconfig.io/kv/Foo",
  "data": {
    "key": "Foo",
    "etag": "a1LIDdNEIV6wCnfv3xaip7fMXD3",
    "syncToken":"zAJw6V16=Njo1IzMzMjE3MzA=;sn=3321730"
  },
  "eventType": "Microsoft.AppConfiguration.KeyValueModified",
  "eventTime": "2019-05-31T18:59:54Z",
  "dataVersion": "1",
  "metadataVersion": "1"
}]

Czyszczenie zasobów

Jeśli planujesz kontynuować pracę z tą konfiguracją aplikacji i subskrypcją zdarzeń, nie usuwaj zasobów utworzonych w tym artykule. Jeśli nie planujesz kontynuowania pracy, użyj poniższego polecenia, aby usunąć zasoby utworzone w ramach tego artykułu.

Zamień <resource_group_name> na utworzoną powyżej grupę zasobów.

az group delete --name <resource_group_name>

Następne kroki

Teraz, gdy wiesz, jak tworzyć tematy i subskrypcje zdarzeń, dowiedz się więcej o zdarzeniach klucz-wartość i o tym, co usługa Event Grid może ci pomóc: