Tous les produits
Search
Centre de documentation

ApsaraMQ for Kafka:Modèles d'événements

Dernière mise à jour :Aug 25, 2026

EventBridge utilise des modèles d'événements pour filtrer et acheminer les événements vers des cibles. Un modèle d'événement est un module fourni par EventBridge qui définit des critères de correspondance : seuls les événements dont la structure et les valeurs correspondent au modèle sont transmis à la cible. Les modèles d'événements doivent présenter la même structure que les événements correspondants.

Fonctionnement de la mise en correspondance

EventBridge évalue chaque événement entrant par rapport à votre modèle en appliquant les règles suivantes :

Règle

Description

Correspondance structurelle

L'événement doit contenir tous les champs définis dans le modèle, avec une imbrication identique.

Comparaison sensible à la casse

Les caractères sont comparés tels quels. EventBridge ne normalise ni ne modifie les chaînes lors de la mise en correspondance.

Valeurs JSON uniquement

Les valeurs des événements doivent être au format JSON valide : chaînes entre guillemets doubles, nombres sans guillemets ou les mots-clés true, false et null.

ET entre les clés, OU au sein des tableaux

Plusieurs clés dans un modèle utilisent la logique ET. Plusieurs valeurs dans le tableau d'une seule clé utilisent la logique OU.

Référence des opérateurs

Utilisez le tableau suivant pour identifier l'opérateur adapté à vos besoins de filtrage. La syntaxe détaillée et des exemples figurent dans chaque section.

Opérateur

Fonction

Exemple de syntaxe

Valeur exacte

Correspond à une valeur de champ spécifique

"source": ["acs.oss"]

Préfixe

Correspond au début d'une chaîne

"source": [{"prefix": "acs."}]

Suffixe

Correspond à la fin d'une chaîne

"subject": [{"suffix": ".jpg"}]

Contient

Correspond à une sous-chaîne incluse dans une valeur

"type": [{"contains": "Normal"}]

Tout sauf

Exclut des valeurs spécifiques

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

Numérique

Correspond à un nombre ou à une plage numérique

"c-count": [{"numeric": [">", 0, "<=", 5]}]

CIDR

Correspond à une plage d'adresses IPv4

"source-ip": [{"cidr": "10.0.0.0/24"}]

Existe

Vérifie si un champ existe

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

Null / chaîne vide

Correspond aux valeurs null ou ""

"responseElements": [null]

Tableau

Correspond à n'importe quelle valeur d'un tableau

"subject": ["val1", "val2"]

Combiné

Combine plusieurs opérateurs

Consultez la section Correspondance combinée

Correspondance de valeur exacte

Pour faire correspondre des événements dont un champ est égal à une valeur spécifique, placez cette valeur dans un tableau.

Modèle :

{
    "source": ["acs.oss"]
}

Ce modèle correspond aux événements dont le champ source est égal à "acs.oss". Les événements présentant une autre valeur pour source, telle que "acs.ecs" ou "acs.imm", ne correspondent pas.

Exemple — L'événement OSS suivant correspond car la valeur de source est "acs.oss" :

{
    "id": "7adc8c1a-645d-4476-bdef-5d6fb57f****",
    "source": "acs.oss",
    "specversion": "1.0",
    "type": "oss:ObjectCreated:PostObject",
    "datacontenttype": "application/json",
    "dataschema": "http://example.com/test.json",
    "subject": "acs:oss:cn-hangzhou:1234567:xls-papk/game_apk/123.jpg",
    "time": "2020-08-17T16:04:46.149Asia/Shanghai",
    "data": {
        "name": "test",
        "scope": 100
    }
}

Les événements dont la valeur de source diffère ne correspondent pas :

  • Un événement avec "source": "acs.ecs" (Elastic Compute Service)

  • Un événement avec "source": "acs.imm" (Intelligent Media Management)

Correspondance par préfixe

Pour faire correspondre des événements dont la valeur d'un champ commence par une chaîne spécifique, utilisez l'opérateur prefix.

Modèle :

{
    "source": [{"prefix": "acs."}]
}

Ce modèle correspond aux événements dont le champ source commence par "acs.", comme "acs.oss" et "acs.imm".

Correspondance par suffixe

Pour faire correspondre des événements dont la valeur d'un champ se termine par une chaîne spécifique, utilisez l'opérateur suffix.

Combinez les opérateurs prefix et suffix au sein du même tableau pour appliquer les deux conditions simultanément. Plusieurs entrées de suffixe utilisent la logique OU : l'événement correspond si l'un des suffixes correspond.

