Opérateurs de comparaison à utiliser dans les modèles d'événements sur Amazon EventBridge - Amazon EventBridge

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Opérateurs de comparaison à utiliser dans les modèles d'événements sur Amazon EventBridge

Vous trouverez ci-dessous un résumé de tous les opérateurs de comparaison disponibles dans EventBridge.

Les opérateurs de comparaison ne fonctionnent que sur les nœuds terminaux, à l’exception de $or et anything-but.

Comparison (Comparaison) Exemple Syntaxe des règles Assistance par bus événementiel Support de tuyauterie

And

Le lieu est « New York » et le jour est « Monday »

"Location": [ "New York" ], "Day": ["Monday"]

Oui

Oui

N'importe quoi, sauf L'état est n'importe quelle valeur autre que « initialisation ».

"state": [ { "anything-but": "initializing" } ]

Oui

Oui

Tout sauf (commence par)

La région n'est pas située aux États-Unis.

"Region": [ { "anything-but": {"prefix": "us-" } } ]

Oui

Non

Tout sauf (se termine par)

FileName ne se termine pas par une extension .png.

"FileName": [ { "anything-but": { "suffix": ".png" } } ]

Oui

Non

Tout sauf (ignorer le cas)

L'état est une valeur autre que « initialisation » ou toute autre variation du boîtier, telle que « INITIALIZING ».

"state": : [{ "anything-but": { "equals-ignore-case": "initializing" }}]}

Oui

Non

N'importe quoi, sauf en utilisant un joker

FileName n'est pas un chemin de fichier qui inclut/lib/.

"FilePath" : [{ "anything-but": { "wildcard": "*/lib/*" }}]

Oui

Non

Commence par

La région se trouve aux États-Unis.

"Region": [ {"prefix": "us-" } ]

Oui

Oui

Commence par (ignorer le cas)

Le nom du service commence par les lettres « eventb », quel que soit le cas.

{"service" : [{ "prefix": { "equals-ignore-case": "eventb" }}]}

Oui

Oui

Vide

LastName est vide.

"LastName": [""]

Oui

Oui

Égal à

Le nom est « Alice »

"Name": [ "Alice" ]

Oui

Oui

Est égal à (ignorer la casse)

Le nom est « Alice »

"Name": [ { "equals-ignore-case": "alice" } ]

Oui

Oui

Se termine par

FileName se termine par une extension .png

"FileName": [ { "suffix": ".png" } ]

Oui

Oui

Se termine par (ignorer les majuscules)

Le nom du service se termine par les lettres « tbridge » ou par toute autre variante du boîtier, telle que « TBRIDGE ».

{"service" : [{ "suffix": { "equals-ignore-case": "tBridge" }}]}

Oui

Oui

Existe

ProductName existe

"ProductName": [ { "exists": true } ]

Oui

Oui

N’existe pas

ProductName n'existe pas

"ProductName": [ { "exists": false } ]

Oui

Oui

Pas

La météo est tout sauf « Raining »

"Weather": [ { "anything-but": [ "Raining" ] } ]

Oui

Oui

Null

UserID est null

"UserID": [ null ]

Oui

Oui

Numérique (égal à)

Le prix est de 100

"Price": [ { "numeric": [ "=", 100 ] } ]

Oui

Oui

Numérique (plage)

Le prix est supérieur à 10 et inférieur ou égal à 20

"Price": [ { "numeric": [ ">", 10, "<=", 20 ] } ]

Oui

Oui

Ou

PaymentType est « Crédit » ou « Débit »

"PaymentType": [ "Credit", "Debit"]

Oui

Oui

Ou (plusieurs champs)

Location est « New York », ou Day est « Monday ».

"$or": [ { "Location": [ "New York" ] }, { "Day": [ "Monday" ] } ]

Oui

Oui

Caractère générique

Tout fichier portant l’extension .png, situé dans le dossier « dir »

"FileName": [ { "wildcard": "dir/*.png" } ]

Oui

Non

Correspondance de préfixe

Vous pouvez mettre en correspondance un événement en fonction du préfixe d’une valeur dans la source de l’événement. Vous pouvez utiliser la correspondance de préfixes pour les valeurs de chaîne.

Par exemple, le modèle d’événement suivant correspond à tout événement où le champ "time" commence par "2017-10-02", tel que "time": "2017-10-02T18:43:48Z".

{ "time": [ { "prefix": "2017-10-02" } ] }

Correspondance des préfixes sans tenir compte des majuscules

Vous pouvez également faire correspondre une valeur de préfixe quel que soit le cadre des caractères par lesquels une valeur commence, equals-ignore-case en conjonction avec prefix.

