DynamoDB Streams如何指定消费者开始读取数据的起始时间戳?
DynamoDB Streams 指定时间戳消费的实现方案
可以通过官方原生能力实现从指定时间节点开始读取DynamoDB Streams的数据,分两种常见消费场景对应不同操作方式:
微服务自主调用API消费场景
DynamoDB Streams 的 GetShardIterator 接口原生支持按时间戳定位起始位置,操作步骤如下:
- 调用
DescribeStream接口获取目标流的全量分片(Shard)信息 - 调用
GetShardIterator时,将ShardIteratorType参数设置为AT_TIMESTAMP,同时传入你需要的时间节点作为Timestamp参数值,返回的分片迭代器会从早于等于该时间戳的第一条有效记录开始返回数据 - 注意传入的时间戳精度为毫秒,需使用UTC时间格式
Lambda 作为消费者的场景
Lambda 对接DynamoDB Streams的事件源映射原生支持指定时间戳作为起始消费位置:
- 首次创建事件源映射时,直接将
StartingPosition配置为AT_TIMESTAMP,同时填入对应的时间戳即可,Lambda会自动从该时间点开始拉取流数据 - 若需要重置已有运行中消费链路的消费位置到指定时间戳,可以删除原有事件源映射后重新创建,按上述规则配置起始位置即可
重要提示:DynamoDB Streams的记录默认保留24小时,最长可配置为7天,你指定的时间戳不能早于当前流保留期限内的最早记录,否则系统会自动调整为从流的最早可用记录(即
TRIM_HORIZON对应位置)开始消费。
内容的提问来源于stack exchange,提问作者click
相关产品推荐
相关产品推荐

