如何将csv/json等格式文件推送至Firehose数据流并指定目标文件类型
解答
- 你可以向Firehose推送符合csv、json格式的内容,但无法直接上传完整的csv/json文件作为单个对象直接落地到S3:Firehose的工作逻辑是持续接收多条小记录,攒到你配置的缓冲区大小(默认32MB)或者缓冲时间(默认300秒)阈值后,会把这段时间收到的所有记录拼接成一个文件写入S3。
- 要让存入S3的文件内容是合法的csv/json格式,你在调用
aws firehose put-record时,把单条记录按对应格式序列化之后填入Data字段即可:- 推送csv格式记录示例,注意每条记录末尾加换行符,避免多条记录拼接时串到同一行:
aws firehose put-record --delivery-stream-name mystream --record="{\"Data\":\"user1,25,Beijing\n\"}" - 推送json格式记录示例,如果需要输出合法的JSON Lines格式,每条记录末尾加换行即可;如果需要输出完整的单JSON数组格式,需要额外配置Lambda预处理函数,给所有记录加逗号分隔、首尾加数组括号:
aws firehose put-record --delivery-stream-name mystream --record="{\"Data\":\"{\"username\":\"user1\",\"age\":25,\"city\":\"Beijing\"}\n\"}"
- 推送csv格式记录示例,注意每条记录末尾加换行符,避免多条记录拼接时串到同一行:
- 要让最终S3的文件带有正确的后缀,直接修改Firehose的S3目标配置即可:找到对应数据流的S3目标设置,在「高级设置」中找到「S3对象后缀」配置项,填入你需要的后缀(如
.csv/.json),保存后新生成的文件就会自动带上对应后缀。
内容的提问来源于stack exchange,提问作者user13067694
相关产品推荐
相关产品推荐

