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

能否自定义AWS Kinesis Firehose的错误输出类型与格式?

结论

AWS Kinesis Firehose 默认的 ProcessingFailed 状态对应的错误输出格式、存储路径是系统固定的,无法直接自定义修改。你要求的自定义错误格式、自定义存储路径需求可以通过以下方案实现:

可行实现方案

  • 动态分区方案(你提到的方案,可直接落地)

    校验失败的记录不要返回 ProcessingFailed 状态,统一返回 Ok 状态,同时将记录内容替换为你自定义的错误JSON结构,给记录附加动态分区键,分区值设置为你需要的路径 errors/{timestamp}/custom-error。
    开启Firehose的动态分区功能,配置S3目标前缀引用你设置的分区键,即可将错误记录直接写入目标路径,内容完全为你自定义的格式。
    注意需为Firehose配置动态分区所需的IAM权限,同时根据流量调整动态分区的吞吐上限。

  • 多S3目标路由方案

    为你的Firehose流配置两个独立的S3输出目标:

    1. 第一目标为合法数据的存储路径,用于写入校验通过的正常数据
    2. 第二目标为错误数据的存储路径,直接配置前缀为 {stream_id}/errors/
      在Lambda转换逻辑中,为每条记录附加元数据标记:合法数据标记 record_type=valid,错误数据标记 record_type=error,同时将错误记录内容替换为自定义的错误结构。通过Firehose的基于记录元数据的路由规则,将不同标记的记录分别路由到对应的S3目标即可。
      该方案的优势是两个目标可以独立配置生命周期规则、加密策略、访问权限,灵活性更高。
  • Lambda直写S3方案

    在校验逻辑识别到错误记录时,直接在Lambda代码中调用S3 PutObject 接口,将自定义格式的错误内容写入你指定的{stream_id}/errors/{timestamp}/custom-error目录,随后向Firehose返回时将该类记录标记为 Dropped 状态即可,Firehose不会再对这类记录做后续处理。
    注意需要为Lambda角色配置对应S3存储桶的写入权限,同时在代码中添加S3写入的重试逻辑,避免错误记录丢失。

注意事项

如果你选择前两种返回Ok状态的方案,Firehose的内置重试机制不会对这类记录生效,如需对错误记录做重试处理,需要自行在Lambda逻辑中实现,或将重试标记写入错误内容后续批量处理。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 05:27:02