Par exemple, le modèle d'événement suivant correspond à tout événement où le service champ commence par la chaîne de caractèresEventB, mais également EVENTBeventb, ou à toute autre majuscule de ces caractères.

{ "detail": {"service" : [{ "prefix": { "equals-ignore-case": "EventB" }}]} }

Correspondance de suffixes

Vous pouvez mettre en correspondance un événement en fonction du suffixe d’une valeur dans la source de l’événement. Vous pouvez utiliser la correspondance de suffixes pour les valeurs de chaîne.

Par exemple, le modèle d’événement suivant correspond à tout événement où le champ "FileName" se termine par l’extension de fichier .png.

{ "FileName": [ { "suffix": ".png" } ] }

Suffixe correspondant tout en ignorant les majuscules

Vous pouvez également faire correspondre la valeur d'un suffixe quel que soit le cadre des caractères par lesquels une valeur se termine, equals-ignore-case en utilisant conjointement avec suffix.

Par exemple, le modèle d'événement suivant correspond à tout événement où le FileName champ se termine par la chaîne de caractères.png, mais également à .PNG toute autre majuscule de ces caractères.

{ "detail": {"FileName" : [{ "suffix": { "equals-ignore-case": ".png" }}]} }

Correspondance de type « anything-but » (tout-sauf)

Tout sauf la correspondance correspond à tout sauf à ce qui est spécifié dans la règle.

Vous pouvez utiliser la correspondance anything-but avec des chaînes et des valeurs numériques, y compris des listes contenant uniquement des chaînes ou des nombres.

Le modèle d’événement suivant montre la correspondance anything-but avec des chaînes et des nombres.

{ "detail": { "state": [ { "anything-but": "initializing" } ] } } { "detail": { "x-limit": [ { "anything-but": 123 } ] } }

Le modèle d’événement suivant montre la correspondance anything-but avec une liste de chaînes.

{ "detail": { "state": [ { "anything-but": [ "stopped", "overloaded" ] } ] } }

Le modèle d’événement suivant montre la correspondance anything-but avec une liste de nombres.

{ "detail": { "x-limit": [ { "anything-but": [ 100, 200, 300 ] } ] } }

Tout sauf correspondre tout en ignorant le cas

Vous pouvez également l'utiliser equals-ignore-case en conjonction avecanything-but, pour faire correspondre les valeurs des chaînes indépendamment de la structure des caractères.

Le modèle d'événement suivant correspond aux state champs qui ne contiennent pas la chaîne « initialisation », INITIALIZING « », « Initialisation » ou toute autre mise en majuscules de ces caractères.

{ "detail": {"state" : [{ "anything-but": { "equals-ignore-case": "initializing" }}]} }

Vous pouvez également utiliser equals-ignore-case en conjonction avec anything-but pour faire correspondre une liste de valeurs :

{ "detail": {"state" : [{ "anything-but": { "equals-ignore-case": ["initializing", "stopped"] }}]} }

Tout sauf la correspondance sur les préfixes

Vous pouvez l'utiliser prefix conjointement avec anything-but pour faire correspondre des valeurs de chaîne qui ne commencent pas par la valeur spécifiée. Cela inclut des valeurs uniques ou une liste de valeurs.

Le modèle d'événement suivant montre tout sauf une correspondance qui correspond à tout événement dont le champ ne contient pas le préfixe"init". "state"

{ "detail": { "state": [ { "anything-but": { "prefix": "init" } } ] } }

Le modèle d'événement suivant montre tout sauf la correspondance utilisée avec une liste de valeurs de préfixes. Ce modèle d'événement correspond à tout événement qui ne possède ni le préfixe "init" ni "stop" le "state" champ.

{ "detail": { "state" : [{ "anything-but": { "prefix": ["init", "stop"] } } ] } } }

Tout sauf la correspondance sur les suffixes

Vous pouvez l'utiliser suffix conjointement avec anything-but pour faire correspondre des valeurs de chaîne qui ne se terminent pas par la valeur spécifiée. Cela inclut des valeurs uniques ou une liste de valeurs.

Le modèle d'événement suivant correspond à toutes les valeurs du FileName champ qui ne se terminent pas par.txt.

{ "detail": { "FileName": [ { "anything-but": { "suffix": ".txt" } } ] } }

Le modèle d'événement suivant montre tout sauf la correspondance utilisée avec une liste de valeurs de suffixe. Ce modèle d'événement correspond à toutes les valeurs du FileName champ qui ne se terminent pas par .txt ou.rtf.

{ "detail": { "FileName": [ { "anything-but": { "suffix": [".txt", ".rtf"] } } ] } }

Tout sauf la correspondance à l'aide de caractères génériques

Vous pouvez utiliser le caractère générique (*) dans les valeurs que vous spécifiez pour tout sauf pour la correspondance. Cela inclut des valeurs uniques ou une liste de valeurs.

