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
| 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 | "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: <script>alert('unsafe');</script></p>