我是AWS的新手,我正在将数据从DynamoDB归档到S3。这是我的解决方案,我已经完成了管道。
DynamoDB→DynamoDB TTL + DynamoDB流>λ→Kinesis消防水带->S3
但是我发现S3中的文件有不同数量的JSON对象。有些文件有7个JSON对象,有些有6或4个对象。我在lambda中做了ETL, S3只保存REMOVE
项,JSON一直是unmarshall
。
我认为它将是一个文件中的JSON对象,因为每个项目的TTL值不同,并且lambda将在项目被TTL删除时立即交付项目。
是因为Kinesis Firehose对物品进行批量处理吗?(它会在收集更多道具后等待一段时间,然后将它们保存到文件中)或者有其他原因?如果DynamoDB有一个新项目被TTL每5分钟删除一次,我可以估计它将保存多少文件吗?
提前谢谢你。
Kinesis Firehose根据缓冲区大小或间隔拆分数据。
假设您的缓冲区大小为1MB,间隔为1分钟。如果在1分钟的时间间隔内接收到的数据小于1MB, kineesis Firehose无论如何都会从接收到的数据中创建一个批处理文件,即使它小于1MB。
这可能发生在数据到达较少的情况下。您可以根据需要调整缓冲区大小和间隔。例:你可以增加间隔,以便在单个批处理中收集更多的物品。
可以选择缓冲大小为1 ~ 128 mb,缓冲间隔为60 ~ 900秒。首先满足的条件触发数据下发到Amazon S3。
来自AWS Kinesis消防软管文档:https://docs.aws.amazon.com/firehose/latest/dev/create-configure.html