2017-06-15 90 views
0

我有一个在AWS中运行的数据迁移作业,它将数据发送到Kinesis Stream和一个Lambda函数,充当将数据写入DynamoDB的消费者(我将kinesis设置为触发器为lambda)。AWS Kinesis Stream返回“ProvisionedThroughputExceededException”时数据是否丢失?

我的问题是当该室壁运动流开始打:

写吞吐量突破(计数/请求) - 平均 - WriteProvisionedThroughputExceeded

,我看到上图上尖峰200个或300计数即使lambda消费者从不停止读取数据并将数据写入DDB表,但是一旦迁移过程完成(没有更多信息要发送给kinesis),我注意到有一些缺失的记录(lambda消费者从未失败),我的问题是:AWS Kinesis数据丢失Stream返回“ProvisionedThroughputExceededException”?这些数据将永远不会发送给kinesis消费者吗?

回答

3

你是对的,受限制的呼叫不被Kinesis处理;数据will be dropped by Kinesis

如果PutRecord请求不能因为参与请求碎片供应不足吞吐量的处理,PutRecord抛出ProvisionedThroughputExceededException。

为了避免这种情况,you should retry your PutRecord(s)呼叫使用(优选地)指数退避:

经过调节请求应该自动在短暂的延迟之后,使用指数退避策略被重试。