Le modèle d'événement suivant correspond à toutes les valeurs du FileName champ qui ne contiennent pas/lib/.

{ "detail": { "FilePath" : [{ "anything-but": { "wildcard": "*/lib/*" }}] } }

Le modèle d'événement suivant montre tout sauf la correspondance utilisée avec une liste de valeurs, y compris des caractères génériques. Ce modèle d'événement correspond à toutes les valeurs du FileName champ qui ne contiennent aucun /lib/ ou/bin/.

{ "detail": { "FilePath" : [{ "anything-but": { "wildcard": ["*/lib/*", "*/bin/*"] }}] } }

Pour de plus amples informations, veuillez consulter Correspondance à l’aide de caractères génériques.

Correspondance numérique

La correspondance numérique fonctionne avec des valeurs qui sont des JSON nombres. Elle est limitée aux valeurs comprises entre -5.0e9 et +5.0e9 inclus, avec une précision à 15 chiffres (six chiffres à droite de la virgule décimale).

L’exemple suivant illustre la correspondance numérique pour un modèle d’événement qui ne correspond qu’aux événements dont tous les champs sont vrais.

{ "detail": { "c-count": [ { "numeric": [ ">", 0, "<=", 5 ] } ], "d-count": [ { "numeric": [ "<", 10 ] } ], "x-limit": [ { "numeric": [ "=", 3.018e2 ] } ] } }

Correspondance d'adresses IP

Vous pouvez utiliser la mise en correspondance des adresses IP pour IPv4 et IPv6 les adresses. Le modèle d’événement suivant illustre la correspondance d’adresses IP à des adresses IP qui commencent par 10.0.0 et se terminent par un nombre compris entre 0 et 255.

{ "detail": { "sourceIPAddress": [ { "cidr": "10.0.0.0/24" } ] } }

Correspondance exists

Exists matching fonctionne sur la présence ou l'absence d'un champ dans JSON l'événement.

La correspondance de type « exists » ne fonctionne que sur des nœuds terminaux. Elle ne fonctionne pas sur des nœuds intermédiaires.

Le modèle d’événement suivant correspond à n’importe quel événement comportant un champ detail.state.

{ "detail": { "state": [ { "exists": true } ] } }

Le modèle d’événement précédent correspond à l’événement suivant.

{ "version": "0", "id": "7bf73129-1428-4cd3-a780-95db273d1602", "detail-type": "EC2 Instance State-change Notification", "source": "aws.ec2", "account": "123456789012", "time": "2015-11-11T21:29:54Z", "region": "us-east-1", "resources": ["arn:aws:ec2:us-east-1:123456789012:instance/i-abcd1111"], "detail": { "instance-id": "i-abcd1111", "state": "pending" } }

Le modèle d'événement précédent NOT correspond à l'événement suivant car il ne comporte pas de detail.state champ.

{ "detail-type": [ "EC2 Instance State-change Notification" ], "resources": [ "arn:aws:ec2:us-east-1:123456789012:instance/i-02ebd4584a2ebd341" ], "detail": { "c-count" : { "c1" : 100 } } }

quals-ignore-caseCorrespondance E

La quals-ignore-case correspondance E fonctionne sur les valeurs de chaîne, quel que soit le cas.

Le modèle d’événement suivant correspond à n’importe quel événement comportant un champ detail-type qui correspond à la chaîne spécifiée, quelle que soit sa casse.

{ "detail-type": [ { "equals-ignore-case": "ec2 instance state-change notification" } ] }

Le modèle d’événement précédent correspond à l’événement suivant.

{ "detail-type": [ "EC2 Instance State-change Notification" ], "resources": [ "arn:aws:ec2:us-east-1:123456789012:instance/i-02ebd4584a2ebd341" ], "detail": { "c-count" : { "c1" : 100 } } }

Correspondance à l’aide de caractères génériques

Vous pouvez utiliser le caractère générique (*) pour mettre en correspondance des valeurs de chaîne dans les modèles d’événements.

Note

Actuellement, le caractère générique n’est pris en charge que dans les règles de bus d’événements.

Considérations relatives à l’utilisation de caractères génériques dans vos modèles d’événements :

  • Vous pouvez spécifier n’importe quel nombre de caractères génériques dans une valeur de chaîne donnée ; toutefois, les caractères génériques consécutifs ne sont pas pris en charge.

  • EventBridge prend en charge l'utilisation de la barre oblique inverse (\) pour spécifier les caractères littéraux * et \ dans les filtres génériques :

    • La chaîne \* représente le caractère littéral *

    • La chaîne \\ représente le caractère littéral \

    L’utilisation de la barre oblique inversée pour mettre en échappement d’autres caractères n’est pas prise en charge.

