Memfilter peristiwa untuk Event Grid
Artikel ini memperlihatkan cara memfilter acara saat membuat langganan Event Grid. Untuk mempelajari tentang opsi pemfilteran peristiwa, lihat Memahami pemfilteran peristiwa untuk langganan Event Grid.
Memfilter berdasarkan jenis peristiwa
Saat membuat langganan Event Grid, Anda bisa menentukan jenis peristiwa mana yang akan dikirim ke titik akhir. Contoh di bagian ini membuat langganan peristiwa untuk grup sumber daya tetapi membatasi peristiwa yang dikirim ke Microsoft.Resources.ResourceWriteFailure
dan Microsoft.Resources.ResourceWriteSuccess
. Jika Anda memerlukan lebih banyak fleksibilitas saat memfilter peristiwa menurut jenis peristiwa, lihat Memfilter menurut operator dan data.
Azure PowerShell
Untuk PowerShell, gunakan parameter -IncludedEventType
saat membuat langganan.
$includedEventTypes = "Microsoft.Resources.ResourceWriteFailure", "Microsoft.Resources.ResourceWriteSuccess"
New-AzEventGridSubscription `
-EventSubscriptionName demoSubToResourceGroup `
-ResourceGroupName myResourceGroup `
-Endpoint <endpoint-URL> `
-IncludedEventType $includedEventTypes
Azure CLI
Untuk Azure CLI, gunakan parameter --included-event-types
. Contoh berikut menggunakan Azure CLI dalam shell Bash:
includedEventTypes="Microsoft.Resources.ResourceWriteFailure Microsoft.Resources.ResourceWriteSuccess"
az eventgrid event-subscription create \
--name demoSubToResourceGroup \
--resource-group myResourceGroup \
--endpoint <endpoint-URL> \
--included-event-types $includedEventTypes
Portal Azure
Saat membuat langganan peristiwa ke topik sistem, gunakan daftar drop-down untuk memilih jenis peristiwa seperti yang ditunjukkan pada gambar berikut.
Untuk langganan yang sudah ada ke topik sistem, gunakan tab Filter dari halaman Langganan Peristiwa seperti yang diperlihatkan dalam gambar berikut.
Anda dapat menentukan filter saat membuat topik kustom dengan memilih tautan Tambahkan Jenis Peristiwa seperti yang diperlihatkan dalam gambar berikut.
Untuk menentukan filter untuk langganan yang sudah ada ke topik kustom, gunakan tab Filter di halaman Langganan Peristiwa.
Templat Azure Resource Manager
Untuk templat Resource Manager, gunakan properti includedEventTypes
.
"resources": [
{
"type": "Microsoft.EventGrid/eventSubscriptions",
"name": "[parameters('eventSubName')]",
"apiVersion": "2018-09-15-preview",
"properties": {
"destination": {
"endpointType": "WebHook",
"properties": {
"endpointUrl": "[parameters('endpoint')]"
}
},
"filter": {
"subjectBeginsWith": "",
"subjectEndsWith": "",
"isSubjectCaseSensitive": false,
"includedEventTypes": [
"Microsoft.Resources.ResourceWriteFailure",
"Microsoft.Resources.ResourceWriteSuccess"
]
}
}
}
]
Catatan
Untuk mempelajari selengkapnya tentang filter ini (jenis kejadian, subjek, dan tingkat lanjut), lihat Memahami pemfilteran kejadian untuk langganan Event Grid.
Memfilter berdasarkan subjek
Anda dapat memfilter peristiwa berdasarkan subjek dalam data peristiwa. Anda dapat menentukan nilai yang cocok untuk awal atau akhir subjek. Jika Anda memerlukan lebih banyak fleksibilitas saat memfilter peristiwa menurut subjek, lihat Memfilter menurut operator dan data.
Dalam contoh PowerShell berikut, Anda membuat langganan peristiwa yang memfilter berdasarkan awal subjek. Anda menggunakan parameter -SubjectBeginsWith
untuk membatasi peristiwa pada peristiwa untuk sumber daya tertentu. Anda lulus ID sumber daya grup keamanan jaringan.
Azure PowerShell
$resourceId = (Get-AzResource -ResourceName demoSecurityGroup -ResourceGroupName myResourceGroup).ResourceId
New-AzEventGridSubscription `
-Endpoint <endpoint-URL> `
-EventSubscriptionName demoSubscriptionToResourceGroup `
-ResourceGroupName myResourceGroup `
-SubjectBeginsWith $resourceId
Contoh PowerShell berikutnya membuat langganan untuk penyimpanan blob. Ini membatasi peristiwa pada yang dengan subjek yang berakhiran .jpg
.
$storageId = (Get-AzStorageAccount -ResourceGroupName myResourceGroup -AccountName $storageName).Id
New-AzEventGridSubscription `
-EventSubscriptionName demoSubToStorage `
-Endpoint <endpoint-URL> `
-ResourceId $storageId `
-SubjectEndsWith ".jpg"
Azure CLI
Dalam contoh Azure CLI berikut, Anda membuat langganan peristiwa yang memfilter berdasarkan awal subjek. Anda menggunakan parameter --subject-begins-with
untuk membatasi peristiwa pada peristiwa untuk sumber daya tertentu. Anda lulus ID sumber daya grup keamanan jaringan.
resourceId=$(az network nsg show -g myResourceGroup -n demoSecurityGroup --query id --output tsv)
az eventgrid event-subscription create \
--name demoSubscriptionToResourceGroup \
--resource-group myResourceGroup \
--endpoint <endpoint-URL> \
--subject-begins-with $resourceId
Contoh Azure CLI berikutnya membuat langganan untuk penyimpanan blob. Ini membatasi peristiwa pada yang dengan subjek yang berakhiran .jpg
.
storageid=$(az storage account show --name $storageName --resource-group myResourceGroup --query id --output tsv)
az eventgrid event-subscription create \
--resource-id $storageid \
--name demoSubToStorage \
--endpoint <endpoint-URL> \
--subject-ends-with ".jpg"
Portal Azure
Untuk langganan peristiwa yang sudah ada:
Pada halaman Event Subscription (Langganan Kejadian), pilih Enable subject filtering (Aktifkan pemfilteran subjek).
Masukkan nilai untuk satu atau beberapa bidang berikut: Subjek dimulai dengan dan Subjek diakhiri dengan. Dalam contoh berikut, kedua opsi dipilih.
Pilih opsi pencocokan subjek yang peka huruf besar-kecil jika Anda ingin subjek kejadian cocok dengan kasus filter yang ditentukan.
Saat membuat langganan peristiwa, gunakan tab Filter pada wizard pembuatan.
Templat Azure Resource Manager
Dalam contoh Resource Manager berikut, Anda membuat langganan peristiwa yang memfilter berdasarkan awal subjek. Anda menggunakan properti subjectBeginsWith
untuk membatasi peristiwa pada peristiwa untuk sumber daya tertentu. Anda lulus ID sumber daya grup keamanan jaringan.
"resources": [
{
"type": "Microsoft.EventGrid/eventSubscriptions",
"name": "[parameters('eventSubName')]",
"apiVersion": "2018-09-15-preview",
"properties": {
"destination": {
"endpointType": "WebHook",
"properties": {
"endpointUrl": "[parameters('endpoint')]"
}
},
"filter": {
"subjectBeginsWith": "[resourceId('Microsoft.Network/networkSecurityGroups','demoSecurityGroup')]",
"subjectEndsWith": "",
"isSubjectCaseSensitive": false,
"includedEventTypes": [ "All" ]
}
}
}
]
Contoh Resource Manager berikutnya membuat langganan untuk penyimpanan blob. Ini membatasi peristiwa pada yang dengan subjek yang berakhiran .jpg
.
"resources": [
{
"type": "Microsoft.Storage/storageAccounts/providers/eventSubscriptions",
"name": "[concat(parameters('storageName'), '/Microsoft.EventGrid/', parameters('eventSubName'))]",
"apiVersion": "2018-09-15-preview",
"properties": {
"destination": {
"endpointType": "WebHook",
"properties": {
"endpointUrl": "[parameters('endpoint')]"
}
},
"filter": {
"subjectEndsWith": ".jpg",
"subjectBeginsWith": "",
"isSubjectCaseSensitive": false,
"includedEventTypes": [ "All" ]
}
}
}
]
Catatan
Untuk mempelajari selengkapnya tentang filter ini (jenis kejadian, subjek, dan tingkat lanjut), lihat Memahami pemfilteran kejadian untuk langganan Event Grid.
Memfilter berdasarkan operator dan data
Untuk fleksibilitas lebih dalam pemfilteran, Anda dapat menggunakan operator dan properti data untuk memfilter peristiwa.
Berlangganan dengan filter tingkat lanjut
Untuk mempelajari tentang operator dan kunci yang bisa Anda gunakan untuk pemfilteran tingkat lanjut, lihat Pemfilteran tingkat lanjut.
Contoh-contoh berikut membuat topik kustom. Mereka berlangganan topik kustom dan memfilter berdasarkan nilai di objek data. Peristiwa yang sudah mengatur properti warnanya ke biru, merah, atau hijau dikirim ke langganan.
Azure PowerShell
Untuk PowerShell, gunakan:
$topicName = <your-topic-name>
$endpointURL = <endpoint-URL>
New-AzResourceGroup -Name gridResourceGroup -Location eastus2
New-AzEventGridTopic -ResourceGroupName gridResourceGroup -Location eastus2 -Name $topicName
$topicid = (Get-AzEventGridTopic -ResourceGroupName gridResourceGroup -Name $topicName).Id
$expDate = '<mm/dd/yyyy hh:mm:ss>' | Get-Date
$AdvFilter1=@{operatorType="StringIn"; key="Data.color"; values=@('blue', 'red', 'green')}
New-AzEventGridSubscription `
-ResourceId $topicid `
-EventSubscriptionName <event_subscription_name> `
-Endpoint $endpointURL `
-ExpirationDate $expDate `
-AdvancedFilter @($AdvFilter1)
Azure CLI
Untuk Azure CLI, gunakan:
topicName=<your-topic-name>
endpointURL=<endpoint-URL>
az group create -n gridResourceGroup -l eastus2
az eventgrid topic create --name $topicName -l eastus2 -g gridResourceGroup
topicid=$(az eventgrid topic show --name $topicName -g gridResourceGroup --query id --output tsv)
az eventgrid event-subscription create \
--source-resource-id $topicid \
-n demoAdvancedSub \
--advanced-filter data.color stringin blue red green \
--endpoint $endpointURL \
--expiration-date "<yyyy-mm-dd>"
Perhatikan bahwa tanggal kedaluwarsa ditetapkan untuk langganan.
Portal Azure
Pada halaman Event Subscription (Langganan Kejadian), pilih Add new filter (Tambahkan filter baru) di bagian ADVANCED FILTERS (FILTER LANJUTAN).
Tentukan kunci, operator, dan nilai atau nilai untuk dibandingkan. Dalam contoh berikut, data.color digunakan sebagai kunci, String sebagai operator, dan nilai biru, merah, dan hijau ditentukan untuk semua nilai.
Catatan
Untuk mempelajari selengkapnya tentang filter ini (jenis kejadian, subjek, dan tingkat lanjut), lihat Memahami pemfilteran kejadian untuk langganan Event Grid.
Menguji filter
Untuk menguji filter, kirim peristiwa dengan bidang warna diatur ke hijau. Karena hijau adalah salah satu nilai dalam filter, maka peristiwa dikirimkan ke titik akhir.
Azure PowerShell
Untuk PowerShell, gunakan:
$endpoint = (Get-AzEventGridTopic -ResourceGroupName gridResourceGroup -Name $topicName).Endpoint
$keys = Get-AzEventGridTopicKey -ResourceGroupName gridResourceGroup -Name $topicName
$eventID = Get-Random 99999
$eventDate = Get-Date -Format s
$htbody = @{
id= $eventID
eventType="recordInserted"
subject="myapp/vehicles/cars"
eventTime= $eventDate
data= @{
model="SUV"
color="green"
}
dataVersion="1.0"
}
$body = "["+(ConvertTo-Json $htbody)+"]"
Invoke-WebRequest -Uri $endpoint -Method POST -Body $body -Headers @{"aeg-sas-key" = $keys.Key1}
Untuk menguji skenario ketika peristiwa tidak dikirim, kirimkan peristiwa dengan bidang warna diatur ke kuning. Warna kuning bukanlah salah satu nilai yang ditentukan dalam langganan, sehingga peristiwanya tidak dikirimkan ke langganan Anda.
$htbody = @{
id= $eventID
eventType="recordInserted"
subject="myapp/vehicles/cars"
eventTime= $eventDate
data= @{
model="SUV"
color="yellow"
}
dataVersion="1.0"
}
$body = "["+(ConvertTo-Json $htbody)+"]"
Invoke-WebRequest -Uri $endpoint -Method POST -Body $body -Headers @{"aeg-sas-key" = $keys.Key1}
Azure CLI
Untuk Azure CLI, gunakan:
topicEndpoint=$(az eventgrid topic show --name $topicName -g gridResourceGroup --query "endpoint" --output tsv)
key=$(az eventgrid topic key list --name $topicName -g gridResourceGroup --query "key1" --output tsv)
event='[ {"id": "'"$RANDOM"'", "eventType": "recordInserted", "subject": "myapp/vehicles/cars", "eventTime": "'`date +%Y-%m-%dT%H:%M:%S%z`'", "data":{ "model": "SUV", "color": "green"},"dataVersion": "1.0"} ]'
curl -X POST -H "aeg-sas-key: $key" -d "$event" $topicEndpoint
Untuk menguji skenario ketika peristiwa tidak dikirim, kirimkan peristiwa dengan bidang warna diatur ke kuning. Warna kuning bukanlah salah satu nilai yang ditentukan dalam langganan, sehingga peristiwanya tidak dikirimkan ke langganan Anda.
Untuk Azure CLI, gunakan:
event='[ {"id": "'"$RANDOM"'", "eventType": "recordInserted", "subject": "myapp/vehicles/cars", "eventTime": "'`date +%Y-%m-%dT%H:%M:%S%z`'", "data":{ "model": "SUV", "color": "yellow"},"dataVersion": "1.0"} ]'
curl -X POST -H "aeg-sas-key: $key" -d "$event" $topicEndpoint
Konten terkait
Untuk mempelajari selengkapnya tentang filter ini (jenis kejadian, subjek, dan tingkat lanjut), lihat Memahami pemfilteran kejadian untuk langganan Event Grid.