You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

向同S3桶不同路径投递日志需两个Kinesis Firehose传输流吗?

答案

不需要创建两个独立的Firehose传输流,单传输流开启动态分区即可完全满足你的需求,没必要拆成两个流徒增成本和维护量。

Firehose早期版本只支持固定S3前缀,所以很多老资料会说一个流只能写一个固定路径,但动态分区功能上线多年,原生支持根据记录元数据/内容自动路由到同个S3桶下的不同前缀路径,完全匹配你的场景:

  • 你的Lambda在调用PutRecord/PutRecordBatch接口往Firehose写数据时,给每条记录附加分区键元数据即可:A类日志的分区键设为对应路径段logTypeA,B类设为logTypeB。这个分区键是接口入参的一部分,不会污染原始日志内容。
  • 在Firehose的S3投递配置里打开动态分区开关,把前缀规则配置为!{partitionKeyFromQuery:logType}/,Firehose会自动按照每条记录的分区键值拼出最终S3路径,A类日志全部落到logTypeA/目录,B类全部落到logTypeB/目录,不会混写。

CDK配置要点

你只需要定义一个Firehose传输流资源即可,给对应的S3目的地配置项开启动态分区参数,不需要建两个CfnDeliveryStream实例。如果有按日期分层的需求,还可以把动态分区键和Firehose内置的时间占位符组合使用,比如把前缀配成!{partitionKeyFromQuery:logType}/dt=!{timestamp:yyyy-MM-dd}/,就能同时实现按日志类型、按日期的目录分层。

方案对比

动态分区功能下,不同分区键值的数据缓冲、聚合是完全隔离的,只要你Lambda侧给日志打的类型标记没错,就不会出现日志错存路径的问题。和双流方案比:

  • 成本更低:Firehose按传输流个数收取基础费用,单流省了一份基础成本,数据处理、写入的计费逻辑和双流完全一致
  • 维护更简单:只需要维护一套传输流的权限、监控、缓冲配置,不用做两套重复资源

内容的提问来源于stack exchange,提问作者Naxi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 15:51:37