Onderwerpen beheren en gebeurtenissen publiceren met gebeurtenisdomeinen
In dit artikel wordt uitgelegd hoe u het volgende kunt doen:
- Een Event Grid-domein maken
- Abonneren op Event Grid-onderwerpen
- Sleutels vermelden
- Gebeurtenissen publiceren naar een domein
Zie Gebeurtenisdomeinen begrijpen voor het beheren van Event Grid-onderwerpen voor meer informatie over gebeurtenisdomeinen.
Een gebeurtenisdomein maken
Als u grote sets onderwerpen wilt beheren, maakt u een gebeurtenisdomein.
az eventgrid domain create \
-g <my-resource-group> \
--name <my-domain-name> \
-l <location>
Geslaagde creatie retourneert de volgende waarden:
{
"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"
}
Let op de endpoint
vereisten id
voor het beheren van het domein en het publiceren van gebeurtenissen.
Toegang tot onderwerpen beheren
Het beheren van toegang tot onderwerpen wordt uitgevoerd via roltoewijzing. Roltoewijzing maakt gebruik van op rollen gebaseerd toegangsbeheer van Azure om bewerkingen op Azure-resources te beperken tot geautoriseerde gebruikers binnen een bepaald bereik.
Event Grid heeft twee ingebouwde rollen, die u kunt gebruiken om bepaalde gebruikers toegang toe te wijzen aan verschillende onderwerpen binnen een domein. Deze rollen zijn EventGrid EventSubscription Contributor (Preview)
, waarmee abonnementen kunnen worden gemaakt en verwijderd, en EventGrid EventSubscription Reader (Preview)
, waardoor alleen gebeurtenisabonnementen kunnen worden vermeld.
De volgende Azure CLI-opdrachtlimieten alice@contoso.com
voor het maken en verwijderen van gebeurtenisabonnementen alleen op onderwerp 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
Zie Event Grid-beveiliging en -verificatie voor meer informatie over het beheren van toegang voor Event Grid-bewerkingen.
Onderwerpen en abonnementen maken
De Event Grid-service maakt en beheert automatisch het bijbehorende onderwerp in een domein op basis van de aanroep voor het maken van een gebeurtenisabonnement voor een domeinonderwerp. Er is geen afzonderlijke stap voor het maken van een onderwerp in een domein. Op dezelfde manier wordt het onderwerp ook verwijderd wanneer het laatste gebeurtenisabonnement voor een onderwerp wordt verwijderd.
Abonneren op een onderwerp in een domein is hetzelfde als abonneren op een andere Azure-resource. Geef voor de bronresource-id de gebeurtenisdomein-id op die is geretourneerd bij het maken van het domein eerder. Als u het onderwerp wilt opgeven waarop u zich wilt abonneren, voegt u dit toe /topics/<my-topic>
aan het einde van de bronresource-id. Als u een gebeurtenisabonnement voor domeinbereik wilt maken dat alle gebeurtenissen in het domein ontvangt, geeft u de id van het gebeurtenisdomein op zonder dat u onderwerpen hoeft op te geven.
Normaal gesproken maakt de gebruiker waartoe u toegang hebt verleend in de vorige sectie het abonnement. Ter vereenvoudiging van dit artikel maakt u het abonnement.
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
Als u een testeindpunt nodig hebt om uw gebeurtenissen te abonneren, kunt u altijd een vooraf gedefinieerde web-app implementeren waarin de binnenkomende gebeurtenissen worden weergegeven. U kunt uw gebeurtenissen verzenden naar uw testwebsite op https://<your-site-name>.azurewebsites.net/api/updates
.
Machtigingen die zijn ingesteld voor een onderwerp, worden opgeslagen in Microsoft Entra-id en moeten expliciet worden verwijderd. Als u een gebeurtenisabonnement verwijdert, wordt de toegang van gebruikers tot het maken van gebeurtenisabonnementen niet ingetrokken als ze schrijftoegang hebben tot een onderwerp.
Gebeurtenissen publiceren naar een Event Grid-domein
Het publiceren van gebeurtenissen naar een domein is hetzelfde als het publiceren naar een aangepast onderwerp. In plaats van naar het aangepaste onderwerp te publiceren, publiceert u echter alle gebeurtenissen naar het domeineindpunt. In de JSON-gebeurtenisgegevens geeft u het onderwerp op waarnaar u de gebeurtenissen wilt laten gaan. De volgende matrix van gebeurtenissen zou resulteren in een gebeurtenis met "id": "1111"
naar onderwerp demotopic1
terwijl de gebeurtenis "id": "2222"
zou worden verzonden naar het onderwerp 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"
}]
Als u het domeineindpunt met Azure CLI wilt ophalen, gebruikt u
az eventgrid domain show \
-g <my-resource-group> \
-n <my-domain>
Als u de sleutels voor een domein wilt ophalen, gebruikt u:
az eventgrid domain key list \
-g <my-resource-group> \
-n <my-domain>
En gebruik vervolgens uw favoriete methode om een HTTP POST te maken om uw gebeurtenissen te publiceren naar uw Event Grid-domein.
Notitie
Gebruik de volgende koppelingen voor voorbeelden die gebruikmaken van SDK's voor programmeertaal om gebeurtenissen te publiceren naar een Event Grid-domein:
Zoeken in lijsten met onderwerpen of abonnementen
Voor het zoeken en beheren van een groot aantal onderwerpen of abonnementen bieden de Event Grid-API's ondersteuning voor vermelding en paginering.
CLI gebruiken
Met de volgende opdracht worden bijvoorbeeld alle onderwerpen met de naam vermeld.mytopic
az eventgrid topic list --odata-query "contains(name, 'mytopic')"
Zie voor meer informatie over deze opdracht az eventgrid topic list
.
Volgende stappen
- Zie het conceptuele overzicht van gebeurtenisdomeinen voor meer informatie over concepten op hoog niveau in gebeurtenisdomeinen en waarom deze nuttig zijn.