是否可以在不轮询的情况下监听 DynamoDB 中的更改?

Is it possible to listen for changes in DynamoDB without polling?

我有一项服务(部署在 ECS 上)需要监听 DynamoDB 上的插入并对其做出反应 table。

目前我正在每秒读取 table,但我想降低延迟。有没有一种方法可以订阅 DynamoDB 中的更改并在插入某些记录时收到通知(通过 websockets、长轮询或类似机制)?

我查看了 DynamoDB Streams,但我也找不到订阅更改的方法。有一个 JS project 做类似的事情,但它 有一个 "interval to poll" 设置...

是否可以在不轮询的情况下监听变化?如果是,如何?

这正是 DynamoDB Streams 的用途。作为榜样,您是否尝试过 this tutorial 看看它是否能让您到达您想去的地方?是的,它在 Lambda 中,但它可以像您尝试做的那样轻松地部署在其他地方的脚本中。

看来是不可能的。 This video explains the concepts very nicely, and it turns out that even Lambda doesn't really get "triggered" - it polls DynamoDB 每 250 毫秒流一次。

如果 1/4 秒的延迟不是问题,可以设置事件像这样遍历:

DynamoDB => DynamoDB Streams => Lambda => IOT => your app (via MQTT client or websockets)

虽然看起来有点费解。不过,我很乐意在这方面被证明是错误的,所以如果我遗漏了什么,请发表评论。