在阅读了大量的AWS文档后,我不同意S3不会向您收费的说法。
Amazon S3和Amazon Redshift使用相关的费用,包括存储和读/写请求,将单独计费。但是,您将不会因为Kinesis Firehose加载到Amazon S3和Amazon Redshift中的数据而支付数据传输费用。有关更多详细信息,请参见Amazon S3定价和Amazon Redshift定价。[我强调]
他们所说的不会收取费用是指,Kinesis Firehose除了每GB 0.035美元的转移费用外,不会对转移收取任何额外费用,但您需要为与您的bucket的交互付费。(进入bucket的数据始终免除实际的每GB转移费用)。
但最终分析,您似乎可以通过一些可调参数来控制对bucket的PUT
请求的数量。
Amazon Kinesis Firehose在将流数据传递到目的地之前,会将输入的流数据缓存到一定的大小或一定的时间段。在创建传递流时,您可以配置缓冲区大小和缓冲区间隔。缓冲区大小以MB为单位,范围从1MB到128MB。缓冲区间隔以秒为单位,范围从60秒到900秒。
https://aws.amazon.com/kinesis/firehose/faqs/#creating-delivery-streams
除非它将记录收集和聚合成大型文件,否则我不明白为什么需要缓冲区大小和缓冲区间隔...然而,如果没有启动服务并试用它,我只能进行推测。
我不相信你需要额外付费才能从Firehose向S3进行写操作。
您需要单独支付与Amazon S3和Amazon Redshift使用相关的费用,包括存储和读/写请求。但是,对于Amazon Kinesis Firehose加载到Amazon S3和Amazon Redshift的数据的数据传输费用,您不需要支付任何费用。有关详细信息,请参阅Amazon S3定价和Amazon Redshift定价。
对于由Kinesis执行的任何操作,成本为一个S3 PUT,而不是单个对象。 因此,Firehose的一次刷新就是一个PUT:
https://docs.aws.amazon.com/whitepapers/latest/building-data-lakes/data-ingestion-methods.html
https://forums.aws.amazon.com/thread.jspa?threadID=219275&tstart=0