EventBridge我通过sls接入的自定义事件源,原始日志是json格式的,到了事件总线这边是这样的,我在用的时候要咋转换一下才能把data里边eventId那一大坨也弄成json呢?
这个后续有计划支持一下吗?
对于EventBridge来说,它接收的事件数据格式是固定的,即AWS Event JSON。这种格式包含了一些固定的关键字,如"version"、"id"、"detail-type"等。如果你接收到的数据格式与你预期的不同,你可能需要进行一些数据转换。
你可以使用Python的json模块来进行数据转换。以下是一个简单的示例:
import json
def convert_to_aws_event_json(input_data):
# 假设input_data是你接收到的原始数据
output_data = {
"version": "0",
"id": input_data["eventId"],
"detail-type": "Custom Event Type",
"source": "my-service",
"account": "1234567890",
"time": input_data["timestamp"],
"region": "us-west-2",
"resources": [],
"detail": input_data
}
return json.dumps(output_data)
在这个示例中,我们首先定义了一个字典,这个字典包含了EventBridge期望的所有关键字。然后,我们将输入数据中的"eventId"和"timestamp"复制到输出数据中,并将输入数据作为"detail"字段的值。最后,我们使用json.dumps函数将输出数据转换为JSON字符串。
这个EB暂时没法支持。SLS source是将log中每一对key value均以字符串形式放置在data中,不会去判断value部分是字符串还是json.如果某个字段value部分是JSON,目前是无法解析到里面的内容的
EB的事件流近期新支持了transform组件,其底层是依赖FC来实现。通过transform组件来对数据进行加工可以实现你的相关需求,此回答整理自钉群“EventBridge用户交流群”
如果您正在使用 Log Service 作为事件源,并且原始日志是 JSON 格式的,则可以通过配置日志解析规则,将其转换为 JSON 对象。
具体来说,您可以在 Log Service 控制台上创建一条日志解析规则,并指定该规则应使用的 JSON 解析模板。该模板可以包含一些正则表达式,以提取 JSON 对象的关键信息,例如 eventId。
您也可以使用其他工具(如 jq 等)来将字符串转换为 JSON 对象,然后再将该对象写入 EventBridge。
具体步骤如下:
echo '{"id": "abc", "event": {"type": "test"}}' | jq -c .
将 JSON 对象写入 EventBridge,例如:
curl -X POST 'http://localhost:3000/events' -H 'Content-Type: application/json' -d '{"Data":{"key":"value"}}'
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。