Dynamodb Boto3 DynamodBstreams get_records - PullRequest
0 голосов
/ 04 сентября 2018

Мне нужно создать метод, позволяющий мне извлекать записи, хранящиеся в потоке в моей таблице DynamodB. Я обычно активирую потоки в своей таблице и, кроме того, делаю несколько обновлений для генерации этих записей потоков.

Теперь, углубляясь в то, как этого добиться, я проверял документацию AWS . Поэтому в boto3 есть полный функциональные возможности, которые в теории могут получить эти записи.

Я застрял, пытаясь развернуть метод get_records, потому что, следуя структуре, я могу передать ShardID. но тогда я не знаю, как создать этот осколок ID. Я попытался запустить describe_stream, чтобы получить осколок и использовать его в качестве shardID, необходимого в get_shard_iterator, чтобы наконец получить итератор осколка и вызвать get_records, но этот идентификатор Shard ID не подходит один. Вот мой код:

import boto3


client = boto3.resource('dynamodb')
clients = boto3.client('dynamodbstreams')
table = client.Table('songs')

  # How I suppose I can get a shard ID
 response = clients.describe_stream(
     StreamArn='arn:aws:dynamodb:region:account:table/songs/stream/2018-09-04T00:03:49.742',
     Limit=3, )
 print(response['StreamDescription']['Shards'])


# Now I pass the shard ID to get the shared iterator
response = clients.get_shard_iterator(
    ShardId='00000001536019433750-85f234d8',
    ShardIteratorType='TRIM_HORIZON',
    StreamArn='arn:aws:dynamodb:region:account:table/songs/stream/2018-09-04T00:03:49.742',
)
print(response)

Ошибка:

botocore.errorfactory.ResourceNotFoundException: произошла ошибка (ResourceNotFoundException) при вызове GetShardIterator Операция: Запрашиваемый ресурс не найден: Осколок не существует

Большое спасибо!

...