背景情報
EventBridge は、以下のイベント変換方法をサポートしています。
完全なイベント
変換方法として [完全なイベント] を指定した場合、EventBridge はイベントを変換せず、CloudEvents 形式の完全なイベントをイベントターゲットにルーティングします。次の表は、[完全なイベント] 変換方法が使用されるサンプルイベントを示しています。
変換前のイベント | 変換方法 | 変換後のイベント |
{
"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
}
}
| 完全なイベント | {
"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
}
}
|
部分イベント
[部分イベント] を変換方法として指定した場合、EventBridge は JSONPath を使用して CloudEvents 形式のイベントからフィールドを抽出し、イベントの指定されたコンテンツをイベントターゲットにルーティングします。次の表は、[部分イベント] 変換方法が使用されるサンプルイベントを示しています。
変換前のイベント | 変換方法 | 変換後のイベント |
{
"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
}
}
| 部分イベント $.data.name
| test
|
定数
[定数] を変換方法として指定した場合、EventBridge は、イベントに含まれるコンテンツに関係なく、イベント内の定数をイベントターゲットにルーティングします。この場合、イベントはトリガーとして使用されます。次の表は、[定数] 変換方法が使用されるサンプルイベントを示しています。
変換前のイベント | 変換方法 | 変換後のイベント |
{
"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
}
}
| 定数 test1
説明 値: 値の長さは最大 10,240 文字です。 | 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://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
}
}
| テンプレート 変数 {
"name":"$.data.name",
"constant":"Please deal with it timely." // 適時に対処してください。
}
テンプレート The instance is broken, which name is ${name}, ${constant} // インスタンスが壊れています。名前は ${name}、${constant} です。
説明 テンプレート: 値の長さは最大 10,240 文字です。
| The instance is broken, which name is test, Please deal with it timely.
|
文字列または JSON 形式でカスタムテンプレートを指定し、テンプレートに基づいてイベントを変換し、イベントをイベントターゲットにルーティングできます。EventBridge は、以下のタイプのテンプレートをサポートしています。
表 1. 単純な文字列
変換前のイベント | 変換方法 | 変換後のイベント |
{
"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"
}
}
| テンプレート 変数 {
"name":"$.data.name",
"state":"$.data.state"
}
テンプレート "name ${name} is in ${state}" // name ${name} は ${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://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"
}
}
| テンプレート 変数 {
"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://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"
}
}
| テンプレート 変数 {
"name":"$.data.name",
"state":"$.data.state"
}
テンプレート {
"name":"${name}",
"state":[
9,
"${state}",
true
],
"Transformed":"Yes" // 変換済み:"はい"
}
| {
"name":"test",
"state":[
9,
"RUNNING",
true
],
"Transformed":"Yes"
}
|
表 4. ネストされた JSON
変換前のイベント | 変換方法 | 変換後のイベント |
{
"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"
}
]
}
}
| テンプレート 変数 {
"ProjectName":"$.data.ProjectName",
"Files":"$.data.Files"
}
テンプレート {
"ProjectName":"${ProjectName}",
"Files":${Files}
}
| {
"ProjectName":"test_project",
"Files": [
{
"URI": "oss://bucket/file",
"CustomId": "defaultId",
"CustomLabels": {
"Key1": "Val1",
"Key2": "Val2"
},
"Error": "InternalError"
}
]
}
|
特殊文字の処理をサポートする関数の名前は、jsonEscape と htmlEscape です。