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"
}
endpoint
id
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ığı demotopic1
altı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/updates
test web sitenize gönderebilirsiniz.
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ı mytopic
olan 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ış.