Я использую AWS Javascript SDK для использования из потока данных Kinesis. Я хочу получить последние записи в осколке.
Когда я указываю тип ShardIterator как «ПОСЛЕДНИЕ», я не получаю никаких записей обратно. Однако, когда я использую «TRIM_HORIZON», я получаю все записи обратно.
kinesis.describeStream(describeParams, function(err, data) {
if (err) {
console.log(err, err.stack); // an error occurred
}
else {
var getParams = {
ShardId: data.StreamDescription.Shards[0].ShardId,
ShardIteratorType: "TRIM_HORIZON", //get oldest package
StreamName: streamName,
};
if(shardIteratorType){
console.log("you have passed some shardIteratorType:" + shardIteratorType);
getParams.ShardIteratorType = shardIteratorType;
}
kinesis.getShardIterator(getParams, function(err, result) {
if (err) {
console.log("Error in getShardIterator()");
console.log(err);
} else {
console.log("calling getRecord with shard iterator");
// Get records from the Kinesis stream
getRecord(result.ShardIterator);
}
});
}
});
function getRecord(shard_iterator) {
console.log("getRecord was called.");
var getRecParams = {
ShardIterator: shard_iterator
};
kinesis.getRecords(getRecParams, function(err, result) {
if (err) {
console.log("Error in getRecords() from the Kinesis stream.");
console.log(err);
} else {
try {
if(result.Records.length > 0) {
// Loop through all the packages
for(var i = 0; i < result.Records.length; i++) {
if(result.Records[i] != undefined) {
var getData = JSON.parse( decodeURIComponent
(escape(result.Records[i].Data)));
console.log(getData);
var table = document.getElementById("myTable");
var row = table.insertRow(0);
var j = i + 1 ;
var cell1 = row.insertCell(0);
cell1.innerHTML = getData ;
}
}
}
} catch(err) {
console.log("Error parsing the package.");
console.log(err);
}
}
});
}
Я ожидал бы получить только самые последние записи вместо всей истории при использовании «LATEST» вместо «TRIM_HORIZON» для типа итератора сегмента. Что я делаю не так?