amazon-dynamodb-streams - 当 ShardIteratorType 设置为 LATEST 时,dynamoDBStreams getRecords() 返回空记录

标签 amazon-dynamodb-streams aws-sdk-js

我试图使用适用于nodeJS的AWS-SDK通过dynamodb流检索DynamoDB中最后一刻的更改。 我想到了通过使用 ShardIteratorType 作为“LATEST”来实现它。每次我使用 getShardIterator() 获得的迭代器调用 getRecords() 时,它都会返回空记录,而将 ShardIteratorType 更改为“TRIM_HORIZON”会返回该分片中的对象。

我无法理解这种行为。如果有人能帮我解决这个问题,我将不胜感激。

这是实现的伪代码。

let getShardIterator = async (shardID) => {
    let params = {
        ShardId: shardID,
        ShardIteratorType: "LATEST", //using TRIM_HORIZON is working fine
        StreamArn: streamInfo.StreamArn
    };
    return new Promise((resolve, reject) => {
        dynamoStreams.getShardIterator(params, function (err, data) {
            if (err) reject(err) // an error occurred
            else resolve(data);
        });
    })
}

let getDataFromIterator = async (params) => {
    return new Promise((resolve, reject) => {
        dynamoStreams.getRecords(params, function (err, data) {
            if (err) reject(err, err.stack); 
            else resolve(data);           
        });
    })
}

let shardIterObj = await getShardIterator(ShardId); 
let data = await getDataFromIterator(shardIterObj); 

谢谢。

最佳答案

根据文档,LATEST 将在最近的记录之后返回,如果您有 worker/thread 在后台运行,则通常使用此选项,以便任何可以拾取后续事件。

TRIM_HORIZON - Start reading at the last untrimmed record in the shard in the system, which is the oldest data record in the shard.

LATEST - Start reading just after the most recent record in the shard, so that you always read the most recent data in the shard.

关于amazon-dynamodb-streams - 当 ShardIteratorType 设置为 LATEST 时,dynamoDBStreams getRecords() 返回空记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52496641/

相关文章:

aws-lambda - AWS DynamoDB Stream 针对单个记录的单个更改触发 2 个(几乎)相同的事件

mongodb - 当 lambda 容器过期时,有没有好的方法来关闭 mongo 连接?

streaming - 如何测量 DynamoDB Streams 的传播延迟?

javascript - 如何在没有特定标签的情况下搜索资源

node.js - AWS-SES : Adding link in my email template

node.js - 使用 NodeJS 的 AWS Lambda 函数中的 AWS-SDK 加载错误

amazon-web-services - 通过 DynamoDB 流的 Lambda 触发器延迟

aws-sdk-js - aws-sdk v3 找不到凭证

javascript - 如何中止/停止正在进行的亚马逊 AWS s3 上传

amazon-dynamodb - 如何制作流dynamodb arn的子字符串?