Zarządzanie tematami i publikowanie zdarzeń przy użyciu domen zdarzeń
W tym artykule pokazano, jak:
- Tworzenie domeny usługi Event Grid
- Subskrybowanie tematów usługi Event Grid
- Wyświetlanie listy kluczy
- Publikowanie zdarzeń w domenie
Aby dowiedzieć się więcej o domenach zdarzeń, zobacz Omówienie domen zdarzeń na potrzeby zarządzania tematami usługi Event Grid.
Tworzenie domeny zdarzeń
Aby zarządzać dużymi zestawami tematów, utwórz domenę zdarzeń.
az eventgrid domain create \
-g <my-resource-group> \
--name <my-domain-name> \
-l <location>
Pomyślne utworzenie zwraca następujące wartości:
{
"endpoint": "https://<my-domain-name>.westus2-1.eventgrid.azure.net/api/events",
"id": "/subscriptions/<sub-id>/resourceGroups/<my-resource-group>/providers/Microsoft.EventGrid/domains/<my-domain-name>",
"inputSchema": "EventGridSchema",
"inputSchemaMapping": null,
"location": "westus2",
"name": "<my-domain-name>",
"provisioningState": "Succeeded",
"resourceGroup": "<my-resource-group>",
"tags": null,
"type": "Microsoft.EventGrid/domains"
}
Zanotuj elementy endpoint
i id
, ponieważ są one wymagane do zarządzania domeną i publikowania zdarzeń.
Zarządzanie dostępem do tematów
Zarządzanie dostępem do tematów odbywa się za pośrednictwem przypisania roli. Przypisanie roli używa kontroli dostępu opartej na rolach platformy Azure, aby ograniczyć operacje na zasobach platformy Azure autoryzowanym użytkownikom w określonym zakresie.
Usługa Event Grid ma dwie wbudowane role, których można użyć do przypisywania dostępu do określonych użytkowników w różnych tematach w domenie. Te role to EventGrid EventSubscription Contributor (Preview)
, co umożliwia tworzenie i usuwanie subskrypcji oraz EventGrid EventSubscription Reader (Preview)
, co umożliwia wyświetlanie tylko listy subskrypcji zdarzeń.
Następujące polecenie interfejsu wiersza polecenia platformy alice@contoso.com
Azure ogranicza tworzenie i usuwanie subskrypcji zdarzeń tylko w temacie demotopic1
:
az role assignment create \
--assignee alice@contoso.com \
--role "EventGrid EventSubscription Contributor (Preview)" \
--scope /subscriptions/<sub-id>/resourceGroups/<my-resource-group>/providers/Microsoft.EventGrid/domains/<my-domain-name>/topics/demotopic1
Aby uzyskać więcej informacji na temat zarządzania dostępem do operacji usługi Event Grid, zobacz Zabezpieczenia i uwierzytelnianie usługi Event Grid.
Tworzenie tematów i subskrypcji
Usługa Event Grid automatycznie tworzy odpowiedni temat w domenie i zarządza nim na podstawie wywołania w celu utworzenia subskrypcji zdarzeń dla tematu domeny. Nie ma oddzielnego kroku tworzenia tematu w domenie. Podobnie, gdy ostatnia subskrypcja zdarzeń dla tematu zostanie usunięta, również temat zostanie usunięty.
Subskrybowanie tematu w domenie jest takie samo jak subskrybowanie dowolnego innego zasobu platformy Azure. W przypadku identyfikatora zasobu źródłowego określ identyfikator domeny zdarzenia zwrócony podczas tworzenia domeny wcześniej. Aby określić temat, do którego chcesz zasubskrybować, dodaj /topics/<my-topic>
go na końcu identyfikatora zasobu źródłowego. Aby utworzyć subskrypcję zdarzeń zakresu domeny, która odbiera wszystkie zdarzenia w domenie, określ identyfikator domeny zdarzeń bez określania tematów.
Zazwyczaj użytkownik, któremu udzielono dostępu w poprzedniej sekcji, utworzy subskrypcję. Aby uprościć ten artykuł, należy utworzyć subskrypcję.
az eventgrid event-subscription create \
--name <event-subscription> \
--source-resource-id "/subscriptions/<sub-id>/resourceGroups/<my-resource-group>/providers/Microsoft.EventGrid/domains/<my-domain-name>/topics/demotopic1" \
--endpoint https://contoso.azurewebsites.net/api/updates
Jeśli potrzebujesz testowego punktu końcowego do subskrybowania zdarzeń, zawsze możesz wdrożyć wstępnie utworzoną aplikację internetową, która wyświetla zdarzenia przychodzące. Zdarzenia można wysyłać do testowej witryny internetowej pod adresem https://<your-site-name>.azurewebsites.net/api/updates
.
Uprawnienia ustawione dla tematu są przechowywane w identyfikatorze Entra firmy Microsoft i muszą zostać jawnie usunięte. Usunięcie subskrypcji zdarzeń nie powoduje odwołania dostępu użytkowników do tworzenia subskrypcji zdarzeń, jeśli mają dostęp do zapisu w temacie.
Publikowanie zdarzeń w domenie usługi Event Grid
Publikowanie zdarzeń w domenie jest takie samo jak publikowanie w temacie niestandardowym. Jednak zamiast publikować w temacie niestandardowym wszystkie zdarzenia są publikowane w punkcie końcowym domeny. W danych zdarzeń JSON określ temat, do którego mają przejść zdarzenia. Następująca tablica zdarzeń spowoduje zdarzenie z elementem "id": "1111"
do tematu demotopic1
, podczas gdy zdarzenie z elementem "id": "2222"
zostanie wysłane do tematu demotopic2
:
[{
"topic": "demotopic1",
"id": "1111",
"eventType": "maintenanceRequested",
"subject": "myapp/vehicles/diggers",
"eventTime": "2018-10-30T21:03:07+00:00",
"data": {
"make": "Contoso",
"model": "Small Digger"
},
"dataVersion": "1.0"
},
{
"topic": "demotopic2",
"id": "2222",
"eventType": "maintenanceCompleted",
"subject": "myapp/vehicles/tractors",
"eventTime": "2018-10-30T21:04:12+00:00",
"data": {
"make": "Contoso",
"model": "Big Tractor"
},
"dataVersion": "1.0"
}]
Aby uzyskać punkt końcowy domeny za pomocą interfejsu wiersza polecenia platformy Azure, użyj polecenia
az eventgrid domain show \
-g <my-resource-group> \
-n <my-domain>
Aby uzyskać klucze dla domeny, użyj:
az eventgrid domain key list \
-g <my-resource-group> \
-n <my-domain>
Następnie użyj ulubionej metody tworzenia postu HTTP, aby opublikować zdarzenia w domenie usługi Event Grid.
Uwaga
W przypadku przykładów, które używają zestawów SDK języka programowania do publikowania zdarzeń w domenie usługi Event Grid, użyj następujących linków:
Wyszukiwanie list tematów lub subskrypcji
Aby wyszukiwać i zarządzać dużą liczbą tematów lub subskrypcji, interfejsy API usługi Event Grid obsługują wyświetlanie listy i stronicowanie.
Korzystanie z interfejsu wiersza polecenia (CLI)
Na przykład następujące polecenie wyświetla listę wszystkich tematów o nazwie zawierającej mytopic
.
az eventgrid topic list --odata-query "contains(name, 'mytopic')"
Aby uzyskać więcej informacji na temat tego polecenia, zobacz az eventgrid topic list
.
Następne kroki
- Aby uzyskać więcej informacji na temat pojęć wysokiego poziomu w domenach zdarzeń i dlaczego są one przydatne, zobacz koncepcyjne omówienie domen zdarzeń.