事件总线EventBridge支持事件内容转换,即在事件被路由到事件目标前,事件总线EventBridge可以把CloudEvents标准事件转换为事件目标能接收的事件类型。本文介绍事件总线EventBridge提供的事件转换类型。

背景信息

事件总线EventBridge支持的事件内容转换类型如下:

完整事件

当转化类型为完整事件时, 事件总线EventBridge不对事件进行转换,将原生CloudEvents的完整结构路由到事件目标。下表介绍经过完整事件转换前后的事件示例。
说明 更多CloudEvents相关信息,请参见 CloudEvents 1.0
转换前的事件 转换类型 转换后的事件
{
    "id":"7adc8c1a-645d-4476-bdef-5d6fb57f****",
    "source":"acs.oss",
    "specversion":"1.0",
    "type":"oss:ObjectCreated:PostObject",
    "datacontenttype":"application/json",
    "dataschema":"http://taobao.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
    }
}
完整事件
{
    "id":"7adc8c1a-645d-4476-bdef-5d6fb57f****",
    "source":"acs.oss",
    "specversion":"1.0",
    "type":"oss:ObjectCreated:PostObject",
    "datacontenttype":"application/json",
    "dataschema":"http://taobao.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
    }
}

部分事件

当转换类型为部分事件时,事件总线EventBridge通过JSONPath从CloudEvents中提取事件中的参数,将指定的事件内容路由到事件目标。下表介绍经过部分事件转换前后的事件示例。

转换前的事件 转换类型 转换后的事件
{
    "id":"7adc8c1a-645d-4476-bdef-5d6fb57f****",
    "source":"acs.oss",
    "specversion":"1.0",
    "type":"oss:ObjectCreated:PostObject",
    "datacontenttype":"application/json",
    "dataschema":"http://taobao.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
    }
}
部分事件
$.data.name
说明
  • 部分事件只支持定义一个变量。
  • value最大为1024字符。

test

常量

当转换类型为常量时,事件只起到触发器的作用,不管事件内容是什么,事件总线EventBridge都把常量路由到事件目标。下表介绍经过常量转换前后的事件示例。

转换前的事件 转换类型 转换后的事件
{
    "id":"7adc8c1a-645d-4476-bdef-5d6fb57f****",
    "source":"acs.oss",
    "specversion":"1.0",
    "type":"oss:ObjectCreated:PostObject",
    "datacontenttype":"application/json",
    "dataschema":"http://taobao.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
    }
}
常量
test1
说明

value最大为1024字符。

test1

模板

当转换类型为模板时,通过自定义模板、定义模板里需要的变量,事件总线EventBridge通过JSONPath从CloudEvents提取事件中的参数,把这些值存放在变量中,然后按照模板定义的格式路由到事件目标。下表介绍经过模板转换前后的事件示例。

转换前的事件 转换类型 转换后的事件
{
    "id":"7adc8c1a-645d-4476-bdef-5d6fb57f****",
    "source":"acs.oss",
    "specversion":"1.0",
    "type":"oss:ObjectCreated:PostObject",
    "datacontenttype":"application/json",
    "dataschema":"http://taobao.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
    }
}
模板
  • 变量
    {
        "name":"$.data.name",
        "constant":"Please deal with it timely."
    }
    说明
    • JSONPath提取的值可以是变量,也可以是常量。
    • 定义变量不支持嵌套多层结构。
    • value最大为1024字符。

  • 模板
    The instance is broken,which name is ${name}, ${constant}
    说明

    template最大为10240字符。

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

您也可以创建String格式和JSON格式的模板,通过自定义模板将事件转换成示例输出,然后路由到事件目标。以下为事件总线EventBridge支持的模板类型:

表 1. 简单String
转换前的事件 转换类型 转换后的事件
{
    "id":"7adc8c1a-645d-4476-bdef-5d6fb57f****",
    "source":"acs.oss",
    "specversion":"1.0",
    "type":"oss:ObjectCreated:PostObject",
    "datacontenttype":"application/json",
    "dataschema":"http://taobao.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"
    }
}
模板
  • 变量
    {
        "name":"$.data.name",
        "state":"$.data.state"
    }
  • 模板
    "name ${name} is in ${state}"
"name test is in RUNNING"
表 2. 简单JSON
转换前的事件 转换类型 转换后的事件
{
    "id":"7adc8c1a-645d-4476-bdef-5d6fb57f****",
    "source":"acs.oss",
    "specversion":"1.0",
    "type":"oss:ObjectCreated:PostObject",
    "datacontenttype":"application/json",
    "dataschema":"http://taobao.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"
    }
}
模板
  • 变量
    {
        "name":"$.data.name",
        "state":"$.data.state"
    }
  • 模板
    {
        "name":"${name}",
        "state":"${state}"
    }
{
    "name":"test",
    "state":"RUNNING"
}
表 3. 混合变量和常量的JSON
转换前的事件 转换类型 转换后的事件
{
    "id":"7adc8c1a-645d-4476-bdef-5d6fb57f****",
    "source":"acs.oss",
    "specversion":"1.0",
    "type":"oss:ObjectCreated:PostObject",
    "datacontenttype":"application/json",
    "dataschema":"http://taobao.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"
    }
}
模板
  • 变量
    {
        "name":"$.data.name",
        "state":"$.data.state"
    }
  • 模板
    {
        "name":"${name}",
        "state":[
            9,
            "${state}",
            true
        ],
        "Transformed":"Yes"
    }
{
    "name":"test",
    "state":[
        9,
        "RUNNING",
        true
    ],
    "Transformed":"Yes"
}