Tous les produits
Search
Centre de documentation

EventBridge:Event transformation

Dernière mise à jour :Aug 11, 2026

EventBridge convertit les événements du format standard CloudEvents 1.0 vers la structure attendue par votre cible d'événement. Configurez une méthode de transformation sur chaque règle d'événement pour contrôler les données transmises à la cible : l'événement complet, un champ unique extrait, une charge utile statique ou une structure personnalisée assemblée à partir des valeurs de l'événement.

Méthodes de transformation

EventBridge propose quatre méthodes de transformation. Chacune offre un niveau de contrôle différent sur la charge utile de l'événement livrée à la cible.

Méthode Comportement Cas d'utilisation
Événement complet Transmet la charge utile CloudEvents intégrale sans modification La cible accepte nativement le format CloudEvents
Événement partiel Extrait une valeur unique via une expression JSONPath La cible ne nécessite qu'un seul champ issu de l'événement
Constante Envoie une chaîne fixe, ignorant le contenu de l'événement L'événement sert uniquement de déclencheur ; la cible requiert une charge utile statique
Modèle Extrait plusieurs valeurs avec JSONPath, puis les assemble dans une chaîne ou une structure JSON personnalisée La cible exige un format de charge utile spécifique

Les exemples suivants s'appuient sur un événement CloudEvents type :

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

L'intégralité de la charge utile CloudEvents est transmise à la cible telle quelle. Aucune configuration n'est requise.

Sortie :

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

Une seule expression JSONPath permet d'extraire une valeur de l'événement.

Configuration :

$.data.name

Sortie :

test

Remarques d'utilisation :

  • Une seule expression JSONPath est autorisée par configuration d'événement partiel.

  • La longueur de la valeur peut atteindre 10 240 caractères.

Constante

Une chaîne fixe remplace la charge utile de l'événement. Ce dernier agit alors comme un simple déclencheur.

Configuration :

test1

Sortie :

test1

Remarques d'utilisation :

  • La longueur de la valeur peut atteindre 10 240 caractères.

Modèle

Le modèle constitue la méthode la plus flexible. Il fonctionne en deux étapes :

  1. Variable — Un objet JSON qui associe des noms de variables à des expressions JSONPath (ou à des valeurs fixes). Chaque expression JSONPath extrait une valeur de l'événement.

  2. Modèle — Une chaîne ou une structure JSON qui fait référence aux variables avec la syntaxe ${variableName}.

Configuration :

Variable :

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

Modèle :

The instance is broken, which name is ${name}, ${constant}

Sortie :

The instance is broken, which name is test, Please deal with it timely.

Remarques d'utilisation :

  • Les valeurs des variables peuvent être des expressions JSONPath ou des chaînes fixes.

  • Les structures imbriquées ne sont pas prises en charge dans les définitions de variables.

  • La longueur de la valeur de variable peut atteindre 10 240 caractères.

  • La longueur de la valeur du modèle peut atteindre 10 240 caractères.

Formats de sortie du modèle

Les modèles prennent en charge quatre formats de sortie : chaînes simples, JSON simple, JSON mélangeant variables et constantes, ainsi que JSON imbriqué. Les exemples de chaîne simple, de JSON simple et de JSON avec variables et constantes utilisent le même événement type présenté précédemment, mais avec "state": "RUNNING" à la place de "scope": 100 dans le champ data. L'exemple de JSON imbriqué repose sur un autre événement type.

Chaîne simple

Variable :

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

Modèle :

"name ${name} is in ${state}"

Sortie :

"name test is in RUNNING"

JSON simple

Variable :

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

Modèle :

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

Sortie :

{
    "name": "test",
    "state": "RUNNING"
}

JSON avec variables et constantes

Combinez des valeurs extraites avec des constantes codées en dur, des tableaux et différents types de données au sein d'un même modèle.

Variable :

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

Modèle :

{
    "name": "${name}",
    "state": [
        9,
        "${state}",
        true
    ],
    "Transformed": "Yes"
}

Sortie :

{
    "name": "test",
    "state": [
        9,
        "RUNNING",
        true
    ],
    "Transformed": "Yes"
}

