Event Content Transformation
EG transforms CloudEvents-compliant events so that they can be processed by specified targets.
Supported transform types: pass-through, variables, constants.
Pass-through
Directly route CloudEvents-compliant events to the target. Example:
Before Transformation |
Transform Type |
After Transformation |
---|---|---|
{ "events":[{ "id": "4b26115b-73e-cf74a******", "specversion": "1.0", "source": "HC.OBS", "type": "object:put", "datacontenttype": "application/json", "subject": "xxx.jpg", "time": "2022-01-17T12:07:48.955Z", "data": { "name": "test01", "state": "enable" } }] } |
Pass-through |
{ "events":[{ "id": "4b26115b-73e-cf74******", "specversion": "1.0", "source": "HC.OBS", "type": "object:put", "datacontenttype": "application/json", "subject": "xxx.jpg", "time": "2022-01-17T12:07:48.955Z", "data": { "name": "test01", "state": "enable" } }] } |
Variables
Route variables in CloudEvents-compliant events to the target by using a template. Example:
Before Transformation |
Transform Type |
After Transformation |
---|---|---|
{ "events":[{ "id": "4b26115b-73e-cf74a******", "specversion": "1.0", "source": "HC.OBS", "type": "object:put", "datacontenttype": "application/json", "subject": "xxx.jpg", "time": "2022-01-17T12:07:48.955Z", "data": { "name": "test01", "state": "enable" } }] } |
Parameter {"name":"$.data.name"} Template My name is ${name}
NOTE:
If the event target is FunctionGraph (function computing), the template must be in JSON format. Example: {"name":"${name}"} |
My name is test01
NOTE:
If the event target is FunctionGraph (function computing), the transformation result is as follows: {"name": "test01"} |
Example of complex transformation from OBS to EG and then to FunctionGraph:
Before Transformation |
Transform Type |
After Transformation |
---|---|---|
{ "specversion": "1.0", "id": "******9db447aa3******", "source": "HC.OBS.DWR", "type": "OBS:DWR:ObjectCreated:PUT", "datacontenttype": "application/json", "dataschema": "", "subject": "test.txt", "time": "2023-08-01T11:41:51.712759419Z", "ttl": "4000", "data": { "eventVersion": "3.0", "eventSource": "OBS", "eventRegion": "cn-north-4", "eventTime": "2023-08-01T19:41:47.879Z", "eventName": "ObjectCreated:Put", "userIdentity": { "ID": "******fef0f08c******" }, "requestParameters": { "sourceIPAddress": "1**.1**.1**.1**" }, "responseElements": { "x-obs-request-id": "******47aa3cdafb******", "x-obs-id-2": "", "x-amz-request-id": "", "x-amz-id-2": "" }, "obs": { "Version": "1.0", "configurationId": "******4aaac1******", "bucket": { "name": "test", "ownerIdentity": { "ID": "******f1234567******" }, "bucket": "test", "arn": "" }, "object": { "key": "test.txt", "eTag": "******48ce552c3******", "size": 13, "versionId": "******BE7FFFF******", "sequencer": "1", "oldpsxpth": "" } } } } |
Parameters { "eventVersion": "$.data.eventVersion", "eventTime": "$.data.eventTime", "requestParameters": "$.data.requestParameters.sourceIPAddress", "configurationId": "$.data.obs.configurationId", "eTag": "$.data.obs.object.eTag", "sequencer": "$.data.obs.object.sequencer", "key": "$.data.obs.object.key", "size": "$.data.obs.object.size", "arn": "$.data.obs.bucket.arn", "name": "$.data.obs.bucket.name", "ownerIdentity": "$.data.obs.bucket.ownerIdentity.ID", "Region": "$.data.eventRegion", "eventName": "$.type", "userIdentity": "$.data.userIdentity.ID" } Template { "Records": [ { "eventVersion": "${eventVersion}", "eventTime": "${eventTime}", "requestParameters": { "sourceIPAddress": "${requestParameters}" }, "obs": { "configurationId": "${configurationId}", "object": { "eTag": "${eTag}", "sequencer": "${sequencer}", "key": "${key}", "size": "${size}" }, "bucket": { "arn": "${arn}", "name": "${name}", "ownerIdentity": { "PrincipalId": "${ownerIdentity}" } } }, "Region": "${Region}", "eventName": "${eventName}", "userIdentity": { "principalId": "${userIdentity}" } } ] }
NOTE:
The value in the template is the key of the corresponding parameter. |
{ "Records": [ { "eventVersion": "3.0", "eventTime": "2023-08-01T19:41:47.879Z", "requestParameters": { "sourceIPAddress": "1**.1**.1**.1**" }, "obs": { "configurationId": "******4aaac1******", "object": { "eTag": "******48ce552c3******", "sequencer": "1", "key": "test.txt", "size": "13" }, "bucket": { "arn": "", "name": "test", "ownerIdentity": { "PrincipalId": "******f1234567******" } } }, "Region": "cn-north-4", "eventName": "OBS:DWR:ObjectCreated:PUT", "userIdentity": { "principalId": "******fef0f08c******" } } ] }
NOTE:
|
Constants
Route constants in events to the target. Example:
Before Transformation |
Rule |
After Transformation |
---|---|---|
{ "events":[{ "id": "4b26115b-73cf74a******", "specversion": "1.0", "source": "HC.OBS", "type": "object:put", "datacontenttype": "application/json", "subject": "xxx.jpg", "time": "2022-01-17T12:07:48.955Z", "data": { "name": "test01", "state": "enable" } }] } |
Parameter test01
NOTE:
If the event target is FunctionGraph (function computing), the rule must be in JSON format. Example: {"name": "test01"} |
test01
NOTE:
If the event target is FunctionGraph (function computing), the transformation result is as follows: {"name": "test01"} |
More Examples
- After you set a DMS for RabbitMQ or DMS for RocketMQ event source for a subscription, messages will contain the context field in data after being transformed to CloudEvents-compliant events. If you set the transform type to Variables for the event target, the rule must also contain the context field. Example:
Before Transformation
Transform Type
After Transformation
{ "type": "ROCKETMQ:CloudTrace:RocketmqCall", "data": { "context": { "name": "test01", "state": "enable" } }, "source": "zhang_roc", "time": "2023-02-01T10:47:07Z", "datacontenttype": "application/json", "specversion": "1.0", "id": "2f885496-570c-4925-82fd-d1ad09******", "subject": "ROCKETMQ:cn-north-7:eec88b34-9470-483e-8961-edb168******/0de095e33e00d36e2fd2c0019a******:ROCKETMQ:zhang_roc" }
Parameter
{"name":"$.data.context.name"}
Template
My name is ${name}
My name is test01
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.See the reply and handling status in My Cloud VOC.
For any further questions, feel free to contact us through the chatbot.
Chatbot