Я пытаюсь прочитать записи, используя aws-kinesis
get_records
, но он возвращает пустую запись массива [].
Нигде не найдено четкого решения.
Я попытался с CLI
и Boto3
, настроив правильные необходимые учетные данные.
Я тестировал с 2 потоками:
Создан поток -> вставлена запись с использованием put_record -> и основана на записи чтения итератора с использованием get_records, работает потрясающе !! Но,
Когда я пытаюсь прочитать запись, используя get_records напрямую. Возвращает пустой массив [].
aws kinesis describe-stream --stream-name TestDataStream
```get shard iterator
aws kinesis get-shard-iterator --stream-name TestDataStream --shard-id shardId-000000000000 --shard-iterator-type LATEST
```get-records
aws kinesis get-records --shard-iterator xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
```RESULT - empty
{
"Records": [],
"NextShardIterator": "AAAAAAAAAAGpDl4WXIHlx3gGq52/EDxEG5CkQU57gf/tR9W+6Gm2KWCCDp8baoE+Basz0OENMdQFhRCQp/cwp0pVMA8CtGwd+WdfXeIucK6d83Vc+DzIAnw/DGqQ4nJSRcFJg3za5+eAHm9hH781vSEYa0ivcbgfhjskudkugd/phhnb9gVJQRyGfNmAVli+htmQkZwYgaTji05M4r9C9RKVn+c49E2rZ8D",
"MillisBehindLatest": 0
}
```PYTHON CODE
client = boto3.client('kinesis', aws_access_key_id='xxxxxxx',
aws_secret_access_key='xxxxxxx/',
region_name='us-east-1')
streamName = "TestDataStream"
response = client.describe_stream(StreamName=streamName)
print("::stream description::", response)
my_shard_id = response['StreamDescription']['Shards'][0]['ShardId']
shard_iterator = client.get_shard_iterator(StreamName=streamName,
ShardId=my_shard_id,
ShardIteratorType='TRIM_HORIZON')
my_shard_iterator = shard_iterator['ShardIterator']
print("::shard_iterator::", my_shard_iterator)
record_response = client.get_records(ShardIterator=my_shard_iterator,
Limit=30)
print(":: Records ::", record_response)