Boto3 在时间戳从 Kinesis 流中读取
Boto3 read from Kinesis stream at timestamp
我正在尝试从 Kinesis 流中读取。如果我使用 ShardIteratorType
AT_SEQUENCE_NUMBER
或 LATEST
,它工作正常。但是,如果我尝试使用 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
)
我正在尝试从 Kinesis 流中读取。如果我使用 ShardIteratorType
AT_SEQUENCE_NUMBER
或 LATEST
,它工作正常。但是,如果我尝试使用 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
)