Olayları Event Grid filtrele
Bu makalede, Event Grid aboneliği oluştururken olayların nasıl filtreleneceği gösterilir. 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 bir abonelik oluştururken, hangi olay türlerinin uç noktaya gönderileceğini belirtebilirsiniz. Bu bölümdeki örnekler, bir kaynak grubu için olay abonelikleri oluşturur ancak ve ' a gönderilen olayları sınırlandırır Microsoft.Resources.ResourceWriteFailure Microsoft.Resources.ResourceWriteSuccess . Olayları olay türlerine göre filtrelerken daha fazla esneklik gerekiyorsa bkz. filtre gelişmiş işleçler ve veri alanları.
Azure PowerShell
PowerShell için, -IncludedEventType aboneliği oluştururken parametresini kullanın.
$includedEventTypes = "Microsoft.Resources.ResourceWriteFailure", "Microsoft.Resources.ResourceWriteSuccess"
New-AzEventGridSubscription `
-EventSubscriptionName demoSubToResourceGroup `
-ResourceGroupName myResourceGroup `
-Endpoint <endpoint-URL> `
-IncludedEventType $includedEventTypes
Azure CLI
Azure CLı için --included-event-types parametresini kullanın. Aşağıdaki örnek, bir bash kabuğu 'nda Azure CLı kullanı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
Olay aboneliği sayfasında, Filtreler sekmesine geçin.
Olay türlerine filtrele' nin yanına olay türü Ekle ' yi seçin.
Olay türünü yazın ve ENTER tuşuna basın. Aşağıdaki örnekte, olay türü ' dir
Microsoft.Resources.ResourceWriteSuccess.
Azure Resource Manager şablonu
Kaynak Yöneticisi ş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 hakkında daha fazla bilgi edinmek için (olay türleri, konu ve gelişmiş) bkz. Event Grid abonelikler için olay filtrelemeyi anlama.
Konuya göre filtrele
Olayları olay verilerinde konuya göre filtreleyebilirsiniz. Konunun başlangıcı veya bitişi için eşleştirilecek bir değer belirtebilirsiniz. Olayları konuya göre filtrelerken daha fazla esneklik gerekiyorsa bkz. Gelişmiş Operatörler ve veri alanlarına göre filtreleme.
Aşağıdaki PowerShell örneğinde, konusunun başlangıcına göre filtreleyen bir olay aboneliği oluşturacaksınız. -SubjectBeginsWithBelirli bir kaynaktaki olayları sınırlamak için parametresini kullanabilirsiniz. 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 bir blob depolaması için bir abonelik oluşturur. Olayları ile biten bir konuyla sınırlı olarak kısıtlar .jpg .
$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 CLı örneğinde, konunun başlangıcına göre filtreleyen bir olay aboneliği oluşturacaksınız. --subject-begins-withBelirli bir kaynaktaki olayları sınırlamak için parametresini kullanabilirsiniz. Bir ağ güvenlik grubunun kaynak KIMLIĞINI geçirirsiniz.
resourceId=$(az resource show --name demoSecurityGroup --resource-group myResourceGroup --resource-type Microsoft.Network/networkSecurityGroups --query id --output tsv)
az eventgrid event-subscription create \
--name demoSubscriptionToResourceGroup \
--resource-group myResourceGroup \
--endpoint <endpoint-URL> \
--subject-begins-with $resourceId
Sonraki Azure CLı örneği bir blob depolaması için bir abonelik oluşturur. Olayları ile biten bir konuyla sınırlı olarak kısıtlar .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"
Azure portal
Olay aboneliği sayfasında, Konu filtrelemeyi etkinleştir' i seçin.
Aşağıdaki alanlardan bir veya daha fazlası için değerler girin: konu ile başlar ve konusuyla biter. Aşağıdaki seçeneklerde her iki seçenek de seçilidir.
Olayın konusunun belirtilen filtrelerin durumuyla eşleşmesini istiyorsanız, büyük/küçük harfe duyarlı konu eşleştirme seçeneğini belirleyin.
Azure Resource Manager şablonu
Aşağıdaki Kaynak Yöneticisi şablonu örneğinde, konunun başlangıcına göre filtreleyen bir olay aboneliği oluşturursunuz. subjectBeginsWithBelirli bir kaynaktaki olayları sınırlamak için özelliğini kullanın. 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 Kaynak Yöneticisi şablonu örneği bir blob depolaması için bir abonelik oluşturur. Olayları ile biten bir konuyla sınırlı olarak kısıtlar .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" ]
}
}
}
]
Not
Bu filtreler hakkında daha fazla bilgi edinmek için (olay türleri, konu ve gelişmiş) bkz. Event Grid abonelikler için olay filtrelemeyi anlama.
İşleçlere ve verilere göre filtrele
Filtrelemeye ilişkin daha fazla esneklik için İşleçleri ve veri özelliklerini kullanarak olayları filtreleyebilirsiniz.
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 olur ve veri nesnesindeki bir değere göre filtre uygulayın. Color özelliği mavi, Red 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=@{operator="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, Gelişmiş filtreler bölümünde Yeni Filtre Ekle ' yi seçin.
Karşılaştırılacak bir anahtar, işleç ve değer ya da değerler belirtin. Aşağıdaki örnekte, Data. Color anahtar olarak kullanılır, dize bir işleç olarak içinde, dize ise mavi, kırmızı ve yeşil değerler değerler için belirtilir.
Not
Gelişmiş filtreler hakkında daha fazla bilgi için bkz. Event Grid abonelikler için olay filtrelemeyi anlama.
Filtreyi test etme
Filtreyi test etmek için, Color alanı yeşil olarak ayarlanmış bir olay gönderin. Yeşil, filtredeki değerlerden biri 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, Color alanı sarı olarak ayarlanmış bir olay gönderin. Sarı, abonelikte belirtilen değerlerden biri değildir, bu nedenle etkinlik aboneliğinize teslim edilmemiş.
$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, Color alanı sarı olarak ayarlanmış bir olay gönderin. Sarı, abonelikte belirtilen değerlerden biri değildir, bu nedenle etkinlik aboneliğinize teslim edilmemiş.
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
Sonraki adımlar
Filtreler (olay türleri, konu ve gelişmiş) hakkında daha fazla bilgi için bkz. Event Grid abonelikler için olay filtrelemeyi anlama.