Мне нужно создать метод, позволяющий мне извлекать записи, хранящиеся в потоке в моей таблице 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
Операция: Запрашиваемый ресурс не найден: Осколок не существует
Большое спасибо!