Tüm Ürünler
Search
Belge Merkezi

EventBridge:Event transformation

Son Güncelleme:Oct 07, 2026

EventBridge, olayları standart CloudEvents 1.0 biçiminden olay hedefinizin beklediği yapıya dönüştürür. Hedefe ulaşan verileri kontrol etmek için her olay kuralında bir dönüşüm yöntemi yapılandırın: tam olay, tek bir çıkarılan alan, statik bir yük veya olay değerlerinden oluşturulan özel bir yapı.

Dönüşüm yöntemleri

EventBridge dört dönüşüm yöntemi sunar. Her biri, hedefe teslim edilen olay yükü üzerinde farklı bir kontrol düzeyi sağlar.

Yöntem Davranış Ne zaman kullanılır
Tam Olay CloudEvents yükünü değiştirmeden olduğu gibi iletir Hedef CloudEvents'i yerel olarak kabul eder
Kısmi Olay JSONPath ifadesiyle tek bir değeri çıkarır Hedefin olaydan yalnızca bir alana ihtiyacı vardır
Sabit Olay içeriğini yok sayarak sabit bir dize iletir Olay yalnızca bir tetikleyicidir; hedefin statik bir yüke ihtiyacı vardır
Şablon JSONPath ile birden çok değeri çıkarır ve bunları özel bir dize veya JSON yapısında birleştirir Hedefin belirli bir yük biçimine ihtiyacı vardır

Aşağıdaki örneklerde bir örnek CloudEvents olayı kullanılmaktadır:

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

Tam Olay

CloudEvents yükünün tamamı değiştirilmeden hedefe iletilir. Yapılandırma gerekmez.

Çıktı:

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

Kısmi Olay

Tek bir JSONPath ifadesi, olaydan bir değeri çıkarır.

Yapılandırma:

$.data.name

Çıktı:

test

Kullanım notları:

  • Kısmi Olay yapılandırması başına yalnızca bir JSONPath ifadesine izin verilir.

  • Değer en fazla 10.240 karakter uzunluğunda olabilir.

Sabit

Olay yükünün yerine sabit bir dize kullanılır. Olayın kendisi yalnızca bir tetikleyici olarak işlev görür.

Yapılandırma:

test1

Çıktı:

test1

Kullanım notları:

  • Değer en fazla 10.240 karakter uzunluğunda olabilir.

Şablon

Şablon en esnek yöntemdir. İki aşamada çalışır:

  1. Değişken -- Değişken adlarını JSONPath ifadelerine (veya sabit değerlere) eşleyen bir JSON nesnesi. Her JSONPath ifadesi olaydan bir değeri çıkarır.

  2. Şablon -- Değişkenlere ${variableName} sözdizimiyle başvuran bir dize veya JSON yapısı.

Yapılandırma:

Değişken:

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

Şablon:

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

Çıktı:

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

Kullanım notları:

  • Değişken değerleri JSONPath ifadeleri veya sabit dizeler olabilir.

  • Değişken tanımlarında iç içe geçmiş yapılar desteklenmez.

  • Değişken değeri en fazla 10.240 karakter uzunluğunda olabilir.

  • Şablon değeri en fazla 10.240 karakter uzunluğunda olabilir.

Şablon çıktı biçimleri

Şablonlar dört çıktı biçimini destekler: basit dizeler, basit JSON, karışık değişkenler ve sabitler içeren JSON ve iç içe geçmiş JSON. Basit dize, basit JSON ve değişkenler ile sabitler içeren JSON örnekleri yukarıda gösterilen aynı örnek olayı kullanır; ancak "state": "RUNNING" değeri data alanında "scope": 100 yerine kullanılır. İç içe geçmiş JSON örneği farklı bir örnek olay kullanır.

Basit dize

Değişken:

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

Şablon:

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

Çıktı:

"name test is in RUNNING"

Basit JSON

Değişken:

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

Şablon:

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

Çıktı:

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

Değişkenler ve sabitler içeren JSON

Tek bir şablonda çıkarılan değerleri sabit kodlanmış sabitlerle, dizilerle ve farklı veri türleriyle birleştirin.

Değişken:

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

Şablon:

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

Çıktı:

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

İç içe geçmiş JSON

Olaydan iç içe geçmiş nesneleri veya dizileri geçirmek için, EventBridge'in ham JSON yapısını eklemesi amacıyla değişkene tırnak işareti olmadan başvurun.

Aşağıdaki örnek farklı bir örnek olay kullanmaktadır:

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

Değişken:

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

Şablon (${Files} bir diziye başvurduğu için tırnak işareti içermez):

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

Çıktı:

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

Çıkarılan değer bir dize olduğunda "${variableName}" (tırnak işaretleriyle) kullanın. Bir JSON nesnesi veya dizi olduğunda ${variableName} (tırnak işareti olmadan) kullanın.

Kaçış işlevleri

EventBridge, şablon değişkenlerindeki özel karakterleri kaçırmak için iki yerleşik işlev sağlar: jsonEscape() ve htmlEscape().

jsonEscape()

Gömülü karakterlerin JSON yapısını bozmasını önlemek için JSON dizelerindeki özel karakterleri kaçırır.

Değişken:

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

Şablon:

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

Çıktı:

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

htmlEscape()

HTML özel karakterlerini düz metin olarak görüntülenecek şekilde kaçırır. Olay verileri HTML çıktısına gömülürken komut enjeksiyonunu önlemek için bu işlevi kullanın.

Değişken:

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

Şablon:

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

Çıktı:

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

Sınırlamalar

Öğe Sınır
Kısmi Olay değeri uzunluğu En fazla 10.240 karakter
Sabit değer uzunluğu En fazla 10.240 karakter
Şablon değişkeni değeri uzunluğu En fazla 10.240 karakter
Şablon değeri uzunluğu En fazla 10.240 karakter
Kural başına Kısmi Olay değişkeni 1
Değişken tanımlarında iç içe geçmiş yapılar Desteklenmez

Yaygın sorunlar

Sorun Neden Çözüm
JSON çıktısı hatalı biçimli Bir dize değişkenine tırnak işareti olmadan veya bir nesne/dizi değişkenine tırnak işaretiyle başvurulmuş Dizeler için "${var}" ve nesneler ile diziler için ${var} kullanın
Çıktıda değişken değeri boş JSONPath ifadesi olayda herhangi bir alanla eşleşmiyor JSONPath ifadesini gerçek olay yapısına göre doğrulayın
Özel karakterler JSON çıktısını bozar Değişken değeri, JSON yapısıyla çakışan çift tırnak gibi karakterler içeriyor Değişken başvurusunu jsonEscape() ile sarın: ${jsonEscape(var)}
HTML enjekte edilen komut dosyalarını işler Gömme işleminden önce kaçırılmayan HTML veya JavaScript içeren olay verileri Değişken başvurusunu htmlEscape() ile sarın: ${htmlEscape(var)}