AWS javascript SDK Kinesis getShardIterator Error: UnexpectedParameter: Unexpected key 'Timestamp' found in params
AWS javascript SDK Kinesis getShardIterator Error: UnexpectedParameter: Unexpected key 'Timestamp' found in params
我正在使用 aws-sdk(版本 2.1.8)从 Kinesis 中获取记录。这是在节点 Lambda 函数中。尝试使用 ShardIteratorType:AT_TIMESTAMP。我在参数对象中提供了一个时间戳
const AWS = require("aws-sdk");
const kinesis = new AWS.Kinesis({ region: 'us-east-1' });
var params = {
ShardId: shard.ShardId, /* required */
ShardIteratorType: 'AT_TIMESTAMP', /* required */
StreamName: process.env.STREAM_NAME, /* required */
Timestamp: new Date(2017, 11, 08, 14, 32, 51)
};
kinesis.getShardIterator(params, function (err, data) {
if (err) {
return defer.reject(err);
}
defer.resolve(data);
});
但我收到此错误:在参数 中发现意外的密钥 'Timestamp'。检查了 google、SO 和 aws 论坛,无济于事。我正在关注 AWS 的文档:http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Kinesis.html#getShardIterator-property
这是我使用 getShardIterator 的 Lambda 函数的日志
2017-11-08T15:53:13.551Z ec3ef291-c49c-11e7-ad35-473206669891 SHARD
ITERATOR TYPE: AT_TIMESTAMP
2017-11-08T15:53:13.551Z ec3ef291-c49c-11e7-ad35-473206669891
TIMESTAMP: 2017-12-08T14:32:51.000Z
ShardIteratorTypes LATEST 和 TRIM_HORIZON 工作正常。只有当我尝试使用 AT_TIMESTAMP 时才会出现问题。
我发现发生了什么事。 aws-sdk 正在获取时间戳值并将其乘以 1000。这太疯狂了——文档中没有任何地方提到这一点,它只是说明
The timestamp of the data record from which to start reading. Used with shard iterator type AT_TIMESTAMP. A timestamp is the Unix epoch date with precision in milliseconds
因此,使用这个
Timestamp: 1510673368611
将失败,即使它是以毫秒为单位的有效时间戳。你必须除以 1000
Timestamp: 1510673368.611
发现这真是令人气愤。只需验证我发送的值,不要更改它然后验证结果。或者,您知道,在文档中提及这会发生。
我正在使用 aws-sdk(版本 2.1.8)从 Kinesis 中获取记录。这是在节点 Lambda 函数中。尝试使用 ShardIteratorType:AT_TIMESTAMP。我在参数对象中提供了一个时间戳
const AWS = require("aws-sdk");
const kinesis = new AWS.Kinesis({ region: 'us-east-1' });
var params = {
ShardId: shard.ShardId, /* required */
ShardIteratorType: 'AT_TIMESTAMP', /* required */
StreamName: process.env.STREAM_NAME, /* required */
Timestamp: new Date(2017, 11, 08, 14, 32, 51)
};
kinesis.getShardIterator(params, function (err, data) {
if (err) {
return defer.reject(err);
}
defer.resolve(data);
});
但我收到此错误:在参数 中发现意外的密钥 'Timestamp'。检查了 google、SO 和 aws 论坛,无济于事。我正在关注 AWS 的文档:http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Kinesis.html#getShardIterator-property
这是我使用 getShardIterator 的 Lambda 函数的日志
2017-11-08T15:53:13.551Z ec3ef291-c49c-11e7-ad35-473206669891 SHARD
ITERATOR TYPE: AT_TIMESTAMP
2017-11-08T15:53:13.551Z ec3ef291-c49c-11e7-ad35-473206669891
TIMESTAMP: 2017-12-08T14:32:51.000Z
ShardIteratorTypes LATEST 和 TRIM_HORIZON 工作正常。只有当我尝试使用 AT_TIMESTAMP 时才会出现问题。
我发现发生了什么事。 aws-sdk 正在获取时间戳值并将其乘以 1000。这太疯狂了——文档中没有任何地方提到这一点,它只是说明
The timestamp of the data record from which to start reading. Used with shard iterator type AT_TIMESTAMP. A timestamp is the Unix epoch date with precision in milliseconds
因此,使用这个
Timestamp: 1510673368611
将失败,即使它是以毫秒为单位的有效时间戳。你必须除以 1000
Timestamp: 1510673368.611
发现这真是令人气愤。只需验证我发送的值,不要更改它然后验证结果。或者,您知道,在文档中提及这会发生。