Szybki start: przekierowanie zdarzeń niestandardowych do usługi Azure Queue Storage przy użyciu interfejsu wiersza polecenia platformy Azure i Event Grid

Azure Event Grid to usługa obsługi zdarzeń dla chmury. Magazyn kolejek platformy Azure jest jedną z obsługiwanych procedur obsługi zdarzeń. W tym artykule omówiono tworzenie tematu niestandardowego, subskrybowanie go i wyzwalanie zdarzenia w celu wyświetlenia wyniku za pomocą interfejsu wiersza polecenia platformy Azure. Wyślesz zdarzenia do magazynu kolejek.

Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem Utwórz bezpłatne konto .

Wymagania wstępne

  • Ten artykuł wymaga interfejsu wiersza polecenia platformy Azure w wersji 2.0.56 lub nowszej. Jeśli używasz Azure Cloud Shell, najnowsza wersja jest już zainstalowana.

  • Jeśli używasz programu Azure PowerShell na komputerze lokalnym zamiast programu Cloud Shell w Azure Portal, upewnij się, że masz wersję Azure PowerShell 1.1.0 lub nowszą. Pobierz najnowszą wersję modułu Azure PowerShell na komputer z systemem Windows ze strony Pliki do pobrania platformy Azure — narzędzia wiersza polecenia.

Ten artykuł zawiera polecenia umożliwiające korzystanie z wiersza polecenia platformy Azure.

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 obejmuje tworzenie grupy zasobów o nazwie gridResourceGroup w lokalizacji westus2.

az group create --name gridResourceGroup --location westus2

Włączanie dostawcy zasobów Event Grid

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

az provider register --namespace Microsoft.EventGrid

Ukończenie rejestracji może chwilę potrwać. Aby sprawdzić stan, uruchom polecenie:

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

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

Tworzenie tematu niestandardowego

Temat usługi Event Grid udostępnia zdefiniowany przez użytkownika punkt końcowy, w którym publikowane są zdarzenia. Poniższy przykład obejmuje tworzenie tematu niestandardowego w grupie zasobów. Zamień nazwę <topic_name> na unikatową nazwę tematu niestandardowego. Nazwa tematu usługi Event Grid musi być unikatowa, ponieważ jest reprezentowana przez wpis DNS.

az eventgrid topic create --name <topic_name> -l westus2 -g gridResourceGroup

Tworzenie magazynu kolejek

Przed subskrybowaniem tematu niestandardowego utwórzmy punkt końcowy dla komunikatu o zdarzeniach. Utworzysz magazyn kolejek w celu zbierania zdarzeń.

storagename="<unique-storage-name>"
queuename="eventqueue"

az storage account create -n $storagename -g gridResourceGroup -l westus2 --sku Standard_LRS
az storage queue create --name $queuename --account-name $storagename

Subskrybowanie tematu niestandardowego

Subskrybowanie tematu niestandardowego umożliwia Event Grid, które zdarzenia chcesz śledzić. Poniższy przykład subskrybuje utworzony temat niestandardowy i przekazuje identyfikator zasobu magazynu kolejek dla punktu końcowego. Za pomocą interfejsu wiersza polecenia platformy Azure przekaż identyfikator magazynu kolejek jako punkt końcowy. Punkt końcowy ma następujący format:

/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-name>/queueservices/default/queues/<queue-name>

Poniższy skrypt pobiera identyfikator zasobu konta magazynu dla kolejki. Tworzy identyfikator magazynu kolejek i subskrybuje temat usługi Event Grid. Określa typ punktu końcowego na storagequeue i używa identyfikatora kolejki dla punktu końcowego.

storageid=$(az storage account show --name $storagename --resource-group gridResourceGroup --query id --output tsv)
queueid="$storageid/queueservices/default/queues/$queuename"
topicid=$(az eventgrid topic show --name <topic_name> -g gridResourceGroup --query id --output tsv)

az eventgrid event-subscription create \
  --source-resource-id $topicid \
  --name <event_subscription_name> \
  --endpoint-type storagequeue \
  --endpoint $queueid \
  --expiration-date "<yyyy-mm-dd>"

Konto używane do tworzenia subskrypcji zdarzeń musi mieć dostęp do zapisu w magazynie kolejek. Należy zauważyć, że ustawiono datę wygaśnięcia subskrypcji.

Jeśli korzystasz z interfejsu API REST do utworzenia subskrypcji, identyfikator konta magazynu i nazwa kolejki są przekazywane jako oddzielne parametry.

"destination": {
  "endpointType": "storagequeue",
  "properties": {
    "queueName":"eventqueue",
    "resourceId": "/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-name>"
  }
  ...

Wysyłanie zdarzenia do tematu niestandardowego

Wyzwólmy zdarzenie, aby zobaczyć, jak usługa Event Grid dystrybuuje komunikat do punktu końcowego. Po pierwsze uzyskajmy adres URL i klucz tematu niestandardowego. Ponownie użyj nazwy tematu niestandardowego dla wartości <topic_name>.

endpoint=$(az eventgrid topic show --name <topic_name> -g gridResourceGroup --query "endpoint" --output tsv)
key=$(az eventgrid topic key list --name <topic_name> -g gridResourceGroup --query "key1" --output tsv)

Dla uproszczenia czynności opisanych w tym artykule do tematu niestandardowego zostaną wysłane przykładowe dane zdarzenia. Zwykle dane zdarzenia są wysyłane przez aplikację lub usługę platformy Azure. CURL to narzędzie, które wysyła żądania HTTP. W tym artykule do wysłania zdarzenia do tematu niestandardowego jest używane narzędzie CURL. W poniższym przykładzie są wysyłane trzy zdarzenia do tematu usługi Event Grid:

for i in 1 2 3
do
   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"} ]'
   curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint
done

Przejdź do magazynu kolejek w portalu i zwróć uwagę, że usługa Event Grid wysłała te trzy zdarzenia do kolejki.

Wyświetlanie komunikatów

Uwaga

Jeśli używasz wyzwalacza usługi Azure Queue Storage dla kolejki Azure Functions, która odbiera komunikaty z usługi Event Grid, podczas wykonywania funkcji może zostać wyświetlony następujący komunikat o błędzie: The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or an illegal character among the padding characters.

Przyczyną jest to, że w przypadku korzystania z wyzwalacza usługi Azure Queue Storageusługa Azure Functions ciąg zakodowany w formacie base64, ale usługa Event Grid wysyła komunikaty do kolejki magazynu w formacie zwykłego tekstu. Obecnie nie jest możliwe skonfigurowanie wyzwalacza kolejki, aby Azure Functions akceptować zwykły tekst.

Czyszczenie zasobów

Jeśli zamierzasz kontynuować pracę z tym zdarzeniem, nie usuwaj zasobów utworzonych w tym artykule. W przeciwnym razie użyj poniższego polecenia, aby usunąć zasoby utworzone w ramach tego artykułu.

az group delete --name gridResourceGroup

Następne kroki

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:

Zapoznaj się z poniższymi przykładami, aby dowiedzieć się więcej o publikowaniu zdarzeń i używaniu zdarzeń z Event Grid przy użyciu różnych języków programowania.