Boto3 Чтение потока Kinesis из самой старой записи

В документах boto3 упоминается, что

В запросе вы можете указать тип итератора сегмента AT_TIMESTAMP для чтения записей с произвольного момента времени, TRIM_HORIZON, чтобы ShardIterator указывал на последнюю необрезанную запись в сегменте в системе (самая старая запись данных в сегменте) или ПОСЛЕДНИЕ, чтобы вы всегда читали самые последние данные в сегменте.

Это в

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 часа.


person Jonathan    schedule 08.10.2017    source источник


Ответы (1)


TRIM_HORIZON начинает чтение с самого старого элемента, однако начинается с позиции, в которой он ранее остановился, используя контрольные точки. Вы можете увидеть таблицу контрольных точек в DynamoDB.

person ArunDhaJ    schedule 10.10.2017