Partager via


Filtres d’événements pour les abonnements aux rubriques d’espace de noms Azure Event Grid

Cet article décrit différentes façons de spécifier des filtres sur les abonnements aux événements dans les rubriques d’espace de noms. Les filtres vous permettent d’envoyer uniquement un sous-ensemble d’événements envoyés par l’éditeur à Event Grid au point de terminaison de destination. Lors de la création d’un abonnement aux événements, vous avez trois options de filtrage :

  • Types d’événements
  • Le sujet commence par ou se termine par
  • Champs et opérateurs avancés

Filtrage de type d’événement

Par défaut, tous les types d’événements pour la source d’événement sont envoyés au point de terminaison. Vous pouvez décider d’envoyer uniquement certains types d’événements à votre point de terminaison. Par exemple, vous pouvez recevoir une notification des mises à jour de vos ressources, mais pas d’autres opérations telles que les suppressions. Dans ce cas, filtrez par type d’événement Microsoft.Resources.ResourceWriteSuccess . Fournissez un tableau avec les types d’événements ou spécifiez All pour obtenir tous les types d’événements pour la source d’événement.

La syntaxe JSON pour le filtrage par type d’événement est la suivante :

"filter": {
  "includedEventTypes": [
    "Microsoft.Resources.ResourceWriteFailure",
    "Microsoft.Resources.ResourceWriteSuccess"
  ]
}

Filtrage d’objet

Pour un filtrage simple par objet, spécifiez une valeur de début ou de fin pour l’objet. Par exemple, vous pouvez spécifier l’objet se termine par .txt l’obtention uniquement d’événements liés au chargement d’un fichier texte dans un compte de stockage. Vous pouvez également filtrer l’objet /blobServices/default/containers/testcontainer pour obtenir tous les événements de ce conteneur, mais pas d’autres conteneurs dans le compte de stockage.

Lors de la publication d’événements dans des rubriques personnalisées, créez des sujets pour vos événements qui facilitent l’accès aux abonnés pour savoir s’ils sont intéressés par l’événement. Les abonnés utilisent la propriété objet pour filtrer et router les événements. Envisagez d’ajouter le chemin d’accès pour l’endroit où l’événement s’est produit, afin que les abonnés puissent filtrer par segments de ce chemin. Le chemin permet aux abonnés de filtrer de manière étroite ou large les événements. Si vous fournissez un chemin de trois segments comme /A/B/C dans l’objet, les abonnés peuvent filtrer par le premier segment /A pour obtenir un large ensemble d’événements. Ces abonnés obtiennent des événements avec des sujets tels ou /A/B/C/A/D/E. D’autres abonnés peuvent filtrer /A/B pour obtenir un ensemble plus étroit d’événements.

Exemples (événements de stockage Blob)

Les événements d’objet blob peuvent être filtrés par le type d’événement, le nom du conteneur ou le nom de l’objet créé ou supprimé.

L’objet des événements de stockage d’objets blob utilise le format :

/blobServices/default/containers/<containername>/blobs/<blobname>

Pour faire correspondre tous les événements d’un compte de stockage, vous pouvez laisser les filtres d’objet vides.

Pour faire correspondre les événements des objets blob créés dans un ensemble de conteneurs partageant un préfixe, utilisez un subjectBeginsWith filtre comme suit :

/blobServices/default/containers/containerprefix

Pour faire correspondre les événements des objets blob créés dans un conteneur spécifique, utilisez un subjectBeginsWith filtre comme suit :

/blobServices/default/containers/containername/

Pour faire correspondre les événements des objets blob créés dans un conteneur spécifique partageant un préfixe de nom d’objet blob, utilisez un subjectBeginsWith filtre comme suit :

/blobServices/default/containers/containername/blobs/blobprefix

Pour faire correspondre les événements des objets blob créés dans un sous-dossier spécifique d’un conteneur, utilisez un subjectBeginsWith filtre comme suit :

/blobServices/default/containers/{containername}/blobs/{subfolder}/

Pour faire correspondre les événements des objets blob créés dans un conteneur spécifique partageant un suffixe d’objet blob, utilisez un subjectEndsWith filtre tel que « .log » ou «.jpg».

Filtrage avancé

Pour filtrer par valeurs dans les champs de données et spécifier l’opérateur de comparaison, utilisez l’option de filtrage avancée. Dans le filtrage avancé, vous spécifiez les éléments suivants :

  • type d’opérateur : type de comparaison.
  • clé : champ dans les données d’événement que vous utilisez pour le filtrage. Il peut s’agir d’un nombre, booléen, d’une chaîne ou d’un tableau.
  • valeurs : valeur ou valeurs à comparer à la clé.

