Filtrare gli eventi per Griglia di eventi
Questo articolo illustra come filtrare gli eventi quando si crea una sottoscrizione di Griglia di eventi. Per altre informazioni sulle opzioni per filtrare gli eventi, vedere Informazioni sui filtri eventi per le sottoscrizioni di Griglia di eventi.
Filtrare in base al tipo di evento
Quando si crea una sottoscrizione di Griglia di eventi, è possibile specificare quali tipi di evento inviare all'endpoint. Gli esempi in questa sezione creano sottoscrizioni di eventi per un gruppo di risorse, ma limitano gli eventi che vengono inviati a Microsoft.Resources.ResourceWriteFailure
e Microsoft.Resources.ResourceWriteSuccess
. Se è necessaria maggiore flessibilità quando si filtrano gli eventi in base ai tipi di evento, vedere Filtrare per operatori e dati.
Azure PowerShell
Per PowerShell, usare il parametro -IncludedEventType
quando si crea la sottoscrizione.
$includedEventTypes = "Microsoft.Resources.ResourceWriteFailure", "Microsoft.Resources.ResourceWriteSuccess"
New-AzEventGridSubscription `
-EventSubscriptionName demoSubToResourceGroup `
-ResourceGroupName myResourceGroup `
-Endpoint <endpoint-URL> `
-IncludedEventType $includedEventTypes
Interfaccia della riga di comando di Azure
Per l'interfaccia della riga di comando di Azure, usare il parametro --included-event-types
. L'esempio seguente usa l'interfaccia della riga di comando di Azure in una 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
Azure portal
Durante la creazione di una sottoscrizione di eventi a un argomento di sistema, usare l'elenco a discesa per selezionare i tipi di evento, come illustrato nell'immagine seguente.
Per una sottoscrizione esistente a un argomento di sistema, usare la scheda Filtri della pagina Sottoscrizione eventi, come illustrato nell'immagine seguente.
È possibile specificare i filtri durante la creazione di un argomento personalizzato selezionando Il collegamento Aggiungi tipo di evento, come illustrato nell'immagine seguente.
Per specificare un filtro per una sottoscrizione esistente per un argomento personalizzato, usare la scheda Filtri nella pagina Sottoscrizione eventi .
Modello di Azure Resource Manager
Per un modello di Resource Manager, usare la proprietà 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"
]
}
}
}
]
Nota
Per altre informazioni su questi filtri (tipi di eventi, oggetto e avanzato), vedere Informazioni sul filtro degli eventi per le sottoscrizioni di Griglia di eventi.
Filtrare in base all'oggetto
È possibile filtrare gli eventi in base all'oggetto presente nei relativi dati. È possibile specificare un valore per cui identificare una corrispondenza in base all'inizio o alla fine dell'oggetto. Se è necessaria maggiore flessibilità quando si filtrano gli eventi in base all'oggetto, vedere Filtrare per operatori e dati.
Nell'esempio seguente di PowerShell si crea una sottoscrizione di eventi che applica un filtro in base all'inizio dell'oggetto. Si usa il parametro -SubjectBeginsWith
per limitare gli eventi a quelli relativi a una risorsa specifica. Si passa l'ID risorsa di un gruppo di sicurezza di rete.
Azure PowerShell
$resourceId = (Get-AzResource -ResourceName demoSecurityGroup -ResourceGroupName myResourceGroup).ResourceId
New-AzEventGridSubscription `
-Endpoint <endpoint-URL> `
-EventSubscriptionName demoSubscriptionToResourceGroup `
-ResourceGroupName myResourceGroup `
-SubjectBeginsWith $resourceId
L'esempio successivo di PowerShell crea una sottoscrizione per una risorsa di archiviazione BLOB e limita gli eventi a quelli con un oggetto che termina con .jpg
.
$storageId = (Get-AzStorageAccount -ResourceGroupName myResourceGroup -AccountName $storageName).Id
New-AzEventGridSubscription `
-EventSubscriptionName demoSubToStorage `
-Endpoint <endpoint-URL> `
-ResourceId $storageId `
-SubjectEndsWith ".jpg"
Interfaccia della riga di comando di Azure
Nell'esempio seguente dell'interfaccia della riga di comando di Azure si crea una sottoscrizione di eventi che applica un filtro in base all'inizio dell'oggetto. Si usa il parametro --subject-begins-with
per limitare gli eventi a quelli relativi a una risorsa specifica. Si passa l'ID risorsa di un gruppo di sicurezza di rete.
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
L'esempio successivo dell'interfaccia della riga di comando di Azure crea una sottoscrizione per una risorsa di archiviazione BLOB e limita gli eventi a quelli con un oggetto che termina con .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
Per una sottoscrizione di eventi esistente:
Nella pagina Sottoscrizione eventi selezionare Abilita filtro soggetto.
Immettere i valori per uno o più dei campi seguenti: l'oggetto inizia con e l'oggetto termina con . Nelle opzioni seguenti sono selezionate entrambe le opzioni.
Selezionare l'opzione di corrispondenza dell'oggetto con distinzione tra maiuscole e minuscole se si desidera che l'oggetto dell'evento corrisponda al caso dei filtri specificati.
Quando si crea una sottoscrizione di eventi, usare la scheda Filtri nella creazione guidata.
Modello di Azure Resource Manager
Nell'esempio seguente di un modello di Resource Manager si crea una sottoscrizione di eventi che applica un filtro in base all'inizio dell'oggetto. Si usa la proprietà subjectBeginsWith
per limitare gli eventi a quelli relativi a una risorsa specifica. Si passa l'ID risorsa di un gruppo di sicurezza di rete.
"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" ]
}
}
}
]
L'esempio successivo di un modello di Resource Manager crea una sottoscrizione per una risorsa di archiviazione BLOB e limita gli eventi a quelli con un oggetto che termina con .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" ]
}
}
}
]
Nota
Per altre informazioni su questi filtri (tipi di eventi, oggetto e avanzato), vedere Informazioni sul filtro degli eventi per le sottoscrizioni di Griglia di eventi.
Filtrare in base a operatori e dati
Per una maggiore flessibilità nell'applicazione di filtri è possibile usare gli operatori e le proprietà dei dati per filtrare gli eventi.
Creare una sottoscrizione con filtri avanzati
Per altre informazioni sugli operatori e sulle chiavi che è possibile usare per i filtri avanzati, vedere Filtri avanzati.
Questi esempi creano un argomento personalizzato. Sottoscrivono l'argomento personalizzato e filtrano in base a un valore nell'oggetto dati. Gli eventi che hanno la proprietà color impostata sul blue, red o green vengono inviati alla sottoscrizione.
Azure PowerShell
Per PowerShell, usare:
$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)
Interfaccia della riga di comando di Azure
Per l'interfaccia della riga di comando di Azure usare:
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>"
Si noti che per la sottoscrizione è impostata una data di scadenza.
Azure portal
Nella pagina Sottoscrizione eventi selezionare Aggiungi nuovo filtro nella sezione FILTRI AVANZATI.
Specificare una chiave, un operatore e un valore o valori da confrontare. Nell'esempio seguente, data.color viene usato come chiave, String è in come operatore e i valori blu, rosso e verde vengono specificati per i valori.
Nota
Per altre informazioni sui filtri avanzati, vedere Informazioni sul filtro degli eventi per le sottoscrizioni di Griglia di eventi.
Testare il filtro
Per testare il filtro, inviare un evento con il campo color impostato su green. Poiché il verde è uno dei valori nel filtro, l'evento viene recapitato all'endpoint.
Azure PowerShell
Per PowerShell, usare:
$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}
Per testare uno scenario in cui non viene inviato l'evento, inviare un evento con il campo color impostato su yellow. Poiché yellow non è uno dei valori specificati nella sottoscrizione, l'evento non viene inviato alla sottoscrizione.
$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}
Interfaccia della riga di comando di Azure
Per l'interfaccia della riga di comando di Azure usare:
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
Per testare uno scenario in cui non viene inviato l'evento, inviare un evento con il campo color impostato su yellow. Poiché yellow non è uno dei valori specificati nella sottoscrizione, l'evento non viene inviato alla sottoscrizione.
Per l'interfaccia della riga di comando di Azure usare:
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
Passaggi successivi
Per altre informazioni sui filtri (tipi di evento, oggetto e avanzato), vedere Informazioni sul filtro degli eventi per le sottoscrizioni di Griglia di eventi.