启动 Kinesis 消费者应用程序时如何使用 DynamoDB table 的状态?

How is the state from the DynamoDB table used while starting a Kinesis consumer application?

从文档中可以清楚地看出,当以 TRIM_HORIZON 作为迭代器类型启动 KCL 应用程序时,将从流的开头读取记录。文档还提到应用程序的状态是通过使用检查点在 DynamoDB table 中维护的。

但是我没有找到任何关于 KCL 应用程序如何使用此 DynamoDB table 信息的参考资料。

具体我的问题如下—— 我有保留期为 168 小时的流,这是大量数据。假设我的 KCL(从 TRIM_HORIZON 处的迭代器开始)与传入数据同步,并且正在处理流末尾的记录并定期检查指向。现在如果我重新启动我的 KCL,它是否会从流的开头开始读取数据(168 小时前)但仍然使用 DynamoDB table 查看检查点并跳到最新记录或者检查点信息不是完全使用并且从一开始就读取流?

在后一种情况下,不需要对大量数据进行重新处理。

我是否应该手动使用 DynamoDB table 中的序列号来获取分片迭代器?

当 KCL 应用程序重新启动时,它会自动从 DynamoDB table 恢复其状态,因此您不需要手动执行任何操作。处理从重启前的最后一个检查点继续,所以如果重启意外发生并且应用程序没有机会在退出前检查点(尽管可能有其他 reasons重复)

重新启动时,请务必提供与上次启动时相同的应用程序名称。否则 KCL 会将这种情况视为创建一个新的独立应用程序,将创建一个新的 DynamoDB table 并开始完全独立的处理。