Key

La clé est le champ dans les données d’événement que vous utilisez pour le filtrage. Il peut s’agir de l’un des types suivants :

  • Number

  • Booléen

  • Chaîne

  • Tableau. Vous devez définir la enableAdvancedFilteringOnArrays propriété sur true pour utiliser cette fonctionnalité.

    "filter":
    {
        "subjectBeginsWith": "/blobServices/default/containers/mycontainer/blobs/log",
        "subjectEndsWith": ".jpg",
        "enableAdvancedFilteringOnArrays": true
    }
    

Pour les événements dans le schéma Des événements cloud, utilisez les valeurs suivantes pour la clé : eventid, , source, eventtypeeventtypeversionou données d’événement (par exempledata.key1).

Si vous utilisez le niveau de base Event Grid, pour les événements dans le schéma Event Grid, utilisez les valeurs suivantes pour la clé : ID, , Topic, SubjectEventType, DataVersion, ou les données d’événement (par data.key1exemple). Pour un schéma d’entrée personnalisé, utilisez les champs de données d’événement (par exemple data.key1). Pour accéder aux champs de la section données, utilisez la . notation (point). Par exemple, data.siteNamedata.appEventTypeDetail.action pour accéder siteName ou action pour l’exemple d’événement suivant.

	"data": {
		"appEventTypeDetail": {
			"action": "Started"
		},
		"siteName": "<site-name>",
		"clientRequestId": "None",
		"correlationRequestId": "None",
		"requestId": "292f499d-04ee-4066-994d-c2df57b99198",
		"address": "None",
		"verb": "None"
	},

Note

Event Grid ne prend pas en charge le filtrage sur un tableau d’objets. Elle autorise uniquement String, Boolean, Numbers et Array des mêmes types (comme le tableau d’entiers ou le tableau de chaînes).

Valeurs

Les valeurs peuvent être : nombre, chaîne, booléen ou tableau

Opérateurs

Les opérateurs disponibles pour les nombres sont les suivants :

NumberIn

L’opérateur NumberIn prend la valeur true si la valeur de clé est l’une des valeurs de filtre spécifiées. Dans l’exemple suivant, il vérifie si la valeur de l’attribut counter dans la data section est 5 ou 1.

"advancedFilters": [{
    "operatorType": "NumberIn",
    "key": "data.counter",
    "values": [
        5,
        1
    ]
}]

Si la clé est un tableau, toutes les valeurs du tableau sont vérifiées par rapport au tableau de valeurs de filtre. Voici le pseudo-code avec la clé : [v1, v2, v3] et le filtre : [a, b, c]. Toutes les valeurs de clé avec des types de données qui ne correspondent pas au type de données du filtre sont ignorées.

FOR_EACH filter IN (a, b, c)
    FOR_EACH key IN (v1, v2, v3)
        IF filter == key
            MATCH

NumberNotIn

NumberNotIn prend la valeur true si la valeur de clén’est pas l’une des valeurs de filtre spécifiées. Dans l’exemple suivant, il vérifie si la valeur de l’attribut counter dans la data section n’est pas 41 et 0.

"advancedFilters": [{
    "operatorType": "NumberNotIn",
    "key": "data.counter",
    "values": [
        41,
        0
    ]
}]

Si la clé est un tableau, toutes les valeurs du tableau sont vérifiées par rapport au tableau de valeurs de filtre. Voici le pseudo-code avec la clé : [v1, v2, v3] et le filtre : [a, b, c]. Toutes les valeurs de clé avec des types de données qui ne correspondent pas au type de données du filtre sont ignorées.

FOR_EACH filter IN (a, b, c)
    FOR_EACH key IN (v1, v2, v3)
        IF filter == key
            FAIL_MATCH

NumberLessThan

L’opérateur NumberLessThan prend la valeur true si la valeur de clé est inférieure à la valeur de filtre spécifiée. Dans l’exemple suivant, il vérifie si la valeur de l’attribut counter dans la data section est inférieure à 100.

"advancedFilters": [{
    "operatorType": "NumberLessThan",
    "key": "data.counter",
    "value": 100
}]

Si la clé est un tableau, toutes les valeurs du tableau sont vérifiées par rapport à la valeur de filtre. Voici le pseudo-code avec la clé : [v1, v2, v3]. Toutes les valeurs de clé avec des types de données qui ne correspondent pas au type de données du filtre sont ignorées.

