Filtrera händelser för Event Grid
Den här artikeln visar hur du filtrerar händelser när du skapar en Event Grid-prenumeration. Mer information om alternativen för händelsefiltrering finns i Förstå händelsefiltrering för Event Grid-prenumerationer.
Filtrera efter händelsetyp
När du skapar en Event Grid-prenumeration kan du ange vilka händelsetyper som ska skickas till slutpunkten. Exemplen i det här avsnittet skapar händelseprenumerationer för en resursgrupp men begränsar de händelser som skickas till Microsoft.Resources.ResourceWriteFailure
och Microsoft.Resources.ResourceWriteSuccess
. Om du behöver mer flexibilitet när du filtrerar händelser efter händelsetyper kan du läsa Filtrera efter operatorer och data.
Azure PowerShell
För PowerShell använder du parametern -IncludedEventType
när du skapar prenumerationen.
$includedEventTypes = "Microsoft.Resources.ResourceWriteFailure", "Microsoft.Resources.ResourceWriteSuccess"
New-AzEventGridSubscription `
-EventSubscriptionName demoSubToResourceGroup `
-ResourceGroupName myResourceGroup `
-Endpoint <endpoint-URL> `
-IncludedEventType $includedEventTypes
Azure CLI
Använd parametern för --included-event-types
Azure CLI. I följande exempel används Azure CLI i ett Bash-gränssnitt:
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
När du skapar en händelseprenumeration på ett systemämne använder du listrutan för att välja händelsetyperna enligt följande bild.
För en befintlig prenumeration på ett systemavsnitt använder du fliken Filter på sidan Händelseprenumeration enligt följande bild.
Du kan ange filter när du skapar ett anpassat ämne genom att välja länken Lägg till händelsetyp enligt följande bild.
Om du vill ange ett filter för en befintlig prenumeration till ett anpassat ämne använder du fliken Filter på sidan Händelseprenumeration .
Azure Resource Manager-mall
Använd egenskapen för includedEventTypes
en Resource Manager-mall.
"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"
]
}
}
}
]
Kommentar
Mer information om dessa filter (händelsetyper, ämne och avancerat) finns i Förstå händelsefiltrering för Event Grid-prenumerationer.
Filtrera efter ämne
Du kan filtrera händelser efter ämne i händelsedata. Du kan ange ett värde som ska matchas för början eller slutet av ämnet. Om du behöver mer flexibilitet när du filtrerar händelser efter ämne kan du läsa Filtrera efter operatorer och data.
I följande PowerShell-exempel skapar du en händelseprenumeration som filtrerar i början av ämnet. Du använder parametern -SubjectBeginsWith
för att begränsa händelser till händelser för en specifik resurs. Du skickar resurs-ID:t för en nätverkssäkerhetsgrupp.
Azure PowerShell
$resourceId = (Get-AzResource -ResourceName demoSecurityGroup -ResourceGroupName myResourceGroup).ResourceId
New-AzEventGridSubscription `
-Endpoint <endpoint-URL> `
-EventSubscriptionName demoSubscriptionToResourceGroup `
-ResourceGroupName myResourceGroup `
-SubjectBeginsWith $resourceId
I nästa PowerShell-exempel skapas en prenumeration för en bloblagring. Den begränsar händelser till händelser med ett ämne som slutar i .jpg
.
$storageId = (Get-AzStorageAccount -ResourceGroupName myResourceGroup -AccountName $storageName).Id
New-AzEventGridSubscription `
-EventSubscriptionName demoSubToStorage `
-Endpoint <endpoint-URL> `
-ResourceId $storageId `
-SubjectEndsWith ".jpg"
Azure CLI
I följande Azure CLI-exempel skapar du en händelseprenumeration som filtreras i början av ämnet. Du använder parametern --subject-begins-with
för att begränsa händelser till händelser för en specifik resurs. Du skickar resurs-ID:t för en nätverkssäkerhetsgrupp.
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
I nästa Azure CLI-exempel skapas en prenumeration för en bloblagring. Den begränsar händelser till händelser med ett ämne som slutar i .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
För en befintlig händelseprenumeration:
På sidan Händelseprenumeration väljer du Aktivera ämnesfiltrering.
Ange värden för ett eller flera av följande fält: Ämne börjar med och Ämne slutar med. I följande alternativ är båda alternativen markerade.
Välj alternativet Skiftlägeskänslig ämnesmatchning om du vill att ämnet för händelsen ska matcha fallet med de angivna filtren.
När du skapar en händelseprenumeration använder du fliken Filter i guiden skapa.
Azure Resource Manager-mall
I följande Resource Manager-mallexempel skapar du en händelseprenumeration som filtreras i början av ämnet. Du använder subjectBeginsWith
egenskapen för att begränsa händelser till händelser för en specifik resurs. Du skickar resurs-ID:t för en nätverkssäkerhetsgrupp.
"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" ]
}
}
}
]
I nästa Resource Manager-mallexempel skapas en prenumeration för en bloblagring. Den begränsar händelser till händelser med ett ämne som slutar i .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" ]
}
}
}
]
Kommentar
Mer information om dessa filter (händelsetyper, ämne och avancerat) finns i Förstå händelsefiltrering för Event Grid-prenumerationer.
Filtrera efter operatorer och data
Om du vill ha mer flexibilitet i filtreringen kan du använda operatorer och dataegenskaper för att filtrera händelser.
Prenumerera med avancerade filter
Mer information om de operatorer och nycklar som du kan använda för avancerad filtrering finns i Avancerad filtrering.
De här exemplen skapar ett anpassat ämne. De prenumererar på det anpassade ämnet och filtrerar efter ett värde i dataobjektet. Händelser som har färgegenskapen inställd på blå, röd eller grön skickas till prenumerationen.
Azure PowerShell
Om du använder PowerShell använder du:
$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
Om du använder Azure CLI använder du:
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>"
Observera att ett förfallodatum har angetts för prenumerationen.
Azure Portal
På sidan Händelseprenumeration väljer du Lägg till nytt filter i avsnittet AVANCERADE FILTER .
Ange en nyckel, operator och ett värde eller värden som ska jämföras. I följande exempel används data.color som en nyckel, Sträng är i som operator och blå, röd och grön anges för värden.
Kommentar
Mer information om avancerade filter finns i Förstå händelsefiltrering för Event Grid-prenumerationer.
Testa filtret
Om du vill testa filtret skickar du en händelse med färgfältet inställt på grönt. Eftersom grönt är ett av värdena i filtret levereras händelsen till slutpunkten.
Azure PowerShell
Om du använder PowerShell använder du:
$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}
Om du vill testa ett scenario där händelsen inte skickas skickar du en händelse med färgfältet inställt på gult. Gult är inte ett av de värden som anges i prenumerationen, så händelsen levereras inte till din prenumeration.
$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
Om du använder Azure CLI använder du:
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
Om du vill testa ett scenario där händelsen inte skickas skickar du en händelse med färgfältet inställt på gult. Gult är inte ett av de värden som anges i prenumerationen, så händelsen levereras inte till din prenumeration.
Om du använder Azure CLI använder du:
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
Nästa steg
Mer information om filter (händelsetyper, ämne och avancerat) finns i Förstå händelsefiltrering för Event Grid-prenumerationer.