我正在尝试从Kinesis流中阅读。如果我使用ShardIteratorType AT_SEQUENCE_NUMBERLATEST,它可以正常工作。但是,如果我尝试使用AT_TIMESTAMP类型并设置TIMESTAMP,则boto3会抱怨:

  File "/usr/local/lib/python2.7/site-packages/botocore/validate.py", line 269, in serialize_to_request
    raise ParamValidationError(report=report.generate_report())
botocore.exceptions.ParamValidationError: Parameter validation failed:
Unknown parameter in input: "Timestamp", must be one of: StreamName, ShardId, ShardIteratorType, StartingSequenceNumber


以下是获取shard_id的代码。

import boto3
from datetime import datetime

client = boto3.client('kinesis')

shard_it = client.get_shard_iterator(
    StreamName='foo',
    ShardId='shardId-000000000000',
    ShardIteratorType='AT_TIMESTAMP',
    Timestamp=datetime(2015, 1, 1)
)


有人对此有经验吗?

根据API docs参数存在。

最佳答案

看来您的boto3不是最新的,所以boto3客户端库无法识别新参数。请运行$ sudo pip install -u boto3等。

顺便说一句,Timestamp参数接受以下两个:


日期时间对象(例如datetime.datetime
UNIX时间戳(例如time.time

关于python - 在时间戳记下从Kinesis流读取Boto3,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37273062/

10-12 21:20