Modèle :

{
    "subject": [
        {"prefix": "acs:oss:cn-hangzhou:1234567:xls-papk/"},
        {"suffix": ".txt"},
        {"suffix": ".jpg"}
    ]
}

Ce modèle correspond aux événements dont le champ subject commence par le préfixe de chemin OSS spécifié ET se termine par .txt ou .jpg. Un événement dont le champ subject se termine par .png ne correspond pas.

Correspondance par contenu

Pour faire correspondre des événements dont la valeur d'un champ contient une sous-chaîne spécifique, utilisez l'opérateur contains.

Sous-chaîne unique :

{
    "type": [{"contains": "Normal"}]
}

Correspond à des événements tels que "type": "UserNormalEvent". Ne correspond pas à "type": "UserErrorEvent".

Plusieurs sous-chaînes (logique OU) :

{
    "type": [
        {"contains": "Normal"},
        {"contains": "Error"}
    ]
}

Correspond aux événements dont le champ type contient soit "Normal", soit "Error". Les valeurs "UserNormalEvent" et "UserErrorEvent" correspondent toutes deux. En revanche, "UserOtherEvent" ne correspond pas.

Correspondance « Tout sauf »

Pour exclure les événements correspondant à des valeurs spécifiques, utilisez l'opérateur anything-but. Les événements présentant toute autre valeur pour le champ spécifié sont acceptés.

Exclure une chaîne unique

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

Correspond aux événements dont le champ data.state prend n'importe quelle valeur sauf "initializing". Par exemple, "state": "running" correspond.

Exclure un nombre unique

{
    "data": {
        "x-limit": [{"anything-but": 123}]
    }
}

Correspond aux événements dont le champ data.x-limit prend n'importe quelle valeur sauf 123. Par exemple, "x-limit": 456 correspond.

Exclure plusieurs chaînes

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

Correspond aux événements dont le champ data.state prend n'importe quelle valeur sauf "stopped" ou "overloaded". Par exemple, "state": "terminated" correspond.

Exclure plusieurs nombres

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

Correspond aux événements dont le champ data.x-limit prend n'importe quelle valeur sauf 100, 200 ou 300. Par exemple, "x-limit": 456 correspond.

Exclure par préfixe

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

Correspond aux événements dont le champ data.state ne commence pas par "init". Par exemple, "state": "pending" correspond, mais "state": "initializing" ne correspond pas.

Exclure une source d'événement spécifique

{
    "source": [{"anything-but": ["acs.ecs"]}]
}

Correspond aux événements provenant de n'importe quelle source sauf "acs.ecs". Par exemple, les événements issus de "acs.oss" correspondent.

Exclure tous les événements de service Alibaba Cloud

{
    "source": [{"anything-but": {"prefix": "acs."}}]
}

Correspond uniquement aux événements provenant de sources personnalisées (non Alibaba Cloud). Tout événement dont le champ source commence par "acs." est exclu.

Correspondance numérique

Pour faire correspondre des événements en fonction de valeurs numériques ou de plages, utilisez l'opérateur numeric avec un ou plusieurs opérateurs de comparaison.

Opérateur de comparaison

Description

=

Égal à

>

Supérieur à

>=

Supérieur ou égal à

<

Inférieur à

<=

Inférieur ou égal à

Définissez une plage en plaçant deux opérateurs dans le même tableau.

Condition unique :

{
    "data": {
        "d-count": [{"numeric": ["<", 10]}]
    }
}

Correspond aux événements dont le champ data.d-count est inférieur à 10.

Condition de plage :

{
    "data": {
        "c-count": [{"numeric": [">", 0, "<=", 5]}]
    }
}

Correspond aux événements dont le champ data.c-count est supérieur à 0 et inférieur ou égal à 5.

Valeur numérique exacte :

{
    "data": {
        "x-limit": [{"numeric": ["=", 301.8]}]
    }
}

Correspond aux événements dont le champ data.x-limit est égal à 301.8. Un événement avec "x-limit": 300 ne correspond pas.

Plusieurs conditions numériques sur différents champs :

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

Les trois conditions doivent être vraies (logique ET entre les clés).

Important

La correspondance numérique fonctionne uniquement avec des nombres au format JSON compris entre -1,0e9 et +1,0e9, avec une précision allant jusqu'à 15 chiffres et 6 décimales.

Correspondance d'adresse IP