Complexité des caractères génériques et des modèles d’événements

La complexité d’une règle utilisant des caractères génériques est limitée. Si une règle est trop complexe, EventBridge renvoie un InvalidEventPatternException lorsque vous essayez de créer la règle. Si votre règle génère une telle erreur, envisagez de suivre les conseils ci-dessous pour réduire la complexité du modèle d’événement :

  • Réduisez le nombre de caractères génériques utilisés

    N’utilisez des caractères génériques que lorsque vous devez véritablement comparer plusieurs valeurs possibles. Prenons l’exemple de modèle d’événement suivant, où vous souhaitez comparer des bus d’événements dans la même région :

    { "EventBusArn": [ { "wildcard": "*:*:*:*:*:event-bus/*" } ] }

    Dans le cas ci-dessus, de nombreuses sections ARN seront directement basées sur la région dans laquelle résident les bus de votre événement. Ainsi, si vous utilisez la région us-east-1, voici exemple de modèle moins complexe qui correspond toujours aux valeurs souhaitées :

    { "EventBusArn": [ { "wildcard": "arn:aws:events:us-east-1:*:event-bus/*" } ] }
  • Réduisez les séquences de caractères qui se répètent, après un caractère générique

    Le fait que la même séquence de caractères apparaisse plusieurs fois après l’utilisation d’un caractère générique augmente la complexité du traitement du modèle d’événement. Recréez votre modèle d’événement afin de réduire au maximum les séquences répétées. Prenons l’exemple suivant, qui met en correspondance le nom de fichier doc.txt pour n’importe quel utilisateur :

    { "FileName": [ { "wildcard": "/Users/*/dir/dir/dir/dir/dir/doc.txt" } ] }

    Si vous saviez que le fichier doc.txt n’apparaîtrait que dans le chemin spécifié, vous pourriez réduire la séquence de caractères répétée comme suit :

    { "FileName": [ { "wildcard": "/Users/*/doc.txt" } ] }

Exemple complexe avec correspondance multiple

Vous pouvez combiner plusieurs critères de correspondance pour créer un modèle d'événement plus complexe. Par exemple, le modèle d’événement suivant combine anything-but et numeric.

{ "time": [ { "prefix": "2017-10-02" } ], "detail": { "state": [ { "anything-but": "initializing" } ], "c-count": [ { "numeric": [ ">", 0, "<=", 5 ] } ], "d-count": [ { "numeric": [ "<", 10 ] } ], "x-limit": [ { "anything-but": [ 100, 200, 300 ] } ] } }
Note

Lorsque vous créez des modèles d’événements, si vous incluez une clé plusieurs fois, la dernière référence sera celle utilisée pour évaluer les événements. Par exemple, pour le modèle suivant :

{ "detail": { "location": [ { "prefix": "us-" } ], "location": [ { "anything-but": "us-east" } ] } }

Seul { "anything-but": "us-east" } sera pris en compte lors de l’évaluation de location.

Exemple complexe avec correspondance $or

Vous pouvez également créer des modèles d’événements complexes qui vérifient si l’une des valeurs de champs correspond, dans plusieurs champs. Utilisez $or pour créer un modèle d’événement qui correspond si l’une des valeurs de plusieurs champs correspond.

Notez que vous pouvez inclure d’autres types de filtres, tels que la correspondance numérique et les tableaux, dans votre correspondance de modèles pour les champs individuels de votre construction $or.

Le modèle d’événement suivant correspond si l’une des conditions suivantes est remplie :

  • Le champ c-count est supérieur à 0 ou inférieur ou égal à 5.

  • Le champ d-count est inférieur à 10.

  • Le champ x-limit est égal à 3.018e2.

{ "detail": { "$or": [ { "c-count": [ { "numeric": [ ">", 0, "<=", 5 ] } ] }, { "d-count": [ { "numeric": [ "<", 10 ] } ] }, { "x-limit": [ { "numeric": [ "=", 3.018e2 ] } ] } ] } }
Note

APIsqui acceptent un modèle d'événement (tel quePutRule, CreateArchiveUpdateArchive, etTestEventPattern) déclencheront un InvalidEventPatternException si l'utilisation de $or aboutit à plus de 1 000 combinaisons de règles.

Pour déterminer le nombre de combinaisons de règles dans un modèle d’événement, multipliez le nombre total d’arguments de chaque tableau $or dans le modèle d’événement. Par exemple, le modèle ci-dessus contient un seul tableau $or avec trois arguments, de sorte que le nombre total de combinaisons de règles est également de trois. Si vous ajoutiez un autre tableau $or avec deux arguments, le nombre total de combinaisons de règles serait alors de six.