FOR_EACH key IN (v1, v2, v3)
    IF key < filter
        MATCH

NumberGreaterThan

L’opérateur NumberGreaterThan prend la valeur true si la valeur de clé est supérieure à la valeur de filtre spécifiée. Dans l’exemple suivant, il vérifie si la valeur de l’attribut counter dans la data section est supérieure à 20.

"advancedFilters": [{
    "operatorType": "NumberGreaterThan",
    "key": "data.counter",
    "value": 20
}]

Si la clé est un tableau, toutes les valeurs du tableau sont vérifiées par rapport à la valeur de filtre. Voici le pseudo-code avec la clé : [v1, v2, v3]. Toutes les valeurs de clé avec des types de données qui ne correspondent pas au type de données du filtre sont ignorées.

FOR_EACH key IN (v1, v2, v3)
    IF key > filter
        MATCH

NumberLessThanOrEquals

L’opérateur NumberLessThanOrEquals prend la valeur true si la valeur de clé est inférieure ou égale à la valeur de filtre spécifiée. Dans l’exemple suivant, il vérifie si la valeur de l’attribut counter dans la data section est inférieure ou égale à 100.

"advancedFilters": [{
    "operatorType": "NumberLessThanOrEquals",
    "key": "data.counter",
    "value": 100
}]

Si la clé est un tableau, toutes les valeurs du tableau sont vérifiées par rapport à la valeur de filtre. Voici le pseudo-code avec la clé : [v1, v2, v3]. Toutes les valeurs de clé avec des types de données qui ne correspondent pas au type de données du filtre sont ignorées.

FOR_EACH key IN (v1, v2, v3)
    IF key <= filter
        MATCH

NumberGreaterThanOrEquals

L’opérateur NumberGreaterThanOrEquals prend la valeur true si la valeur de clé est supérieure ou égale à la valeur de filtre spécifiée. Dans l’exemple suivant, il vérifie si la valeur de l’attribut counter dans la data section est supérieure ou égale à 30.

"advancedFilters": [{
    "operatorType": "NumberGreaterThanOrEquals",
    "key": "data.counter",
    "value": 30
}]

Si la clé est un tableau, toutes les valeurs du tableau sont vérifiées par rapport à la valeur de filtre. Voici le pseudo-code avec la clé : [v1, v2, v3]. Toutes les valeurs de clé avec des types de données qui ne correspondent pas au type de données du filtre sont ignorées.

FOR_EACH key IN (v1, v2, v3)
    IF key >= filter
        MATCH

NumberInRange

L’opérateur NumberInRange prend la valeur true si la valeur de clé se trouve dans l’une des plages de filtres spécifiées. Dans l’exemple suivant, il vérifie si la valeur de l’attribut key1 dans la data section se trouve dans l’une des deux plages : 3.14159 - 999.95, 3000 - 4000.

{
    "operatorType": "NumberInRange",
    "key": "data.key1",
    "values": [[3.14159, 999.95], [3000, 4000]]
}

La values propriété est un tableau de plages. Dans l’exemple précédent, il s’agit d’un tableau de deux plages. Voici un exemple de tableau avec une plage à vérifier.

Tableau avec une plage :

{
    "operatorType": "NumberInRange",
    "key": "data.key1",
    "values": [[3000, 4000]]
}

Si la clé est un tableau, toutes les valeurs du tableau sont vérifiées par rapport au tableau de valeurs de filtre. Voici le pseudo-code avec la clé : [v1, v2, v3] et le filtre : un tableau de plages. Dans ce pseudo-code, a les valeurs faibles et b élevées de chaque plage du tableau sont faibles et élevées. Toutes les valeurs de clé avec des types de données qui ne correspondent pas au type de données du filtre sont ignorées.

FOR_EACH (a,b) IN filter.Values
    FOR_EACH key IN (v1, v2, v3)
       IF key >= a AND key <= b
           MATCH

NumberNotInRange

L’opérateur NumberNotInRange prend la valeur true si la valeur de clén’est pas dans l’une des plages de filtres spécifiées. Dans l’exemple suivant, il vérifie si la valeur de l’attribut key1 dans la data section se trouve dans l’une des deux plages : 3.14159 - 999.95, 3000 - 4000. Si c’est le cas, l’opérateur retourne false.

