All Products
Search
Document Center

EventBridge:Transformasi event

Last Updated:May 28, 2026

EventBridge mentransformasi event dari format standar CloudEvents 1.0 ke dalam struktur yang diharapkan oleh target event Anda. Konfigurasikan metode transformasi pada setiap aturan event untuk mengontrol data apa yang dikirimkan ke target: seluruh event, satu bidang yang diekstraksi, muatan statis, atau struktur kustom yang disusun dari nilai-nilai event.

Metode transformasi

EventBridge menyediakan empat metode transformasi, masing-masing memberikan tingkat kendali berbeda atas muatan event yang dikirimkan ke target.

MethodBehaviorWhen to use
Complete EventMengirimkan muatan CloudEvents lengkap tanpa perubahanTarget menerima CloudEvents secara native
Partial EventMengekstraksi satu nilai menggunakan ekspresi JSONPathTarget hanya membutuhkan satu bidang dari event
ConstantMengirimkan string tetap, mengabaikan konten eventEvent hanya berfungsi sebagai pemicu—target membutuhkan muatan statis
TemplateMengekstraksi beberapa nilai dengan JSONPath, lalu menyusunnya menjadi string atau struktur JSON kustomTarget memerlukan format muatan tertentu

Contoh berikut menggunakan event CloudEvents contoh:

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

Complete Event

Seluruh muatan CloudEvents dikirimkan ke target tanpa perubahan. Tidak diperlukan konfigurasi.

Output:

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

Partial Event

Satu ekspresi JSONPath mengekstraksi satu nilai dari event.

Configuration:

{
    "name": "$.data.name",
    "constant": "Mohon segera ditangani."
}

Output:

test1

Usage notes:

  • Hanya satu ekspresi JSONPath yang diizinkan per konfigurasi Partial Event.

  • Nilai tersebut dapat memiliki panjang hingga 10.240 karakter.

Constant

String tetap menggantikan muatan event. Event itu sendiri hanya berfungsi sebagai pemicu.

Configuration:

test1

Output:

test1

Usage notes:

  • Nilai tersebut dapat memiliki panjang hingga 10.240 karakter.

Template

Template adalah metode yang paling fleksibel dan terdiri dari dua bagian:

  1. Variable — Objek JSON yang memetakan nama variabel ke ekspresi JSONPath (atau nilai tetap). Setiap ekspresi JSONPath mengekstraksi nilai dari event.

  2. Template — String atau struktur JSON yang mereferensikan variabel dengan sintaksis ${variableName}.

Configuration:

Variable:

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

Template:

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

Output:

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

Usage notes:

  • Nilai variabel dapat berupa ekspresi JSONPath atau string tetap.

  • Struktur bersarang tidak didukung dalam definisi variabel.

  • Nilai variabel dapat memiliki panjang hingga 10.240 karakter.

  • Nilai template dapat memiliki panjang hingga 10.240 karakter.

Format output template

Template mendukung empat format output: string sederhana, JSON sederhana, JSON dengan variabel dan konstanta campuran, serta JSON bersarang. Contoh string sederhana, JSON sederhana, dan JSON dengan variabel dan konstanta menggunakan event contoh yang sama seperti di atas, tetapi dengan "state": "RUNNING" menggantikan "scope": 100 pada bidang data. Contoh JSON bersarang menggunakan event contoh yang berbeda.

Simple string

Variable:

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

Template:

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

Output:

"name test is in RUNNING"

Simple JSON

Variable:

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

Template:

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

Output:

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

JSON with variables and constants

Gabungkan nilai yang diekstraksi dengan konstanta, array, dan tipe data berbeda dalam satu template.

Variable:

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

Template:

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

Output:

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

Nested JSON

Untuk meneruskan objek atau array bersarang dari event, referensikan variabel tanpa tanda kutip agar EventBridge menyisipkan struktur JSON mentah.

Contoh berikut menggunakan event contoh yang berbeda:

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

Template (${Files} tidak memiliki tanda kutip karena mereferensikan array):

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

Output:

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

Gunakan "${variableName}" (dengan tanda kutip) ketika nilai yang diekstraksi adalah string. Gunakan ${variableName} (tanpa tanda kutip) ketika nilainya berupa objek atau array JSON.

Fungsi escape

EventBridge menyediakan dua fungsi bawaan untuk meng-escape karakter khusus dalam variabel template: jsonEscape() dan htmlEscape().

jsonEscape()

Meng-escape karakter khusus dalam string JSON untuk mencegah karakter tersemat merusak struktur JSON.

Variable:

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

Template:

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

Output:

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

htmlEscape()

Meng-escape karakter khusus HTML agar ditampilkan sebagai teks biasa. Gunakan fungsi ini untuk mencegah injeksi skrip ketika data event disematkan dalam output HTML.

Variable:

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

Template:

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

Output:

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

Batasan

ItemLimit
Panjang nilai Partial EventHingga 10.240 karakter
Panjang nilai ConstantHingga 10.240 karakter
Panjang nilai variabel TemplateHingga 10.240 karakter
Panjang nilai TemplateHingga 10.240 karakter
Jumlah variabel Partial Event per aturan1
Struktur bersarang dalam definisi variabelTidak didukung

Permasalahan umum

IssueCauseSolution
Output JSON tidak validVariabel string direferensikan tanpa tanda kutip, atau variabel objek/array direferensikan dengan tanda kutipGunakan "${var}" untuk string dan ${var} untuk objek dan array
Nilai variabel kosong pada outputEkspresi JSONPath tidak sesuai dengan bidang apa pun dalam eventVerifikasi ekspresi JSONPath terhadap struktur event aktual
Karakter khusus merusak output JSONNilai variabel berisi karakter seperti tanda kutip ganda yang bertentangan dengan struktur JSONBungkus referensi variabel dengan jsonEscape(): ${jsonEscape(var)}
HTML menampilkan skrip yang diinjeksikanData event berisi HTML atau JavaScript yang tidak di-escape sebelum disematkanBungkus referensi variabel dengan htmlEscape(): ${htmlEscape(var)}