Boto3从最早的记录中读取Kinesis流

时间:2017-10-08 21:12:04

标签: boto3 amazon-kinesis

boto3文档提到

  

在请求中,您可以指定分片迭代器类型AT_TIMESTAMP以从任意时间点TRIM_HORIZON读取记录,以使ShardIterator指向系统中分片中最后一条未修剪的记录(分片中最旧的数据记录) )或LATEST,以便您始终读取分片中的最新数据。

这是

my_shard_id = 'shardId-000000000000'

shard_iterator = kinesis_client.get_shard_iterator(StreamName=my_stream_name,
                                                      ShardId=my_shard_id,
                                                      ShardIteratorType='TRIM_HORIZON')

设置ShardIteratorType =' TRIM_HORIZON'应该从最旧的项目开始给我一个发电机,这是我整个用例的基础,即能够启动一个新的消费者并让它处理过去24小时内的所有事件。

然而,这对我来说不起作用,我得到空记录

{u'Records': [], 'ResponseMetadata': {'RetryAttempts': 0, 'HTTPStatusCode': 200, 'RequestId': 'e705d8f2-dd62-f0d5-b551-4dd5ace4499e', 'HTTPHeaders': {'x-amzn-requestid': 'e705d8f2-dd62-f0d5-b551-4dd5ace4499e', 'content-length': '284', 'x-amz-id-2': '5bI4T8k4DIpvCsBRUtMw1WFgWqa4tT5X8bUj9mg1NGUFMBZe36iqibCRjDHathIe4j6GbmI6v8A+9d1TiBtbGg7/Sn4GduQPDQ0HVpcP/sM=', 'server': 'Apache-Coyote/1.1', 'date': 'Sun, 08 Oct 2017 21:04:39 GMT', 'content-type': 'application/x-amz-json-1.1'}}, u'NextShardIterator': u'AAAAAAAAAAH1FwRBEtaHytINAF8WzGDaKRaY5OEKCjFS+mKK5AQFqEf1SPJ8crMIMuBSNFOtfFn3KBT63r5f/bu40OLwhDztEbJgeYjciHVJERpFBDENiWOAZ760flMiZ0mXwCGfFW8cq/8hVC/qiwg1yF96+ujIIAz4vzvK7N944LBB2vH35+8noU/FBK9LCHLOxXxNAQXoOarcEPEU6jt112kOwEyT', u'MillisBehindLatest': 0}
{u'Records': [], 'ResponseMetadata': {'RetryAttempts': 0, 'HTTPStatusCode': 200, 'RequestId': 'c51c2d88-e979-8b07-9748-b8a598ff324c', 'HTTPHeaders': {'x-amzn-requestid': 'c51c2d88-e979-8b07-9748-b8a598ff324c', 'content-length': '284', 'x-amz-id-2': 'BE5rXnfii4ifLDlFuIHQxTBpUvhJ2MJKW92QjzDVFNUD4xRgIgcWhn89dA5EbdPo8HGb5MJDzZ+QfGqB9R4JykZmkvTgb3Fd9y9zaionRBk=', 'server': 'Apache-Coyote/1.1', 'date': 'Sun, 08 Oct 2017 21:04:44 GMT', 'content-type': 'application/x-amz-json-1.1'}}, u'NextShardIterator': u'AAAAAAAAAAEE0Qf0P4bXC7fg7yWj5SejVw9AIyN0iEnHWfj+nN8rIFSPwtDASvHIs+ZPcE2E7EU/gcvLqceWZ+GCptAnc6C3AzwsBK4HamaGCbV7K8l0fTnVMvErzboVGGqtAH4iHrimleGzUgJJ0TYgSDmPvdGDXCP+PRtwTFVGGZxK05jxTHf1qqOm74EfOMe65Bg+10MaNO4IO3NePm5lAy6AbQ/q', u'MillisBehindLatest': 0}

然而,当我创建一个新事件时,它会显示在这里。

我需要这个来显示流在过去24小时内发生的所有事件。

1 个答案:

答案 0 :(得分:0)

TRIM_HORIZON开始从最旧的项目开始读取,但它从先前使用检查点停止的位置开始。您可以在DynamoDB中看到检查点表。