{
    "operatorType": "NumberNotInRange",
    "key": "data.key1",
    "values": [[3.14159, 999.95], [3000, 4000]]
}

La values propriété est un tableau de plages. Dans l’exemple précédent, il s’agit d’un tableau de deux plages. Voici un exemple de tableau avec une plage à vérifier.

Tableau avec une plage :

{
    "operatorType": "NumberNotInRange",
    "key": "data.key1",
    "values": [[3000, 4000]]
}

Si la clé est un tableau, toutes les valeurs du tableau sont vérifiées par rapport au tableau de valeurs de filtre. Voici le pseudo-code avec la clé : [v1, v2, v3] et le filtre : un tableau de plages. Dans ce pseudo-code, a les valeurs faibles et b élevées de chaque plage du tableau sont faibles et élevées. Toutes les valeurs de clé avec des types de données qui ne correspondent pas au type de données du filtre sont ignorées.

FOR_EACH (a,b) IN filter.Values
    FOR_EACH key IN (v1, v2, v3)
        IF key >= a AND key <= b
            FAIL_MATCH

L’opérateur disponible pour les booléens est :

BoolEquals

L’opérateur BoolEquals prend la valeur true si la valeur de clé est le filtre de valeur booléenne spécifié. Dans l’exemple suivant, il vérifie si la valeur de l’attribut isEnabled dans la data section est true.

"advancedFilters": [{
    "operatorType": "BoolEquals",
    "key": "data.isEnabled",
    "value": true
}]

Si la clé est un tableau, toutes les valeurs du tableau sont vérifiées par rapport à la valeur booléenne de filtre. Voici le pseudo-code avec la clé : [v1, v2, v3]. Toutes les valeurs de clé avec des types de données qui ne correspondent pas au type de données du filtre sont ignorées.

FOR_EACH key IN (v1, v2, v3)
    IF filter == key
        MATCH

Les opérateurs disponibles pour les chaînes sont les suivants :

StringContains

StringContains prend la valeur true si la valeur de clécontient l’une des valeurs de filtre spécifiées (sous-chaînes). Dans l’exemple suivant, il vérifie si la valeur de l’attribut key1 dans la data section contient l’une des sous-chaînes spécifiées : microsoft ou azure. Par exemple, azure data factory elle est azure présente.

"advancedFilters": [{
    "operatorType": "StringContains",
    "key": "data.key1",
    "values": [
        "microsoft", 
        "azure"
    ]
}]

Si la clé est un tableau, toutes les valeurs du tableau sont vérifiées par rapport au tableau de valeurs de filtre. Voici le pseudo-code avec la clé : [v1, v2, v3] et le filtre : [a,b,c]. Toutes les valeurs de clé avec des types de données qui ne correspondent pas au type de données du filtre sont ignorées.

FOR_EACH filter IN (a, b, c)
    FOR_EACH key IN (v1, v2, v3)
        IF key CONTAINS filter
            MATCH

StringNotContains

L’opérateur StringNotContains prend la valeur true si la clé ne contient pas les valeurs de filtre spécifiées en tant que sous-chaînes. Si la clé contient l’une des valeurs spécifiées en tant que sous-chaîne, l’opérateur prend la valeur false. Dans l’exemple suivant, l’opérateur retourne true uniquement si la valeur de l’attribut key1 de la data section n’a contoso pas et fabrikam comme sous-chaînes.

"advancedFilters": [{
    "operatorType": "StringNotContains",
    "key": "data.key1",
    "values": [
        "contoso", 
        "fabrikam"
    ]
}]

Si la clé est un tableau, toutes les valeurs du tableau sont vérifiées par rapport au tableau de valeurs de filtre. Voici le pseudo-code avec la clé : [v1, v2, v3] et le filtre : [a,b,c]. Toutes les valeurs de clé avec des types de données qui ne correspondent pas au type de données du filtre sont ignorées.

FOR_EACH filter IN (a, b, c)
    FOR_EACH key IN (v1, v2, v3)
        IF key CONTAINS filter
            FAIL_MATCH

Consultez la section Limitations pour connaître la limitation actuelle de cet opérateur.

StringBeginsWith

L’opérateur StringBeginsWith prend la valeur true si la valeur de clé commence par l’une des valeurs de filtrespécifiées. Dans l’exemple suivant, il vérifie si la valeur de l’attribut key1 dans la data section commence par event ou message. Par exemple, event hubs commence par event.

"advancedFilters": [{
    "operatorType": "StringBeginsWith",
    "key": "data.key1",
    "values": [
        "event", 
        "message"
    ]
}]

