Tous les produits
Search
Centre de documentation

EventBridge:Event transformation in event streams

Dernière mise à jour :Aug 11, 2026

Les cibles d'événements attendent souvent une structure de charge utile différente du format standard CloudEvents 1.0 utilisé en interne par EventBridge. La transformation d'événements remodèle la charge utile avant qu'EventBridge ne l'achemine vers la cible via un flux d'événements. Vous pouvez ainsi adapter le format aux exigences de la cible sans écrire de code adaptateur.

Méthodes de transformation

Quatre méthodes déterminent le contenu reçu par la cible :

Méthode Comportement Cas d'utilisation
Événement complet Transmet la charge utile CloudEvents complète sans modification La cible accepte directement le format CloudEvents
Événement partiel Extrait des champs spécifiques à l'aide de JSONPath La cible n'a besoin que d'un sous-ensemble de l'événement
Constante Envoie une valeur fixe, en ignorant le contenu de l'événement L'événement sert uniquement de déclencheur ; sa charge utile est indifférente
Modèle Extrait des champs dans des variables, puis compose une sortie personnalisée La cible attend une structure de charge utile spécifique

Tous les exemples de cette rubrique utilisent l'événement suivant comme entrée :

{
    "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",
    "aliyuneventbusname": "demo-bus",
    "aliyunregionid": "Shanghai",
    "data": {
        "name": "test",
        "scope": 100
    }
}

Événement complet

La méthode « Événement complet » transfère l'intégralité de la charge utile CloudEvents à la cible sans aucune modification.

Sortie : Identique à l'entrée. Chaque champ de l'enveloppe CloudEvents et la charge utile data sont conservés.

Événement partiel

La méthode « Événement partiel » utilise une expression JSONPath pour extraire des champs spécifiques de la charge utile CloudEvents et ne livre que ces champs à la cible.

JSONPath : $.data

Sortie :

{
    "name": "test",
    "scope": 100
}

Seul le contenu correspondant est livré. Les champs de l'enveloppe CloudEvents (id, source, type, etc.) sont supprimés.

Constante

La méthode « Constante » envoie une valeur fixe à la cible, indépendamment du contenu de l'événement. L'événement sert purement de déclencheur.

Valeur constante :

{
    "name": "test"
}

Sortie :

{
    "name": "test"
}

Le contenu de l'événement est ignoré. La valeur constante est envoyée telle quelle.

Modèle

La transformation par modèle s'effectue en deux étapes :

  1. Extraction — Définissez des variables qui récupèrent des valeurs depuis l'événement avec JSONPath ou attribuez des chaînes fixes.

  2. Composition — Construisez une sortie personnalisée en référençant ces variables avec la syntaxe ${variable}.

Cette méthode offre un contrôle total sur la charge utile livrée.

Règles relatives aux variables

Contrainte Détail
Sources de valeur Expression JSONPath (par exemple, $.data.name) ou chaîne fixe
Imbrication Non prise en charge dans les définitions de variables

Sortie JSON avec sources mixtes

Combinez un champ extrait avec un message fixe :

Variables :

{
    "name": "$.data.name",
    "constant": "Please deal with it timely."
}

Modèle :

{
    "name": "${name}",
    "constant": "${constant}"
}

Sortie :

{
    "name": "test",
    "constant": "Please deal with it timely."
}

Sortie en texte brut

Construisez une chaîne de notification à partir des champs de l'événement :

Pour cet exemple, le champ data de l'événement d'entrée contient {"name": "test", "state": "RUNNING"}.

Variables :

{
    "name": "$.data.name",
    "state": "$.data.state"
}

Modèle :

The ${name} is in ${state} state.

Sortie :

The test is in RUNNING state.

Fonctions d'échappement

Les valeurs de variables contenant des caractères spéciaux peuvent corrompre le format de sortie. Utilisez les fonctions d'échappement intégrées pour les gérer en toute sécurité.

jsonEscape

Échappe les caractères spéciaux dans les chaînes JSON pour éviter un formatage incorrect. Utilisez cette fonction lorsque vous intégrez des variables dans des champs de chaîne JSON.

Variables :

{
    "var": "\"abc\""
}

Modèle :

{
    "text": "var is ${jsonEscape(var)}"
}

Sortie :

{
    "text": "var is \"abc\""
}

htmlEscape

Échappe les caractères spéciaux HTML en leurs équivalents entités afin qu'ils s'affichent sous forme de texte brut. Utilisez cette fonction pour prévenir l'injection de scripts lorsque la sortie contient du contenu généré par l'utilisateur.

Variables :

{
    "var": "<script>alert('unsafe');</script>"
}

Modèle :

<p>User Input: ${htmlEscape(var)}</p>

Sortie :

<p>User Input: &lt;script&gt;alert('unsafe');&lt;/script&gt;</p>

Problèmes courants

Problème Cause Solution
Variable non remplacée dans la sortie L'expression JSONPath ne correspond à aucun champ de l'événement Vérifiez l'expression JSONPath par rapport à la structure réelle de l'événement. Si le chemin ne correspond pas, la variable n'est pas créée et apparaît comme une chaîne littérale ${variable} dans la sortie.
Sortie JSON malformée La valeur de la variable contient des caractères spéciaux (guillemets, barres obliques inverses) Entourez la référence de variable avec jsonEscape(). Par exemple, ${jsonEscape(var)}.
Injection HTML dans la sortie La valeur de la variable contient des balises HTML Entourez la référence de variable avec htmlEscape(). Par exemple, ${htmlEscape(var)}.
Troncature de la sortie du modèle La valeur de la variable dépasse la longueur maximale Réduisez la valeur de la variable ou divisez la charge utile en plusieurs variables.

Voir aussi