Pour faire correspondre des événements en fonction d'une adresse IPv4 ou d'un bloc CIDR, utilisez l'opérateur cidr sur un champ de l'objet data.

Modèle :

{
    "data": {
        "source-ip": [{"cidr": "10.0.0.0/24"}]
    }
}

Correspond aux événements dont le champ data.source-ip se situe dans la plage 10.0.0.0/24. Par exemple, "source-ip": "10.0.0.123" correspond, mais "source-ip": "192.168.0.123" ne correspond pas.

Remarque

Seules les adresses IPv4 sont prises en charge.

Correspondance combinée

Combinez plusieurs opérateurs dans un seul modèle pour un filtrage précis. Les conditions portant sur différents champs utilisent la logique ET : toutes les conditions doivent être vraies pour que l'événement corresponde.

Le modèle suivant combine les opérateurs de préfixe, « tout sauf », CIDR et numérique :

{
    "source": [{"prefix": "acs."}],
    "data": {
        "state": [{"anything-but": "initializing"}],
        "source-ip": [{"cidr": "10.0.0.0/24"}],
        "c-count": [{"numeric": [">", 0, "<=", 5]}],
        "d-count": [{"numeric": ["<", 10]}],
        "x-limit": [{"anything-but": [100, 200, 300]}]
    }
}

Cet événement ne correspond que si toutes les conditions suivantes sont remplies :

  • Le champ source commence par "acs."

  • Le champ data.state n'est pas égal à "initializing"

  • Le champ data.source-ip se situe dans la plage 10.0.0.0/24

  • Le champ data.c-count est supérieur à 0 et au plus égal à 5

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

  • Le champ data.x-limit n'est égal ni à 100, ni à 200, ni à 300

Exemple de correspondance :

Un événement avec source: "acs.oss", state: "pending", source-ip: "10.0.0.123", c-count: 5, d-count: 7 et x-limit: 301.8 satisfait toutes les conditions.

Exemple de non-correspondance :

Un événement avec state: "initializing" et source-ip: "192.168.0.123" ne satisfait pas les conditions « tout sauf » et CIDR.

Correspondance de tableau

Lorsqu'un champ de modèle liste plusieurs valeurs dans un tableau, l'événement correspond si la valeur de son champ est égale à l'une des valeurs de ce tableau. Si le champ de l'événement est lui-même un tableau, l'événement correspond lorsque les deux tableaux partagent au moins un élément commun.

Valeur unique dans l'événement, plusieurs valeurs dans le modèle :

{
    "subject": [
        "acs:oss:cn-hangzhou:1234567:xls-papk/game_apk/123.jpg",
        "acs:oss:cn-hangzhou:1112223:xls-papk/game_apk/123.jpg",
        "acs:oss:cn-hangzhou:4455667:xls-papk/game_apk/123.jpg"
    ]
}

Correspond si le champ subject de l'événement est égal à l'une des trois valeurs.

Valeur de type tableau dans l'événement :

Si l'événement contient "subject": ["acs:oss:cn-hangzhou:1234567:xls-papk/game_apk/123.jpg", "acs.ecs:cn-hangzhou:123456789098****:215672"], il correspond car le premier élément apparaît à la fois dans le tableau du modèle et dans le tableau de l'événement.

Correspondance null et chaîne vide

Pour faire correspondre des événements dont un champ est null ou une chaîne vide "", placez la valeur cible dans un tableau.

Correspondre à une chaîne vide :

{
    "data": {
        "eventVersion": [""]
    }
}

Correspond aux événements dont le champ data.eventVersion est égal à "". Ne correspond pas si la valeur est "1.0".

Correspondre à une valeur null :

{
    "data": {
        "responseElements": [null]
    }
}

Correspond aux événements dont le champ data.responseElements est null. Ne correspond pas si la valeur est "lss" ou toute autre valeur non null.

Remarque

Les valeurs null et les chaînes vides sont distinctes. Un modèle qui correspond à "" ne correspond pas à null, et inversement.

Correspondance d'existence de champ

Pour faire correspondre des événements en fonction de la présence ou non d'un champ dans l'objet data, utilisez l'opérateur exists.

Correspondre lorsqu'un champ n'existe pas :

{
    "data": {
        "state": [{"exists": false}]
    }
}

Correspond aux événements dont l'objet data ne contient pas de champ state. Si le champ state est présent avec n'importe quelle valeur (y compris null), l'événement ne correspond pas.

Correspondre lorsqu'un champ existe :

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

Correspond aux événements dont l'objet data contient un champ state, quelle que soit sa valeur.