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 » |
|
Oui |
Oui |
N'importe quoi, sauf | L'état est n'importe quelle valeur autre que « initialisation ». |
|
Oui |
Oui |
Tout sauf (commence par) | La région n'est pas située aux États-Unis. |
|
Oui |
Non |
Tout sauf (se termine par) | FileName ne se termine pas par une extension .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 ». |
|
Oui |
Non |
N'importe quoi, sauf en utilisant un joker | FileName n'est pas un chemin de fichier qui inclut |
|
Oui |
Non |
La région se trouve aux États-Unis. |
|
Oui |
Oui |
|
Commence par (ignorer le cas) | Le nom du service commence par les lettres « eventb », quel que soit le cas. |
|
Oui |
Oui |
LastName est vide. |
|
Oui |
Oui |
|
Égal à |
Le nom est « Alice » |
|
Oui |
Oui |
Le nom est « Alice » |
|
Oui |
Oui |
|
FileName se termine par une extension .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 ». |
|
Oui |
Oui |
ProductName existe |
|
Oui |
Oui |
|
ProductName n'existe pas |
|
Oui |
Oui |
|
La météo est tout sauf « Raining » |
|
Oui |
Oui |
|
UserID est null |
|
Oui |
Oui |
|
Le prix est de 100 |
|
Oui |
Oui |
|
Le prix est supérieur à 10 et inférieur ou égal à 20 |
|
Oui |
Oui |
|
Ou |
PaymentType est « Crédit » ou « Débit » |
|
Oui |
Oui |
Location est « New York », ou Day est « Monday ». |
|
Oui |
Oui |
|
Tout fichier portant l’extension .png, situé dans le dossier « dir » |
|
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 EVENTB
eventb
, 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
, CreateArchive
UpdateArchive
, 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.