Event Grid için olayları filtreleme
Bu makalede, Event Grid aboneliği oluştururken olayların nasıl filtreleneceği gösterilmektedir. Olay filtreleme seçenekleri hakkında bilgi edinmek için bkz . Event Grid abonelikleri için olay filtrelemeyi anlama.
Olay türüne göre filtrele
Event Grid aboneliği oluştururken uç noktaya hangi olay türlerinin gönderileceğini belirtebilirsiniz. Bu bölümdeki örnekler, bir kaynak grubu için olay abonelikleri oluşturur, ancak ve Microsoft.Resources.ResourceWriteSuccess
öğesine Microsoft.Resources.ResourceWriteFailure
gönderilen olayları sınırlar. Olayları olay türlerine göre filtrelerken daha fazla esnekliğe ihtiyacınız varsa bkz . İşleçlere ve verilere göre filtreleme.
Azure PowerShell
PowerShell için, aboneliği oluştururken parametresini kullanın -IncludedEventType
.
$includedEventTypes = "Microsoft.Resources.ResourceWriteFailure", "Microsoft.Resources.ResourceWriteSuccess"
New-AzEventGridSubscription `
-EventSubscriptionName demoSubToResourceGroup `
-ResourceGroupName myResourceGroup `
-Endpoint <endpoint-URL> `
-IncludedEventType $includedEventTypes
Azure CLI
Azure CLI için parametresini --included-event-types
kullanın. Aşağıdaki örnekte Bash kabuğunda Azure CLI kullanılmaktadır:
includedEventTypes="Microsoft.Resources.ResourceWriteFailure Microsoft.Resources.ResourceWriteSuccess"
az eventgrid event-subscription create \
--name demoSubToResourceGroup \
--resource-group myResourceGroup \
--endpoint <endpoint-URL> \
--included-event-types $includedEventTypes
Azure portal
Bir sistem konusuna olay aboneliği oluştururken, aşağıdaki görüntüde gösterildiği gibi olay türlerini seçmek için açılan listeyi kullanın.
Mevcut bir sistem aboneliği konusu için, aşağıdaki görüntüde gösterildiği gibi Olay Aboneliği sayfasının Filtreler sekmesini kullanın.
Aşağıdaki görüntüde gösterildiği gibi Olay Türü Ekle bağlantısını seçerek özel konu oluştururken filtreleri belirtebilirsiniz.
Özel konu başlığına var olan bir aboneliğin filtresini belirtmek için Olay Aboneliği sayfasındaki Filtreler sekmesini kullanın.
Azure Resource Manager şablonu
Resource Manager şablonu için includedEventTypes
özelliğini kullanın.
"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"
]
}
}
}
]
Not
Bu filtreler (olay türleri, konu ve gelişmiş) hakkında daha fazla bilgi edinmek için bkz . Event Grid abonelikleri için olay filtrelemeyi anlama.
Konuya göre filtrele
Olayları olay verilerindeki konuya göre filtreleyebilirsiniz. Konunun başlangıcı veya sonu için eşleşecek bir değer belirtebilirsiniz. Olayları konuya göre filtrelerken daha fazla esnekliğe ihtiyacınız varsa bkz . İşleçlere ve verilere göre filtreleme.
Aşağıdaki PowerShell örneğinde, konunun başına göre filtreleyen bir olay aboneliği oluşturursunuz. Belirli bir kaynağın -SubjectBeginsWith
olaylarını bir olayla sınırlamak için parametresini kullanırsınız. Bir ağ güvenlik grubunun kaynak kimliğini geçirirsiniz.
Azure PowerShell
$resourceId = (Get-AzResource -ResourceName demoSecurityGroup -ResourceGroupName myResourceGroup).ResourceId
New-AzEventGridSubscription `
-Endpoint <endpoint-URL> `
-EventSubscriptionName demoSubscriptionToResourceGroup `
-ResourceGroupName myResourceGroup `
-SubjectBeginsWith $resourceId
Sonraki PowerShell örneği, blob depolama için bir abonelik oluşturur. Olayları ile biten .jpg
bir konuya sahip olanlarla sınırlar.
$storageId = (Get-AzStorageAccount -ResourceGroupName myResourceGroup -AccountName $storageName).Id
New-AzEventGridSubscription `
-EventSubscriptionName demoSubToStorage `
-Endpoint <endpoint-URL> `
-ResourceId $storageId `
-SubjectEndsWith ".jpg"
Azure CLI
Aşağıdaki Azure CLI örneğinde, konunun başına göre filtreleyen bir olay aboneliği oluşturacaksınız. Belirli bir kaynağın --subject-begins-with
olaylarını bir olayla sınırlamak için parametresini kullanırsınız. Bir ağ güvenlik grubunun kaynak kimliğini geçirirsiniz.
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
Sonraki Azure CLI örneği, blob depolama için bir abonelik oluşturur. Olayları ile biten .jpg
bir konuya sahip olanlarla sınırlar.
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"
Azure portal
Mevcut bir olay aboneliği için:
Olay Aboneliği sayfasında Konu filtrelemeyi etkinleştir'i seçin.
Aşağıdaki alanlardan biri veya daha fazlası için değerleri girin: Konu ile başlar ve Konu ile biter. Aşağıdaki örnekte her iki seçenek de seçilidir.
Olayın konusunun belirtilen filtrelerin büyük/küçük harfle eşleşmesini istiyorsanız Büyük/küçük harfe duyarlı konu eşleştirme seçeneğini belirleyin.
Olay aboneliği oluştururken, oluşturma sihirbazındaki Filtreler sekmesini kullanın.
Azure Resource Manager şablonu
Aşağıdaki Resource Manager şablon örneğinde, konunun başına göre filtreleyen bir olay aboneliği oluşturursunuz. özelliğini kullanarak belirli bir kaynağın subjectBeginsWith
olaylarını şunlarla sınırlandırabilirsiniz. Bir ağ güvenlik grubunun kaynak kimliğini geçirirsiniz.
"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" ]
}
}
}
]
Sonraki Resource Manager şablon örneği, blob depolama için bir abonelik oluşturur. Olayları ile biten .jpg
bir konuya sahip olanlarla sınırlar.
"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" ]
}
}
}
]
Not
Bu filtreler (olay türleri, konu ve gelişmiş) hakkında daha fazla bilgi edinmek için bkz . Event Grid abonelikleri için olay filtrelemeyi anlama.
İşleçlere ve verilere göre filtreleme
Filtrelemede daha fazla esneklik için, olayları filtrelemek için işleçleri ve veri özelliklerini kullanabilirsiniz.
Gelişmiş filtrelerle abone olma
Gelişmiş filtreleme için kullanabileceğiniz işleçler ve anahtarlar hakkında bilgi edinmek için bkz . Gelişmiş filtreleme.
Bu örnekler özel bir konu oluşturur. Özel konuya abone olurlar ve veri nesnesindeki bir değere göre filtreleme yaparlar. Color özelliği mavi, kırmızı veya yeşil olarak ayarlanmış olaylar aboneliğe gönderilir.
Azure PowerShell
PowerShell için şunu kullanın:
$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
Azure CLI için şunu kullanın:
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>"
Abonelik için bir sona erme tarihi belirlendiğine dikkat edin.
Azure portal
Olay Aboneliği sayfasında, GELİşMİş FİlTRELER bölümünde Yeni filtre ekle'yi seçin.
Karşılaştırılacak bir anahtar, işleç ve değer veya değerler belirtin. Aşağıdaki örnekte data.color anahtar olarak kullanılır, Dize işleç olarak içindedir ve değerler için mavi, kırmızı ve yeşil değerler belirtilir.
Not
Gelişmiş filtreler hakkında daha fazla bilgi edinmek için bkz . Event Grid abonelikleri için olay filtrelemeyi anlama.
Filtreyi test edin
Filtreyi test etmek için renk alanı yeşil olarak ayarlanmış bir olay gönderin. Filtredeki değerlerden biri yeşil olduğundan olay uç noktaya teslim edilir.
Azure PowerShell
PowerShell için şunu kullanın:
$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}
Olayın gönderilmediği bir senaryoyu test etmek için renk alanı sarı olarak ayarlanmış bir olay gönderin. Sarı, abonelikte belirtilen değerlerden biri olmadığından olay aboneliğinize teslim edilmemiştir.
$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
Azure CLI için şunu kullanın:
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
Olayın gönderilmediği bir senaryoyu test etmek için renk alanı sarı olarak ayarlanmış bir olay gönderin. Sarı, abonelikte belirtilen değerlerden biri olmadığından olay aboneliğinize teslim edilmemiştir.
Azure CLI için şunu kullanın:
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
İlgili içerik
Filtreler (olay türleri, konu ve gelişmiş) hakkında daha fazla bilgi edinmek için bkz . Event Grid abonelikleri için olay filtrelemeyi anlama.