全部产品
Search
文档中心

EventBridge:Transformasi Event

更新时间:Jun 28, 2025

EventBridge mendukung transformasi konten event. Secara khusus, EventBridge dapat mentransformasi event dalam format CloudEvents standar menjadi jenis event yang dapat diterima oleh target sebelum diarahkan ke target tersebut. Topik ini menjelaskan metode transformasi event yang disediakan oleh EventBridge.

Informasi Latar Belakang

EventBridge mendukung metode transformasi event berikut:

Event Lengkap

Jika Anda memilih Event Lengkap sebagai metode transformasi, EventBridge tidak akan mengubah event dan akan mengarahkan seluruh event dalam format CloudEvents ke target. Tabel berikut menunjukkan contoh event yang menggunakan metode transformasi Event Lengkap.

Catatan

Untuk informasi lebih lanjut tentang CloudEvents, lihat CloudEvents 1.0.

Event sebelum transformasi

Metode transformasi

Event setelah transformasi

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

Event Lengkap

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

Event Parsial

Jika Anda memilih Event Parsial sebagai metode transformasi, EventBridge mengekstraksi bidang dari event dalam format CloudEvents menggunakan JSONPath dan mengarahkan konten tertentu dari event ke target. Tabel berikut menunjukkan contoh event yang menggunakan metode transformasi Event Parsial.

Event sebelum transformasi

Metode transformasi

Event setelah transformasi

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

Event Parsial

$.data.name
Catatan
  • Anda hanya dapat mendefinisikan satu variabel jika menggunakan metode transformasi Event Parsial.

  • nilai: Nilai tersebut dapat memiliki panjang hingga 10.240 karakter.

test

Konstanta

Jika Anda memilih Konstanta sebagai metode transformasi, EventBridge mengarahkan konstanta dalam event ke target, terlepas dari isi event tersebut. Dalam hal ini, event digunakan sebagai pemicu. Tabel berikut menunjukkan contoh event yang menggunakan metode transformasi Konstanta.

Event sebelum transformasi

Metode transformasi

Event setelah transformasi

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

Konstanta

test1
Catatan

nilai: Nilai tersebut dapat memiliki panjang hingga 10.240 karakter.

test1

Template

Jika Anda memilih Template sebagai metode transformasi, EventBridge mengekstraksi bidang dari event dalam format CloudEvents menggunakan JSONPath, menyimpan nilai-nilai tersebut dalam variabel, dan mengarahkan event dalam format yang didefinisikan dalam template ke target. Tabel berikut menunjukkan contoh event yang menggunakan metode transformasi Template.

Event sebelum transformasi

Metode transformasi

Event setelah transformasi

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

Template

  • Variabel

    {
        "name":"$.data.name",
        "constant":"Harap tangani tepat waktu."
    }
    Catatan
    • Nilai yang diekstraksi dengan menggunakan JSONPath dapat berupa parameter atau nilai tetap.

    • Struktur bersarang tidak didukung saat Anda mendefinisikan parameter.

    • nilai: Nilai tersebut dapat memiliki panjang hingga 10.240 karakter.

  • Template

    Instansinya rusak, namanya adalah ${name}, ${constant}
    Catatan

    template: Nilai tersebut dapat memiliki panjang hingga 10.240 karakter.

Instansinya rusak, namanya adalah test, Harap tangani tepat waktu.

Anda dapat menentukan template kustom dalam format string atau JSON, mentransformasi event berdasarkan template, dan mengarahkan event ke target. EventBridge mendukung jenis template berikut:

Tabel 1. String sederhana

Event sebelum transformasi

Metode transformasi

Event setelah transformasi

{
    "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",
        "state":"RUNNING"
    }
}

Template

  • Variabel

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

    "nama ${name} berada dalam status ${state}"
"nama test berada dalam status RUNNING"

Tabel 2. JSON sederhana

Event sebelum transformasi

Metode transformasi

Event setelah transformasi

{
    "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",
        "state":"RUNNING"
    }
}

Template

  • Variabel

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

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

Tabel 3. JSON yang mencakup variabel dan konstanta

Event sebelum transformasi

Metode transformasi

Event setelah transformasi

{
    "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",
        "state":"RUNNING"
    }
}

Template

  • Variabel

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

    {
        "name":"${name}",
        "state":[
            9,
            "${state}",
            true
        ],
        "Ditransformasi":"Ya"
    }
{
    "name":"test",
    "state":[
        9,
        "RUNNING",
        true
    ],
    "Ditransformasi":"Ya"
}

Tabel 4. JSON bersarang

Event sebelum transformasi

Metode transformasi

Event setelah transformasi

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

Template

  • Variabel

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

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

Nama fungsi yang mendukung pemrosesan karakter khusus adalah jsonEscape dan htmlEscape.

  • Fungsi jsonEscape digunakan untuk meloloskan karakter khusus dalam string JSON guna mencegah karakter khusus yang tertanam merusak format JSON.

    Kode sampel berikut memberikan contoh pada variabel yang mengandung tanda kutip ganda (""):

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

    Kode berikut menunjukkan cara menggunakan fungsi jsonEscape dalam template:

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

    Output lolos:

    {
      "text": "var is \"abc\""
    }
  • Fungsi htmlEscape digunakan untuk meloloskan karakter khusus dalam HTML. Setelah karakter khusus diloloskan, mereka di-output sebagai string biasa. Ini mencegah risiko keamanan yang disebabkan oleh injeksi skrip jahat.

    Kode sampel berikut memberikan contoh pada variabel yang mengandung konten HTML:

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

    Kode berikut menunjukkan cara menggunakan fungsi htmlEscape dalam template:

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

    Output lolos:

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