Hantera ämnen och publicera händelser med hjälp av händelsedomäner

Den här artikeln visar hur du:

  • Skapa en Event Grid-domän
  • Prenumerera på Event Grid-ämnen
  • Listnycklar
  • Publicera händelser till en domän

Mer information om händelsedomäner finns i Förstå händelsedomäner för att hantera Event Grid-ämnen.

Skapa en händelsedomän

Om du vill hantera stora uppsättningar med ämnen skapar du en händelsedomän.

az eventgrid domain create \
  -g <my-resource-group> \
  --name <my-domain-name> \
  -l <location>

När du har skapat det returneras följande värden:

{
  "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"
}

Observera och endpointid när de krävs för att hantera domänen och publicera händelser.

Hantera åtkomst till ämnen

Hantering av åtkomst till ämnen sker via rolltilldelning. Rolltilldelning använder rollbaserad åtkomstkontroll i Azure för att begränsa åtgärder på Azure-resurser till behöriga användare i ett visst omfång.

Event Grid har två inbyggda roller som du kan använda för att tilldela specifika användare åtkomst till olika ämnen i en domän. Dessa roller är EventGrid EventSubscription Contributor (Preview), som gör det möjligt att skapa och ta bort prenumerationer, och EventGrid EventSubscription Reader (Preview), som endast tillåter lista över händelseprenumerationer.

Följande Azure CLI-kommandogränser alice@contoso.com för att skapa och ta bort händelseprenumerationer endast i ämnet 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

Mer information om hur du hanterar åtkomst för Event Grid-åtgärder finns i Säkerhet och autentisering för Event Grid.

Skapa ämnen och prenumerationer

Event Grid-tjänsten skapar och hanterar automatiskt motsvarande ämne i en domän baserat på anropet för att skapa en händelseprenumeration för ett domänämne. Det finns inget separat steg för att skapa ett ämne i en domän. På samma sätt tas även ämnet bort när den senaste händelseprenumerationen för ett ämne tas bort.

Att prenumerera på ett ämne i en domän är detsamma som att prenumerera på andra Azure-resurser. För källresurs-ID anger du det händelsedomän-ID som returnerades när domänen skapades tidigare. Om du vill ange det ämne som du vill prenumerera på lägger du till /topics/<my-topic> i slutet av källresurs-ID:t. Om du vill skapa en händelseprenumeration för domänomfattning som tar emot alla händelser i domänen anger du händelsedomänens ID utan att ange några ämnen.

Normalt skapar den användare som du gav åtkomst till i föregående avsnitt prenumerationen. För att förenkla den här artikeln skapar du prenumerationen.

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

Om du behöver en testslutpunkt för att prenumerera på dina händelser kan du alltid distribuera en fördefinierad webbapp som visar inkommande händelser. Du kan skicka dina händelser till testwebbplatsen på https://<your-site-name>.azurewebsites.net/api/updates.

Knapp för att distribuera till Azure.

Behörigheter som har angetts för ett ämne lagras i Microsoft Entra-ID och måste tas bort uttryckligen. Om du tar bort en händelseprenumeration återkallas inte en användares åtkomst till att skapa händelseprenumerationer om de har skrivåtkomst till ett ämne.

Publicera händelser till en Event Grid-domän

Publicering av händelser till en domän är detsamma som publicering till ett anpassat ämne. Men i stället för att publicera till det anpassade ämnet publicerar du alla händelser till domänslutpunkten. I JSON-händelsedata anger du det ämne som du vill att händelserna ska gå till. Följande matris med händelser skulle resultera i händelse med "id": "1111" till ämne demotopic1 medan händelsen med "id": "2222" skulle skickas till ämnet 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"
}]

Om du vill hämta domänslutpunkten med Azure CLI använder du

az eventgrid domain show \
  -g <my-resource-group> \
  -n <my-domain>

Om du vill hämta nycklarna för en domän använder du:

az eventgrid domain key list \
  -g <my-resource-group> \
  -n <my-domain>

Och använd sedan din favoritmetod för att göra en HTTP POST för att publicera dina händelser till Event Grid-domänen.

Anteckning

För exempel som använder programmeringsspråk-SDK:er för att publicera händelser till en Event Grid-domän använder du följande länkar:

Sök listor över ämnen eller prenumerationer

Event Grid-API:erna stöder listning och sidnumrering för att söka efter och hantera ett stort antal ämnen eller prenumerationer.

Använda CLI

Följande kommando visar till exempel alla ämnen med namnet som innehåller mytopic.

az eventgrid topic list --odata-query "contains(name, 'mytopic')"

Mer information om det här kommandot finns i az eventgrid topic list.

Nästa steg