JSON imbriqué

Pour transmettre des objets ou des tableaux imbriqués issus de l'événement, référencez la variable sans guillemets afin qu'EventBridge injecte la structure JSON brute.

L'exemple suivant utilise un autre événement type :

{
    "id": "45ef4dewdwe1-7c35-447a-bd93-fab****",
    "source": "acs.imm",
    "specversion": "1.0",
    "subject": "acs.imm:cn-hangzhou:123456789098****:215672",
    "time": "2020-11-19T21:04:41+08:00",
    "type": "imm:FileMeta:Index",
    "aliyunaccountid": "123456789098****",
    "aliyunpublishtime": "2020-11-19T21:04:42.179PRC",
    "aliyuneventbusname": "default",
    "aliyunregionid": "cn-hangzhou",
    "aliyunpublishaddr": "172.25.XX.XX",
    "data": {
        "ProjectName": "test_project",
        "DatasetName": "test_dataset",
        "RequestId": "D2A3AE88-D17C-4CCC-B149-6651115C****",
        "StartTime": "2021-07-22T14:03:15.489885+08:00",
        "EndTime": "2021-07-22T14:05:15.489885+08:00",
        "Message": "InvalidParameter",
        "Success": false,
        "Files": [
            {
                "URI": "oss://bucket/file",
                "CustomId": "defaultId",
                "CustomLabels": {
                    "Key1": "Val1",
                    "Key2": "Val2"
                },
                "Error": "InternalError"
            }
        ]
    }
}

Variable :

{
    "ProjectName": "$.data.ProjectName",
    "Files": "$.data.Files"
}

Modèle (${Files} n'a pas de guillemets car il référence un tableau) :

{
    "ProjectName": "${ProjectName}",
    "Files": ${Files}
}

Sortie :

{
    "ProjectName": "test_project",
    "Files": [
        {
            "URI": "oss://bucket/file",
            "CustomId": "defaultId",
            "CustomLabels": {
                "Key1": "Val1",
                "Key2": "Val2"
            },
            "Error": "InternalError"
        }
    ]
}
Remarque

Utilisez "${variableName}" (avec guillemets) lorsque la valeur extraite est une chaîne. Utilisez ${variableName} (sans guillemets) lorsqu'il s'agit d'un objet ou d'un tableau JSON.

Fonctions d'échappement

EventBridge fournit deux fonctions intégrées pour échapper les caractères spéciaux dans les variables de modèle : jsonEscape() et htmlEscape().

jsonEscape()

Échappe les caractères spéciaux dans les chaînes JSON pour éviter que des caractères incorporés ne corrompent la structure JSON.

Variable :

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

Modèle :

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

Sortie :

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

htmlEscape()

Échappe les caractères spéciaux HTML afin qu'ils s'affichent sous forme de texte brut. Utilisez cette fonction pour prévenir les injections de scripts lorsque des données d'événement sont intégrées dans une sortie HTML.

Variable :

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

Limites

Élément Limite
Longueur de la valeur de l'événement partiel Jusqu'à 10 240 caractères
Longueur de la valeur constante Jusqu'à 10 240 caractères
Longueur de la valeur de variable de modèle Jusqu'à 10 240 caractères
Longueur de la valeur du modèle Jusqu'à 10 240 caractères
Variables d'événement partiel par règle 1
Structures imbriquées dans les définitions de variables Non prises en charge

Problèmes courants

Problème Cause Solution
La sortie JSON est malformée Une variable de chaîne est référencée sans guillemets, ou une variable objet/tableau est référencée avec des guillemets Utilisez "${var}" pour les chaînes et ${var} pour les objets et les tableaux
La valeur de la variable est vide 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
Des caractères spéciaux corrompent la sortie JSON La valeur de la variable contient des caractères tels que des guillemets doubles qui entrent en conflit avec la structure JSON Entourez la référence de variable avec jsonEscape() : ${jsonEscape(var)}
Le rendu HTML exécute des scripts injectés Les données d'événement contiennent du HTML ou du JavaScript non échappé avant l'intégration Entourez la référence de variable avec htmlEscape() : ${htmlEscape(var)}