收到 DynamoDB 流事件后立即查询 GSI - 可靠吗?

akr*_*smv 4 amazon-dynamodb

从下面的引用中,我很难理解事务到全局二级索引(GSI)、流和备份的传播是并行发生的,还是顺序发生的。

事务完成后,该事务中所做的更改将传播到全局二级索引 (GSI)、流和备份。

https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/transaction-apis.html

因此我的问题是:仅在重建(复制)所有 GSI才会引发 dynamodb 流事件还是这样的声明是错误的?换句话说,如果我在收到其流事件后立即使用相应的键查询 GSI,我能否确定可以在某个 GSI 中找到某个项目的投影?INSERT

为了提供一些背景信息 - 我正在研究一个可以跨越多个 lambda 的过程的概念,并且每个 lambda 只执行一个事务。在开始该过程之前,我确切地知道应该预期有多少事务,并且我在发电机流和原子计数器的帮助下对它们进行计数,这样我可以确定过程何时完成编辑请不要将我重定向到使用步骤函数,我知道它们的巨大潜力,但我的堆栈会爆炸:))

但是,如果上面来自 AWS 的引用不能保证在发出发电机流事件之前进行 GSI 复制,那么我就有点搞砸了,因为我无法立即启动依赖于插入的数据但想通过 GSI 查询数据的其他程序...

谢谢!

编辑:经过有益的讨论和更多的挖掘,我发现这篇aws 文章为我提供了进一步的理解,特别是该Best practices for working with DynamoDB Streams部分

Ric*_*han 6

流事件和 GSI 复制同时发生。无法保证其中一个会先于另一个发生。通过正确配置的 GSI,如果没有受到热分区的任何背压,复制将在 10 毫秒内完成。流事件处理通常发生在不到 1 秒的时间内。如果数据模型设计良好,GSI 复制很可能会在处理 Stream 事件之前完成,但不能保证一定会出现这种情况。