【发布时间】:2019-04-30 14:31:06
【问题描述】:
我们有一个 AWS Kinesis 流,每秒摄取大约 15 条小型二进制消息。作为最后的数据恢复策略,我们希望将收到的所有消息转储到具有 1-2 周 TTL 的 S3 存储桶中。
我们可以使用 Lambda 函数将每条 Kinesis 消息转储到 S3 中的新文件中。但许多小型 PUT 的成本很高,尤其是因为这些数据不会经常被访问(如果是,则手动访问)。
或者,AWS Firehose 会为我们聚合消息并将它们作为单个 S3 对象推送到 S3。但据我了解 - 请纠正我 - Firehose 只是连接记录,所以这在消息二进制和逻辑分离的情况下不起作用(与日志文件中的行不同)。
我目前的想法是使用附加到 Firehose 的 Lambda 函数,因此 Firehose 会在 X 分钟内聚合记录,然后我们对其进行压缩/压缩,为每条记录创建一个文件,并将其作为单个存档发送到 S3。
这样合适吗?如果是这样,我们如何使用 Lambda 聚合记录?我们处理多对一,所以我不确定要传递回 Firehose 的结果/状态代码。 (AWS 生态系统对我来说很新,所以我想我可能错过了明显的解决方案。)
【问题讨论】:
标签: amazon-web-services amazon-s3 aws-lambda amazon-kinesis-firehose