开发者社区 > 云原生 > 中间件 > 正文

EventBridge投递sls,把整个event都投递过去了?

EventBridge投递sls,把整个event都投递过去了?不该是只投递event里面的Data吗?

展开
收起
真的很搞笑 2024-01-11 14:08:31 47 0
3 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    在EventBridge投递到SLS时,默认情况下会将整个事件(包括Headers和Data)作为JSON字符串投递到SLS。但是,你可以通过自定义转换器来修改这个行为,只投递Data部分或者根据需要提取特定的字段。

    如果你只想投递Data部分,可以使用Lambda函数作为转换器,并在Lambda函数中仅处理Data字段。这样,只有Data会被投递到SLS,而Headers和其他字段将被忽略。

    以下是一个示例的Lambda函数代码,用于从Event中提取Data字段并将其作为JSON字符串投递到SLS:

    import json
    
    def lambda_handler(event, context):
        data = event['data']  # 提取Data字段
        sls_data = json.dumps(data)  # 将Data转换为JSON字符串
        # 在这里可以添加将sls_data投递到SLS的逻辑
        return {
            'statusCode': 200,
            'body': 'Success'
        }
    

    通过这种方式,你可以自定义投递到SLS的数据内容,只包含所需的字段。

    2024-01-12 21:46:21
    赞同 展开评论 打赏
  • 阿里云的EventBridge服务在投递事件到日志服务SLS(Log Service)时,可以根据你的配置投递整个事件或者仅投递事件中的特定部分。事件通常包括一个标准结构,例如包含idsourcetimedetail-type以及detail等字段,其中detail字段通常承载了具体的业务数据。

    根据描述,如果你配置EventBridge将整个事件投递到SLS,那么确实是会将整个事件结构作为一条日志记录存储,这有助于保留事件的原始上下文信息。

    然而,如果只需要投递事件中的detail部分或者其他特定字段,你可以在配置EventBridge投递规则时定义过滤器或者映射规则,以指定投递哪些字段到SLS。这样就可以灵活地选择只将detail字段或者经过转换处理后的数据投递至SLS日志中。

    在实践中,具体投递什么内容取决于你在设置EventBridge投递目标时的配置细节。

    2024-01-12 09:39:47
    赞同 1 展开评论 打赏
  • 如果只投递部分事件,可以在配置Event提取$.data ,此回答整理自钉群“EventBridge用户交流群”

    2024-01-11 14:30:36
    赞同 展开评论 打赏

为企业提供高效、稳定、易扩展的中间件产品。

相关电子书

更多
PostgresChina2018_赖思超_PostgreSQL10_hash索引的WAL日志修改版final 立即下载
Kubernetes下日志实时采集、存储与计算实践 立即下载
日志数据采集与分析对接 立即下载