Aracılığıyla paylaş


Olay etki alanlarını kullanarak konuları yönetme ve olayları yayımlama

Bu makalede şunların nasıl yapıldığını gösterir:

  • Event Grid etki alanı oluşturma
  • Event Grid konularına abone olma
  • Liste anahtarları
  • Olayları bir etki alanında yayımlama

Olay etki alanları hakkında bilgi edinmek için bkz . Event Grid konularını yönetmek için olay etki alanlarını anlama.

Olay Etki Alanı Oluşturma

Büyük konu kümelerini yönetmek için bir olay etki alanı oluşturun.

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

Başarılı oluşturma aşağıdaki değerleri döndürür:

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

endpointid ve değerlerini, etki alanını yönetmek ve olayları yayımlamak için gerekli olduklarına dikkat edin.

Konulara erişimi yönetme

Konulara erişimi yönetme işlemi rol ataması aracılığıyla gerçekleştirilir. Rol ataması, Azure kaynaklarındaki işlemleri belirli bir kapsamdaki yetkili kullanıcılarla sınırlamak için Azure rol tabanlı erişim denetimini kullanır.

Event Grid'de, belirli kullanıcılara etki alanı içindeki çeşitli konulara erişim atamak için kullanabileceğiniz iki yerleşik rol vardır. Bu roller EventGrid EventSubscription Contributor (Preview), aboneliklerin oluşturulmasını ve silinmesini sağlayan ve EventGrid EventSubscription Reader (Preview)yalnızca olay aboneliklerinin listelenmesine izin veren rolleridir.

Aşağıdaki Azure CLI komut sınırları alice@contoso.com yalnızca konu başlığı demotopic1altında olay abonelikleri oluşturmak ve silmek için geçerlidir:

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

Event Grid işlemleri için erişimi yönetme hakkında daha fazla bilgi için bkz . Event Grid güvenliği ve kimlik doğrulaması.

Konu başlıklarını ve abonelikleri oluşturma

Event Grid hizmeti, etki alanı konusu için olay aboneliği oluşturma çağrısına göre etki alanında ilgili konuyu otomatik olarak oluşturur ve yönetir. Bir etki alanında konu oluşturmak için ayrı bir adım yoktur. Benzer şekilde, bir konu için son olay aboneliği silindiğinde, konu da silinir.

Bir etki alanındaki bir konuya abone olmak, başka bir Azure kaynağına abone olmakla aynıdır. Kaynak kaynak kimliği için, daha önce etki alanı oluşturulurken döndürülen olay etki alanı kimliğini belirtin. Abone olmak istediğiniz konuyu belirtmek için kaynak kaynak kimliğinin sonuna ekleyin /topics/<my-topic> . Etki alanındaki tüm olayları alan bir etki alanı kapsamı olay aboneliği oluşturmak için, hiçbir konu belirtmeden olay etki alanı kimliğini belirtin.

Genellikle, önceki bölümde erişim izni vermiş olduğunuz kullanıcı aboneliği oluşturur. Bu makaleyi basitleştirmek için aboneliği oluşturursunuz.

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

Olaylarınızı abone yapmak için bir test uç noktasına ihtiyacınız varsa, her zaman gelen olayları görüntüleyen önceden oluşturulmuş bir web uygulaması dağıtabilirsiniz. Etkinliklerinizi adresinden https://<your-site-name>.azurewebsites.net/api/updatestest web sitenize gönderebilirsiniz.

Button to deploy the Resource Manager template to Azure.

Bir konu için ayarlanan izinler Microsoft Entra Id içinde depolanır ve açıkça silinmesi gerekir. Bir olay aboneliğinin silinmesi, kullanıcıların bir konuya yazma erişimi varsa olay abonelikleri oluşturma erişimini iptal etmez.

Event Grid etki alanında olayları yayımlama

Olayları bir etki alanında yayımlamak, özel bir konuya yayımlamayla aynıdır. Ancak, özel konuya yayımlamak yerine tüm olayları etki alanı uç noktasına yayımlarsınız. JSON olay verilerinde, olayların gitmesini istediğiniz konuyu belirtirsiniz. Aşağıdaki olay dizisi, ile olayı konu başlığına "id": "1111" gönderilirkendemotopic2, ile olayı "id": "2222" ile sonuçlanır:demotopic1

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

Azure CLI ile etki alanı uç noktasını almak için

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

Etki alanının anahtarlarını almak için şunu kullanın:

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

Ardından olaylarınızı Event Grid etki alanınızda yayımlamak için sık kullandığınız HTTP POST yöntemini kullanın.

Not

Event Grid etki alanında olay yayımlamak için programlama dili SDK'larını kullanan örnekler için aşağıdaki bağlantıları kullanın:

Konu veya abonelik listelerini arama

Çok sayıda konuyu veya aboneliği aramak ve yönetmek için Event Grid API'leri listelemeyi ve sayfalandırmayı destekler.

CLI kullanma

Örneğin, aşağıdaki komut içinde adı mytopicolan tüm konuları listeler.

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

Bu komut hakkında daha fazla bilgi için bkz az eventgrid topic list. .

Sonraki adımlar

  • Olay etki alanlarındaki üst düzey kavramlar ve bunların neden yararlı olduğu hakkında daha fazla bilgi için bkz . Olay Etki Alanları'na kavramsal genel bakış.