亚马逊Kinesis Firehose缓冲到S3

6
我正在尝试为部署在AWS上的流数据/分析应用程序定价,并考虑使用Kinesis Firehose将数据转储到S3。我的问题是,在为此定价S3成本时,我需要计算需要多少次PUT操作。因此,我知道Firehose会缓冲数据,然后将其刷新到S3,但不清楚它是否会写入一个包含所有累积记录的单个“文件”,还是每个记录都会单独写入。因此,假设我基于记录大小设置缓冲区大小/间隔,那么S3 PUT的数量是否仍等于Firehose执行的刷新次数或记录数量呢?
3个回答

4

在阅读了大量的AWS文档后,我不同意S3不会向您收费的说法。

Amazon S3和Amazon Redshift使用相关的费用,包括存储和读/写请求,将单独计费。但是,您将不会因为Kinesis Firehose加载到Amazon S3和Amazon Redshift中的数据而支付数据传输费用。有关更多详细信息,请参见Amazon S3定价和Amazon Redshift定价。[我强调]

https://aws.amazon.com/kinesis/firehose/pricing/

他们所说的不会收取费用是指,Kinesis Firehose除了每GB 0.035美元的转移费用外,不会对转移收取任何额外费用,但您需要为与您的bucket的交互付费。(进入bucket的数据始终免除实际的每GB转移费用)。

但最终分析,您似乎可以通过一些可调参数来控制对bucket的PUT请求的数量。

Q: 什么是缓冲区大小和缓冲区间隔?

Amazon Kinesis Firehose在将流数据传递到目的地之前,会将输入的流数据缓存到一定的大小或一定的时间段。在创建传递流时,您可以配置缓冲区大小和缓冲区间隔。缓冲区大小以MB为单位,范围从1MB到128MB。缓冲区间隔以秒为单位,范围从60秒到900秒。

https://aws.amazon.com/kinesis/firehose/faqs/#creating-delivery-streams

除非它将记录收集和聚合成大型文件,否则我不明白为什么需要缓冲区大小和缓冲区间隔...然而,如果没有启动服务并试用它,我只能进行推测。


好吧,Kinesis 做(或不做)某些事情与我预期的完全相反并不是第一次了,但我同意......如果它不聚合记录,那还有什么意义呢?不过我希望有人可以确定地确认一下...... - Brooks

1

我不相信你需要额外付费才能从Firehose向S3进行写操作。

您需要单独支付与Amazon S3和Amazon Redshift使用相关的费用,包括存储和读/写请求。但是,对于Amazon Kinesis Firehose加载到Amazon S3和Amazon Redshift的数据的数据传输费用,您不需要支付任何费用。有关详细信息,请参阅Amazon S3定价和Amazon Redshift定价。

https://aws.amazon.com/kinesis/firehose/pricing/


1
是的,我知道Firehose提供免费转移服务,但我认为这只是说Firehose不会收取数据传输费用,并没有涉及每个PUT的S3成本(我假设Firehose用于将数据写入S3的方式)。S3每1,000个PUT收费,我正在尝试弄清楚每个来自Firehose的flush是否等于1个PUT,或者无论它们是否被合并到来自Firehose的单独flush中,PUT的数量是否等于单个记录的数量。 - Brooks
我猜你可能会有不同的解释,但我的理解是从firehose到s3获取数据是没有成本的。只有将其摄入到firehose中的成本,以及在s3中的存储成本(然后如果你读/写s3中的数据,则需要支付任何put/get费用)。 - E.J. Brennan
我现在明白你的观点了...说实话,我两种方式都能理解。不知道哪个是正确的,但对于每月15亿个单独记录(这并不是很多),如果S3为每个单独记录收取PUT费用,那么仅PUT的费用就会达到每月约7000美元。这似乎过高了... - Brooks

0

1
你好,欢迎来到SO!请阅读tour如何撰写优秀答案?。例如,考虑引用这些文章中相关的文本。 - Tomer Shetah

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接