Si la clé est un tableau, toutes les valeurs du tableau sont vérifiées par rapport au tableau de valeurs de filtre. Voici le pseudo-code avec la clé : [v1, v2, v3] et le filtre : [a,b,c]. Toutes les valeurs de clé avec des types de données qui ne correspondent pas au type de données du filtre sont ignorées.

FOR_EACH filter IN (a, b, c)
    FOR_EACH key IN (v1, v2, v3)
        IF key BEGINS_WITH filter
            MATCH

StringNotBeginsWith

L’opérateur StringNotBeginsWith prend la valeur true si la valeur de clé ne commence par aucune des valeurs de filtre spécifiées. Dans l’exemple suivant, il vérifie si la valeur de l’attribut key1 dans la data section ne commence event pas ou message.

"advancedFilters": [{
    "operatorType": "StringNotBeginsWith",
    "key": "data.key1",
    "values": [
        "event", 
        "message"
    ]
}]

Si la clé est un tableau, toutes les valeurs du tableau sont vérifiées par rapport au tableau de valeurs de filtre. Voici le pseudo-code avec la clé : [v1, v2, v3] et le filtre : [a,b,c]. Toutes les valeurs de clé avec des types de données qui ne correspondent pas au type de données du filtre sont ignorées.

FOR_EACH filter IN (a, b, c)
    FOR_EACH key IN (v1, v2, v3)
        IF key BEGINS_WITH filter
            FAIL_MATCH

StringEndsWith

L’opérateur StringEndsWith prend la valeur true si la valeur de clése termine par l’une des valeurs de filtre spécifiées. Dans l’exemple suivant, il vérifie si la valeur de l’attribut key1 dans la data section se termine jpg par ou jpeg .png Par exemple, eventgrid.png se termine par png.

"advancedFilters": [{
    "operatorType": "StringEndsWith",
    "key": "data.key1",
    "values": [
        "jpg", 
        "jpeg", 
        "png"
    ]
}]

Si la clé est un tableau, toutes les valeurs du tableau sont vérifiées par rapport au tableau de valeurs de filtre. Voici le pseudo-code avec la clé : [v1, v2, v3] et le filtre : [a,b,c]. Toutes les valeurs de clé avec des types de données qui ne correspondent pas au type de données du filtre sont ignorées.

FOR_EACH filter IN (a, b, c)
    FOR_EACH key IN (v1, v2, v3)
        IF key ENDS_WITH filter
            MATCH

StringNotEndsWith

L’opérateur StringNotEndsWith prend la valeur true si la valeur de clé ne se termine par aucune des valeurs de filtre spécifiées. Dans l’exemple suivant, il vérifie si la valeur de l’attribut key1 de la data section ne se termine jpg pas ou jpeg non.png

"advancedFilters": [{
    "operatorType": "StringNotEndsWith",
    "key": "data.key1",
    "values": [
        "jpg", 
        "jpeg", 
        "png"
    ]
}]

Si la clé est un tableau, toutes les valeurs du tableau sont vérifiées par rapport au tableau de valeurs de filtre. Voici le pseudo-code avec la clé : [v1, v2, v3] et le filtre : [a,b,c]. Toutes les valeurs de clé avec des types de données qui ne correspondent pas au type de données du filtre sont ignorées.

FOR_EACH filter IN (a, b, c)
    FOR_EACH key IN (v1, v2, v3)
        IF key ENDS_WITH filter
            FAIL_MATCH

StringIn

L’opérateur StringIn vérifie si la valeur de clécorrespond exactement à l’une des valeurs de filtre spécifiées. Dans l’exemple suivant, il vérifie si la valeur de l’attribut key1 dans la data section est contoso ou fabrikamfactory.

"advancedFilters": [{
    "operatorType": "StringIn",
    "key": "data.key1",
    "values": [
        "contoso", 
        "fabrikam", 
        "factory"
    ]
}]

Si la clé est un tableau, toutes les valeurs du tableau sont vérifiées par rapport au tableau de valeurs de filtre. Voici le pseudo-code avec la clé : [v1, v2, v3] et le filtre : [a,b,c]. Toutes les valeurs de clé avec des types de données qui ne correspondent pas au type de données du filtre sont ignorées.

FOR_EACH filter IN (a, b, c)
    FOR_EACH key IN (v1, v2, v3)
        IF filter == key
            MATCH

StringNotIn

