Informazioni sui filtri eventi per le sottoscrizioni di Griglia di eventi
Questo articolo descrive i diversi modi per filtrare gli eventi che vengono inviati all'endpoint. Quando si crea una sottoscrizione di eventi, sono disponibili tre opzioni di filtro:
- Tipi di evento
- L'oggetto inizia o termina con
- Operatori e campi avanzati
Modello di Azure Resource Manager
Gli esempi illustrati in questo articolo sono frammenti di codice JSON per la definizione di filtri nei modelli di Azure Resource Manager (ARM). Per un esempio di modello di Resource Manager completo e distribuzione di un modello di Resource Manager, vedere Avvio rapido: Instradare gli eventi di archiviazione BLOB all'endpoint Web usando un modello di Resource Manager. Ecco altre sezioni relative alla filter
sezione dell'esempio nell'argomento di avvio rapido. Il modello di Resource Manager definisce le risorse seguenti.
- Account di archiviazione di Azure
- Argomento di sistema per l'account di archiviazione
- Sottoscrizione di eventi per l'argomento di sistema. La sottosezione verrà visualizzata
filter
nella sezione sottoscrizione di eventi.
Nell'esempio seguente la sottoscrizione di eventi filtra gli Microsoft.Storage.BlobCreated
eventi e Microsoft.Storage.BlobDeleted
.
{
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-08-01",
"name": "[parameters('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2",
"properties": {
"accessTier": "Hot"
}
},
{
"type": "Microsoft.EventGrid/systemTopics",
"apiVersion": "2021-12-01",
"name": "[parameters('systemTopicName')]",
"location": "[parameters('location')]",
"properties": {
"source": "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]",
"topicType": "Microsoft.Storage.StorageAccounts"
},
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]"
]
},
{
"type": "Microsoft.EventGrid/systemTopics/eventSubscriptions",
"apiVersion": "2021-12-01",
"name": "[format('{0}/{1}', parameters('systemTopicName'), parameters('eventSubName'))]",
"properties": {
"destination": {
"properties": {
"endpointUrl": "[parameters('endpoint')]"
},
"endpointType": "WebHook"
},
"filter": {
"includedEventTypes": [
"Microsoft.Storage.BlobCreated",
"Microsoft.Storage.BlobDeleted"
]
}
},
"dependsOn": [
"[resourceId('Microsoft.EventGrid/systemTopics', parameters('systemTopicName'))]"
]
}
]
}
Filtro in base al tipo di evento
Per impostazione predefinita, tutti i tipi di evento dell'origine eventi vengono inviati all'endpoint. È possibile decidere di inviare all'endpoint solo determinati tipi di evento. È ad esempio possibile ricevere una notifica in caso di aggiornamenti delle risorse, ma non per altre operazioni, come le eliminazioni. In tal caso, filtrare in base al tipo di evento Microsoft.Resources.ResourceWriteSuccess
. Fornire una matrice con i tipi di evento o specificare All
per ottenere tutti i tipi di evento per l'origine eventi.
La sintassi JSON per l'applicazione di un filtro in base al tipo di evento è la seguente:
"filter": {
"includedEventTypes": [
"Microsoft.Resources.ResourceWriteFailure",
"Microsoft.Resources.ResourceWriteSuccess"
]
}
Filtro in base all'oggetto
Per applicare un filtro semplice in base all'oggetto, specificare un valore iniziale o finale per l'oggetto. È ad esempio possibile specificare che l'oggetto termina con .txt
per ottenere solo gli eventi correlati al caricamento di un file di testo in un account di archiviazione. È anche possibile specificare che l'oggetto inizia con /blobServices/default/containers/testcontainer
per ottenere tutti gli eventi per il contenitore specificato, ma non per altri contenitori nell'account di archiviazione.
Quando si pubblicano eventi in argomenti personalizzati, creare oggetti per gli eventi in modo che i sottoscrittori possano sapere più facilmente se sono interessati all'evento. I Sottoscrittori usano la proprietà subject per filtrare e instradare gli eventi. È consigliabile aggiungere il percorso in cui si è verificato l'evento, in modo che i sottoscrittori possano filtrare in base ai segmenti di tale percorso. Il percorso consente ai sottoscrittori di filtrare gli eventi in modo più ampio o ristretto. Se ad esempio si specifica un percorso di tre segmenti, come /A/B/C
nell'oggetto, i sottoscrittori possono filtrare in base al primo segmento /A
per ottenere un ampio set di eventi. Tali sottoscrittori ricevono eventi con oggetti come /A/B/C
o /A/D/E
. Altri sottoscrittori possono filtrare in base a /A/B
per ottenere un set di eventi più ristretto.
Esempi (eventi di Archiviazione BLOB)
Gli eventi BLOB possono essere filtrati in base al tipo di evento, al nome del contenitore o al nome dell'oggetto creato o eliminato.
L'oggetto di eventi di archiviazione BLOB usa il formato:
/blobServices/default/containers/<containername>/blobs/<blobname>
Per trovare la corrispondenza di tutti gli eventi per un account di archiviazione, è possibile non impostare alcun filtro dell'oggetto.
Per trovare la corrispondenza di eventi da BLOB creati in un set di contenitori che condividono un prefisso, usare un filtro subjectBeginsWith
come:
/blobServices/default/containers/containerprefix
Per trovare la corrispondenza di eventi da BLOB creati in un contenitore specifico, usare un filtro subjectBeginsWith
come:
/blobServices/default/containers/containername/
Per trovare la corrispondenza di eventi da BLOB creati in un contenitore specifico che condividono un prefisso di nome di BLOB, usare un filtro subjectBeginsWith
come:
/blobServices/default/containers/containername/blobs/blobprefix
Per trovare una corrispondenza con gli eventi dei BLOB creati in una sottocartella specifica di un contenitore, usare un subjectBeginsWith
filtro simile al seguente:
/blobServices/default/containers/{containername}/blobs/{subfolder}/
Per trovare la corrispondenza di eventi da BLOB creati in un contenitore specifico che condividono un suffisso di BLOB, usare un filtro subjectEndsWith
, ad esempio ".log" o ".jpg".
Filtro avanzato
Per filtrare i valori nei campi dati e specificare l'operatore di confronto, usare l'opzione di filtro avanzato. Nel filtro avanzato specificare:
- operator type: il tipo di confronto.
- key: il campo nei dati dell'evento che viene usato per il filtro. Può essere un numero, un valore booleano, una stringa o una matrice.
- values : valore o valori da confrontare con la chiave.
Key
Key è il campo nei dati dell'evento usati per filtrare. Può essere uno dei tipi seguenti:
Numero
Boolean
Stringa
Matrice. Per usare questa funzionalità, è necessario impostare la
enableAdvancedFilteringOnArrays
proprietà su true."filter": { "subjectBeginsWith": "/blobServices/default/containers/mycontainer/blobs/log", "subjectEndsWith": ".jpg", "enableAdvancedFilteringOnArrays": true }
Per gli eventi nello schema Degli eventi cloud, usare i valori seguenti per la chiave: eventid
, source
, eventtype
eventtypeversion
, o i dati dell'evento , ad esempio data.key1
.
Se si usa il livello di base di Griglia di eventi, per gli eventi nello schema di Griglia di eventi, usare i valori seguenti per la chiave: ID
, Subject
Topic
, EventType
, DataVersion
, o i dati dell'evento , ad esempio data.key1
. Per lo schema di input personalizzato, usare i campi dati dell'evento ( ad esempio data.key1
). Per accedere ai campi nella sezione dati, usare la .
notazione (punto). Ad esempio, data.siteName
, data.appEventTypeDetail.action
per accedere siteName
o action
per l'evento di esempio seguente.
"data": {
"appEventTypeDetail": {
"action": "Started"
},
"siteName": "<site-name>",
"clientRequestId": "None",
"correlationRequestId": "None",
"requestId": "292f499d-04ee-4066-994d-c2df57b99198",
"address": "None",
"verb": "None"
},
Nota
Griglia di eventi non supporta il filtro in base a una matrice di oggetti. Consente solo String, Boolean, Numbers e Array degli stessi tipi (ad esempio matrice integer o matrice di stringhe).
Valori
I valori possono essere: number, string, boolean o array
Operatori
Gli operatori disponibili per i numeri sono:
NumberIn
L'operatore NumberIn restituisce true se il valore della chiave è uno dei valori di filtro specificati. Nell'esempio seguente viene verificato se il valore dell'attributo counter
nella data
sezione è 5 o 1.
"advancedFilters": [{
"operatorType": "NumberIn",
"key": "data.counter",
"values": [
5,
1
]
}]
Se la chiave è una matrice, tutti i valori della matrice vengono controllati rispetto alla matrice di valori di filtro. Di seguito è riportato lo pseudocode con la chiave : [v1, v2, v3]
e il filtro : [a, b, c]
. Tutti i valori chiave con tipi di dati che non corrispondono al tipo di dati del filtro vengono ignorati.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF filter == key
MATCH
NumberNotIn
NumberNotIn restituisce true se il valore della chiave non è uno dei valori di filtro specificati. Nell'esempio seguente viene verificato se il valore dell'attributo counter
nella data
sezione non è 41 e 0.
"advancedFilters": [{
"operatorType": "NumberNotIn",
"key": "data.counter",
"values": [
41,
0
]
}]
Se la chiave è una matrice, tutti i valori della matrice vengono controllati rispetto alla matrice di valori di filtro. Di seguito è riportato lo pseudocode con la chiave : [v1, v2, v3]
e il filtro : [a, b, c]
. Tutti i valori chiave con tipi di dati che non corrispondono al tipo di dati del filtro vengono ignorati.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF filter == key
FAIL_MATCH
NumberLessThan
L'operatore NumberLessThan restituisce true se il valore della chiave è minore del valore del filtro specificato. Nell'esempio seguente viene verificato se il valore dell'attributo counter
nella data
sezione è minore di 100.
"advancedFilters": [{
"operatorType": "NumberLessThan",
"key": "data.counter",
"value": 100
}]
Se la chiave è una matrice, tutti i valori della matrice vengono controllati rispetto al valore del filtro. Di seguito è riportato lo pseudocoded con la chiave : [v1, v2, v3]
. Tutti i valori chiave con tipi di dati che non corrispondono al tipo di dati del filtro vengono ignorati.
FOR_EACH key IN (v1, v2, v3)
IF key < filter
MATCH
NumberGreaterThan
L'operatore NumberGreaterThan restituisce true se il valore della chiave è maggiore del valore del filtro specificato. Nell'esempio seguente viene verificato se il valore dell'attributo counter
nella data
sezione è maggiore di 20.
"advancedFilters": [{
"operatorType": "NumberGreaterThan",
"key": "data.counter",
"value": 20
}]
Se la chiave è una matrice, tutti i valori della matrice vengono controllati rispetto al valore del filtro. Di seguito è riportato lo pseudocoded con la chiave : [v1, v2, v3]
. Tutti i valori chiave con tipi di dati che non corrispondono al tipo di dati del filtro vengono ignorati.
FOR_EACH key IN (v1, v2, v3)
IF key > filter
MATCH
NumberLessThanOrEquals
L'operatore NumberLessThanOrEquals restituisce true se il valore della chiave è minore o uguale al valore del filtro specificato. Nell'esempio seguente viene verificato se il valore dell'attributo counter
nella data
sezione è minore o uguale a 100.
"advancedFilters": [{
"operatorType": "NumberLessThanOrEquals",
"key": "data.counter",
"value": 100
}]
Se la chiave è una matrice, tutti i valori della matrice vengono controllati rispetto al valore del filtro. Di seguito è riportato lo pseudocoded con la chiave : [v1, v2, v3]
. Tutti i valori chiave con tipi di dati che non corrispondono al tipo di dati del filtro vengono ignorati.
FOR_EACH key IN (v1, v2, v3)
IF key <= filter
MATCH
NumberGreaterThanOrEquals
L'operatore NumberGreaterThanOrEquals restituisce true se il valore della chiave è maggiore o uguale al valore di filtro specificato. Nell'esempio seguente viene verificato se il valore dell'attributo counter
nella data
sezione è maggiore o uguale a 30.
"advancedFilters": [{
"operatorType": "NumberGreaterThanOrEquals",
"key": "data.counter",
"value": 30
}]
Se la chiave è una matrice, tutti i valori della matrice vengono controllati rispetto al valore del filtro. Di seguito è riportato lo pseudocoded con la chiave : [v1, v2, v3]
. Tutti i valori chiave con tipi di dati che non corrispondono al tipo di dati del filtro vengono ignorati.
FOR_EACH key IN (v1, v2, v3)
IF key >= filter
MATCH
NumberInRange
L'operatore NumberInRange restituisce true se il valore della chiave si trova in uno degli intervalli di filtri specificati. Nell'esempio seguente viene verificato se il valore dell'attributo key1
nella data
sezione si trova in uno dei due intervalli: 3.14159 - 999.95, 3000 - 4000.
{
"operatorType": "NumberInRange",
"key": "data.key1",
"values": [[3.14159, 999.95], [3000, 4000]]
}
La values
proprietà è una matrice di intervalli. Nell'esempio precedente si tratta di una matrice di due intervalli. Ecco un esempio di matrice con un intervallo da controllare.
Matrice con un intervallo:
{
"operatorType": "NumberInRange",
"key": "data.key1",
"values": [[3000, 4000]]
}
Se la chiave è una matrice, tutti i valori della matrice vengono controllati rispetto alla matrice di valori di filtro. Ecco lo pseudo-codice con la chiave: [v1, v2, v3]
e il filtro: una matrice di intervalli. In questo pseudo codice a
e b
sono valori bassi e alti di ogni intervallo nella matrice. Tutti i valori chiave con tipi di dati che non corrispondono al tipo di dati del filtro vengono ignorati.
FOR_EACH (a,b) IN filter.Values
FOR_EACH key IN (v1, v2, v3)
IF key >= a AND key <= b
MATCH
NumberNotInRange
L'operatore NumberNotInRange restituisce true se il valore della chiave non si trova in uno degli intervalli di filtri specificati. Nell'esempio seguente viene verificato se il valore dell'attributo key1
nella data
sezione si trova in uno dei due intervalli: 3.14159 - 999.95, 3000 - 4000. In caso affermativo, l'operatore restituisce false.
{
"operatorType": "NumberNotInRange",
"key": "data.key1",
"values": [[3.14159, 999.95], [3000, 4000]]
}
La values
proprietà è una matrice di intervalli. Nell'esempio precedente si tratta di una matrice di due intervalli. Ecco un esempio di matrice con un intervallo da controllare.
Matrice con un intervallo:
{
"operatorType": "NumberNotInRange",
"key": "data.key1",
"values": [[3000, 4000]]
}
Se la chiave è una matrice, tutti i valori della matrice vengono controllati rispetto alla matrice di valori di filtro. Ecco lo pseudo-codice con la chiave: [v1, v2, v3]
e il filtro: una matrice di intervalli. In questo pseudo codice a
e b
sono valori bassi e alti di ogni intervallo nella matrice. Tutti i valori chiave con tipi di dati che non corrispondono al tipo di dati del filtro vengono ignorati.
FOR_EACH (a,b) IN filter.Values
FOR_EACH key IN (v1, v2, v3)
IF key >= a AND key <= b
FAIL_MATCH
L'operatore disponibile per i valori booleani è:
BoolEquals
L'operatore BoolEquals restituisce true se il valore della chiave è il filtro valore booleano specificato. Nell'esempio seguente viene verificato se il valore dell'attributo isEnabled
nella data
sezione è true
.
"advancedFilters": [{
"operatorType": "BoolEquals",
"key": "data.isEnabled",
"value": true
}]
Se la chiave è una matrice, tutti i valori nella matrice vengono controllati rispetto al valore booleano del filtro. Di seguito è riportato lo pseudocoded con la chiave : [v1, v2, v3]
. Tutti i valori chiave con tipi di dati che non corrispondono al tipo di dati del filtro vengono ignorati.
FOR_EACH key IN (v1, v2, v3)
IF filter == key
MATCH
Gli operatori disponibili per le stringhe sono:
StringContains
StringContains restituisce true se il valore della chiave contiene uno dei valori di filtro specificati (come sottostringhe). Nell'esempio seguente viene verificato se il valore dell'attributo key1
nella data
sezione contiene una delle sottostringhe specificate: microsoft
o azure
. Ad esempio, azure data factory
ha azure
in esso.
"advancedFilters": [{
"operatorType": "StringContains",
"key": "data.key1",
"values": [
"microsoft",
"azure"
]
}]
Se la chiave è una matrice, tutti i valori della matrice vengono controllati rispetto alla matrice di valori di filtro. Di seguito è riportato lo pseudocode con la chiave : [v1, v2, v3]
e il filtro : [a,b,c]
. Tutti i valori chiave con tipi di dati che non corrispondono al tipo di dati del filtro vengono ignorati.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF key CONTAINS filter
MATCH
StringNotContains
L'operatore StringNotContains restituisce true se la chiave non contiene i valori di filtro specificati come sottostringhe. Se la chiave contiene uno dei valori specificati come sottostringa, l'operatore restituisce false. Nell'esempio seguente l'operatore restituisce true solo se il valore dell'attributo key1
nella data
sezione non ha contoso
e fabrikam
come sottostringhe.
"advancedFilters": [{
"operatorType": "StringNotContains",
"key": "data.key1",
"values": [
"contoso",
"fabrikam"
]
}]
Se la chiave è una matrice, tutti i valori della matrice vengono controllati rispetto alla matrice di valori di filtro. Di seguito è riportato lo pseudocode con la chiave : [v1, v2, v3]
e il filtro : [a,b,c]
. Tutti i valori chiave con tipi di dati che non corrispondono al tipo di dati del filtro vengono ignorati.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF key CONTAINS filter
FAIL_MATCH
Vedere la sezione Limitazioni per la limitazione corrente di questo operatore.
StringBeginsWith
L'operatore StringBeginsWith restituisce true se il valore della chiave inizia con uno dei valori di filtro specificati. Nell'esempio seguente viene verificato se il valore dell'attributo key1
nella data
sezione inizia con event
o message
. Ad esempio, event hubs
inizia con event
.
"advancedFilters": [{
"operatorType": "StringBeginsWith",
"key": "data.key1",
"values": [
"event",
"message"
]
}]
Se la chiave è una matrice, tutti i valori della matrice vengono controllati rispetto alla matrice di valori di filtro. Di seguito è riportato lo pseudocode con la chiave : [v1, v2, v3]
e il filtro : [a,b,c]
. Tutti i valori chiave con tipi di dati che non corrispondono al tipo di dati del filtro vengono ignorati.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF key BEGINS_WITH filter
MATCH
StringNotBeginsWith
L'operatore StringNotBeginsWith restituisce true se il valore della chiave non inizia con uno dei valori di filtro specificati. Nell'esempio seguente viene verificato se il valore dell'attributo key1
nella data
sezione non inizia con event
o message
.
"advancedFilters": [{
"operatorType": "StringNotBeginsWith",
"key": "data.key1",
"values": [
"event",
"message"
]
}]
Se la chiave è una matrice, tutti i valori della matrice vengono controllati rispetto alla matrice di valori di filtro. Di seguito è riportato lo pseudocode con la chiave : [v1, v2, v3]
e il filtro : [a,b,c]
. Tutti i valori chiave con tipi di dati che non corrispondono al tipo di dati del filtro vengono ignorati.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF key BEGINS_WITH filter
FAIL_MATCH
StringEndsWith
L'operatore StringEndsWith restituisce true se il valore della chiave termina con uno dei valori di filtro specificati. Nell'esempio seguente viene verificato se il valore dell'attributo key1
nella data
sezione termina con jpg
o jpeg
o png
. Ad esempio, eventgrid.png
termina con png
.
"advancedFilters": [{
"operatorType": "StringEndsWith",
"key": "data.key1",
"values": [
"jpg",
"jpeg",
"png"
]
}]
Se la chiave è una matrice, tutti i valori della matrice vengono controllati rispetto alla matrice di valori di filtro. Di seguito è riportato lo pseudocode con la chiave : [v1, v2, v3]
e il filtro : [a,b,c]
. Tutti i valori chiave con tipi di dati che non corrispondono al tipo di dati del filtro vengono ignorati.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF key ENDS_WITH filter
MATCH
StringNotEndsWith
L'operatore StringNotEndsWith restituisce true se il valore della chiave non termina con uno dei valori di filtro specificati. Nell'esempio seguente viene verificato se il valore dell'attributo key1
nella data
sezione non termina con jpg
o jpeg
o png
.
"advancedFilters": [{
"operatorType": "StringNotEndsWith",
"key": "data.key1",
"values": [
"jpg",
"jpeg",
"png"
]
}]
Se la chiave è una matrice, tutti i valori della matrice vengono controllati rispetto alla matrice di valori di filtro. Di seguito è riportato lo pseudocode con la chiave : [v1, v2, v3]
e il filtro : [a,b,c]
. Tutti i valori chiave con tipi di dati che non corrispondono al tipo di dati del filtro vengono ignorati.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF key ENDS_WITH filter
FAIL_MATCH
StringIn
L'operatore StringIn controlla se il valore della chiave corrisponde esattamente a uno dei valori di filtro specificati. Nell'esempio seguente viene verificato se il valore dell'attributo key1
nella data
sezione è contoso
o fabrikam
factory
.
"advancedFilters": [{
"operatorType": "StringIn",
"key": "data.key1",
"values": [
"contoso",
"fabrikam",
"factory"
]
}]
Se la chiave è una matrice, tutti i valori della matrice vengono controllati rispetto alla matrice di valori di filtro. Di seguito è riportato lo pseudocode con la chiave : [v1, v2, v3]
e il filtro : [a,b,c]
. Tutti i valori chiave con tipi di dati che non corrispondono al tipo di dati del filtro vengono ignorati.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF filter == key
MATCH
StringNotIn
L'operatore StringNotIn controlla se il valore della chiave non corrisponde ad alcuno dei valori di filtro specificati. Nell'esempio seguente viene verificato se il valore dell'attributo key1
nella data
sezione non aws
è e bridge
.
"advancedFilters": [{
"operatorType": "StringNotIn",
"key": "data.key1",
"values": [
"aws",
"bridge"
]
}]
Se la chiave è una matrice, tutti i valori della matrice vengono controllati rispetto alla matrice di valori di filtro. Di seguito è riportato lo pseudocode con la chiave : [v1, v2, v3]
e il filtro : [a,b,c]
. Tutti i valori chiave con tipi di dati che non corrispondono al tipo di dati del filtro vengono ignorati.
FOR_EACH filter IN (a, b, c)
FOR_EACH key IN (v1, v2, v3)
IF filter == key
FAIL_MATCH
Tutti i confronti tra stringhe non fanno distinzione tra maiuscole e minuscole.
Nota
Se json dell'evento non contiene la chiave di filtro avanzata, il filtro viene valutato come non corrispondente per gli operatori seguenti: NumberGreaterThan, NumberGreaterThanOrEquals, NumberLessThan, NumberLessThanOrEquals, NumberIn, BoolEquals, StringContains, StringNotContains, StringBeginsWith, StringNotBeginsWith, StringEndsWith, StringNotEndsWith, StringNotEndsWith, StringIn.
Il filtro viene valutato come corrispondente per gli operatori seguenti: NumberNotIn, StringNotIn.
IsNullOrUndefined
L'operatore IsNullOrUndefined restituisce true se il valore della chiave è NULL o non definito.
{
"operatorType": "IsNullOrUndefined",
"key": "data.key1"
}
Nell'esempio seguente, key1 è mancante, quindi l'operatore restituisce true.
{
"data":
{
"key2": 5
}
}
Nell'esempio seguente key1 è impostato su Null, quindi l'operatore restituisce true.
{
"data":
{
"key1": null
}
}
Se key1 ha qualsiasi altro valore in questi esempi, l'operatore restituirà false.
IsNotNull
L'operatore IsNotNull restituisce true se il valore della chiave non è NULL o non definito.
{
"operatorType": "IsNotNull",
"key": "data.key1"
}
OR and AND
Se si specifica un singolo filtro con più valori, viene eseguita un'operazione OR , pertanto il valore del campo chiave deve essere uno di questi valori. Ecco un esempio:
"advancedFilters": [
{
"operatorType": "StringContains",
"key": "Subject",
"values": [
"/providers/microsoft.devtestlab/",
"/providers/Microsoft.Compute/virtualMachines/"
]
}
]
Se si specificano più filtri diversi, viene eseguita un'operazione AND , quindi ogni condizione di filtro deve essere soddisfatta. Ecco un esempio:
"advancedFilters": [
{
"operatorType": "StringContains",
"key": "Subject",
"values": [
"/providers/microsoft.devtestlab/"
]
},
{
"operatorType": "StringContains",
"key": "Subject",
"values": [
"/providers/Microsoft.Compute/virtualMachines/"
]
}
]
CloudEvents
Per gli eventi nello schema CloudEvents, usare i valori seguenti per la chiave: eventid
, source
, eventtype
eventtypeversion
, o i dati dell'evento , ad esempio data.key1
.
È anche possibile usare gli attributi del contesto dell'estensione in CloudEvents 1.0. Nell'esempio comexampleextension1
seguente e comexampleothervalue
sono attributi del contesto di estensione.
{
"specversion" : "1.0",
"type" : "com.example.someevent",
"source" : "/mycontext",
"id" : "C234-1234-1234",
"time" : "2018-04-05T17:31:00Z",
"subject": null,
"comexampleextension1" : "value",
"comexampleothervalue" : 5,
"datacontenttype" : "application/json",
"data" : {
"appinfoA" : "abc",
"appinfoB" : 123,
"appinfoC" : true
}
}
Ecco un esempio di uso di un attributo del contesto di estensione in un filtro.
"advancedFilters": [{
"operatorType": "StringBeginsWith",
"key": "comexampleothervalue",
"values": [
"5",
"1"
]
}]
Limiti
I filtri avanzati presentano le limitazioni seguenti:
- 25 filtri avanzati e 25 valori di filtro in tutti i filtri per ogni sottoscrizione di Griglia di eventi
- 512 caratteri per ogni valore stringa
- Chiavi con
.
carattere (punto) in esse. Ad esempio,http://schemas.microsoft.com/claims/authnclassreference
ojohn.doe@contoso.com
. Attualmente non è disponibile alcun supporto per i caratteri di escape nelle chiavi.
È possibile usare l'elemento key in più filtri.
Passaggi successivi
- Per informazioni sull'applicazione di filtri agli eventi con PowerShell e l'interfaccia della riga di comando di Azure, vedere Filtrare gli eventi per Griglia di eventi.
- Per iniziare rapidamente a usare Griglia di eventi, vedere Creare e instradare eventi personalizzati con Griglia di eventi di Azure.