2016-05-17 131 views
1

我正在嘗試從Kinesis流讀取。如果我使用ShardIteratorTypeAT_SEQUENCE_NUMBERLATEST,它工作正常。但是,如果我嘗試使用AT_TIMESTAMP類型,並設置一個TIMESTAMP,boto3抱怨:Boto3從Kinesis流中讀取時間戳

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該參數存在。

+1

關於第二個想法,你的boto3不似乎是最新的。請運行$ sudo pip install -U boto3。 – quiver

+0

謝謝@quiver!原因是我的'boto3'版本過時了。我通過的時間戳是有效的。隨意編輯您的答案,我會接受它。 – ustroetz

+0

@ ustroetz更新了答案!很高興你做到了。 – quiver

回答

1

看起來像你的boto3是不是最新的,所以boto3客戶端庫無法識別新的參數。請運行$ sudo pip install -u boto3等。

順便說一句,Timestamp參數接受以下兩個:

  • DateTime對象(如datetime.datetime
  • UNIX時間戳(如time.time