直接从 Lambda 调用 Kinesis Firehose 与 Kinesis Stream

Call Kinesis Firehose vs Kinesis Stream directly from Lambda

我需要将一些数据从 lambda 推送到 S3。进入 Lambda 的数据来自 Dynamodb 流。因为,对于推送到 S3 存储桶,使用 Firehose 被认为是最好的,因为它在推送到 S3 之前对数据进行批处理和缓冲,并提供重试策略。所以,我使用 Firehose 而不是直接推送到 S3。

但我观察到很多人将数据从 Lambda 推送到 Kinesis Stream,数据从 Kinesis Stream 推送到 Kinesis Firehose,而不是直接从 AWS Lambda 推送到 Firehose。这样做有什么理由吗?有什么好处吗?直接推送到 Kinesis firehose 有什么缺点?

如果Amazon Kinesis Data Firehose满足您的需求,那一定要用!与普通的 Kinesis Streams 相比,它会为您处理大部分工作。

您唯一会使用 Firehose 的情况是您有不同的目的地(例如,您想在亚马逊上处理数据EC2 实例)或者您想要更多地控制流和分片(例如,在特定分片上处理某些生产者以保持 per-shard 基础上的顺序)。