L’opérateur StringNotIn vérifie si la valeur de cléne correspond à aucune des valeurs de filtre spécifiées. Dans l’exemple suivant, il vérifie si la valeur de l’attribut key1 dans la data section n’est pas aws et bridge.

"advancedFilters": [{
    "operatorType": "StringNotIn",
    "key": "data.key1",
    "values": [
        "aws", 
        "bridge"
    ]
}]

Si la clé est un tableau, toutes les valeurs du tableau sont vérifiées par rapport au tableau de valeurs de filtre. Voici le pseudo-code avec la clé : [v1, v2, v3] et le filtre : [a,b,c]. Toutes les valeurs de clé avec des types de données qui ne correspondent pas au type de données du filtre sont ignorées.

FOR_EACH filter IN (a, b, c)
    FOR_EACH key IN (v1, v2, v3)
        IF filter == key
            FAIL_MATCH

Toutes les comparaisons de chaînes ne respectent pas la casse.

Note

Si le JSON d’événement ne contient pas la clé de filtre avancée, le filtre est évalué comme non correspondant aux opérateurs suivants : NumberGreaterThan, NumberGreaterThanOrEquals, NumberLessThan, NumberLessThanOrEquals, NumberIn, BoolEquals, StringContains, StringBeginsWith, StringNotBeginsWith, StringNotBeginsWith, StringEndsWith, StringNotEndsWith, StringIn.

Le filtre est évalué comme correspondant aux opérateurs suivants : NumberNotIn, StringNotIn.

IsNullOrUndefined

L’opérateur IsNullOrUndefined prend la valeur true si la valeur de la clé est NULL ou non définie.

{
    "operatorType": "IsNullOrUndefined",
    "key": "data.key1"
}

Dans l’exemple suivant, key1 est manquant, de sorte que l’opérateur prend la valeur true.

{ 
    "data": 
    { 
        "key2": 5 
    } 
}

Dans l’exemple suivant, key1 a la valeur Null. L’opérateur a donc la valeur true.

{
    "data": 
    { 
        "key1": null
    }
}

Si key1 a une autre valeur dans ces exemples, l’opérateur prend la valeur false.

IsNotNull

L’opérateur IsNotNull prend la valeur true si la valeur de la clé n’est pas NULL ou non définie.

{
    "operatorType": "IsNotNull",
    "key": "data.key1"
}

OR and AND

Si vous spécifiez un seul filtre avec plusieurs valeurs, une opération OR est effectuée. Par conséquent, la valeur du champ de clé doit être l’une de ces valeurs. Voici un exemple :

"advancedFilters": [
    {
        "operatorType": "StringContains",
        "key": "Subject",
        "values": [
            "/providers/microsoft.devtestlab/",
            "/providers/Microsoft.Compute/virtualMachines/"
        ]
    }
]

Si vous spécifiez plusieurs filtres différents, une opération AND est effectuée, de sorte que chaque condition de filtre doit être remplie. Voici un exemple :

"advancedFilters": [
    {
        "operatorType": "StringContains",
        "key": "Subject",
        "values": [
            "/providers/microsoft.devtestlab/"
        ]
    },
    {
        "operatorType": "StringContains",
        "key": "Subject",
        "values": [
            "/providers/Microsoft.Compute/virtualMachines/"
        ]
    }
]

CloudEvents

Pour les événements dans le schéma CloudEvents, utilisez les valeurs suivantes pour la clé : id, , source, typeou dataschemadonnées d’événement (par exemple data.key1).

Vous pouvez également utiliser des attributs de contexte d’extension dans CloudEvents 1.0. Dans l’exemple suivant, comexampleextension1 et comexampleothervalue sont des attributs de contexte d’extension.

{
    "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
    }
}

Voici un exemple d’utilisation d’un attribut de contexte d’extension dans un filtre.

"advancedFilters": [{
    "operatorType": "StringBeginsWith",
    "key": "comexampleothervalue",
    "values": [
        "5", 
        "1"
    ]
}]

Limites

Le filtrage avancé présente les limitations suivantes :

  • 25 filtres avancés et 25 valeurs de filtre sur tous les filtres par abonnement Event Grid
  • 512 caractères par valeur de chaîne
  • Touches avec . un caractère (point) dans ces touches. Par exemple : http://schemas.microsoft.com/claims/authnclassreference ou john.doe@contoso.com. Actuellement, il n’existe aucune prise en charge des caractères d’échappement dans les clés.

La même clé peut être utilisée dans plusieurs filtres.

Étapes suivantes