Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo ti mostra come filtrare gli eventi che Event Grid consegna al tuo endpoint quando crei un abbonamento agli eventi. Puoi filtrare per tipo di evento, per soggetto, oppure per campi e operatori avanzati, così che solo gli eventi che ti interessano raggiungano il tuo gestore.
Gli esempi utilizzano Azure PowerShell, interfaccia della riga di comando di Azure, il portale Azure e i template Azure Resource Manager (ARM). Usa lo strumento che si adatta al tuo flusso di lavoro. Per approfondire le opzioni di filtraggio disponibili, consulta Comprendere il filtraggio degli eventi per gli abbonamenti a Event Grid.
Prerequisiti
- Una sottoscrizione di Azure attiva. Se non se ne ha una, creare un account gratuito prima di iniziare.
- Azure PowerShell o interfaccia della riga di comando di Azure installati, se intendi eseguire gli esempi di PowerShell o CLI. Per ulteriori informazioni, consulta Installa il modulo PowerShell di Azure Az o Come installare la CLI di interfaccia della riga di comando di Azure.
- Un argomento Event Grid o argomento di sistema esistente, e un endpoint per ricevere gli eventi filtrati. Alcuni esempi creano per te il topic richiesto.
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. I seguenti esempi creano abbonamenti agli eventi per un gruppo di risorse ma limitano gli eventi 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
Portale di Azure
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.
Specifica i filtri mentre crei un argomento personalizzato selezionando il link Aggiungi Tipo di Evento come mostrato 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": "2025-02-15",
"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 da far corrispondere 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 della 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 della 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"
Portale di Azure
Per una sottoscrizione di eventi esistente:
Nella pagina Sottoscrizione eventi, selezionare Abilita il filtro per soggetto.
Immettere i valori per uno o più dei campi seguenti: l'oggetto inizia con e l'oggetto termina con . Nell'esempio seguente vengono selezionate entrambe le opzioni.
Selezionare l'opzione Corrispondenza del soggetto con distinzione tra maiuscole e minuscole se si desidera che il soggetto dell'evento corrisponda esattamente all'uso di maiuscole e minuscole dei filtri specificati.
Quando si crea una sottoscrizione di eventi, utilizzare la scheda Filtri nella procedura guidata di creazione.
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 della risorsa di un gruppo di sicurezza di rete.
"resources": [
{
"type": "Microsoft.EventGrid/eventSubscriptions",
"name": "[parameters('eventSubName')]",
"apiVersion": "2025-02-15",
"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": "2025-02-15",
"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 su blu, rosso o verde 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.
Portale di Azure
Nella pagina Sottoscrizione eventi selezionare Aggiungi nuovo filtro nella sezione FILTRI AVANZATI.
Specifica una chiave, un operatore e uno o più 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é giallo non è uno dei valori specificati nella sottoscrizione, l'evento non viene recapitato 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. Giallo non è uno dei valori specificati nella sottoscrizione, quindi l'evento non viene recapitato 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