我想在DynamoDB表更改时收到通知,就像Google Firebase实时数据库一样。
我在前端javascript应用程序中使用此服务。
答案 0 :(得分:2)
DynamoDB和Firebase / Firestore确实不同。
Firebase / Firestore是一个实时数据库,您可以在其中扫描订阅客户端上的更改。 DynamoDB是用于存储键/值对的NoSQL数据库。
更适合类似用例的是“ AWS AppSync”,它提供了Firebase / Firestore这样的实时更新。
但是,如果您想使用DynamoDB,请查看DynamoDB流以在表更新时触发事件。
然后的问题是,如何将更新发送给客户端。
您可以向SNS主题发送消息,并在必要时向客户端发送推送通知。
但是最后,您将使用DynamoDB Streams和SNS以及Lambda构建Firebase / Firestore或“ AWS AppSync”提供的现成功能。
答案 1 :(得分:1)
DynamoDB没有实时通知/触发器来更新表。
但是在这种情况下,您可以尝试使用DynamoDB流来捕获表活动。
以下是一些示例用例:
一个AWS区域中的应用程序修改DynamoDB中的数据 表。另一个AWS区域中的第二个应用程序读取这些数据 修改并将数据写入另一个表,创建一个副本 与原始表格保持同步。
一个流行的移动应用程序以以下速率修改DynamoDB表中的数据: 每秒数千次更新。另一个应用程序捕获并 存储有关这些更新的数据,提供近乎实时的使用 移动应用程序的指标。
全球多人游戏具有多主机拓扑,可存储数据 在多个AWS区域中。每个主服务器通过消耗和保持同步 重播边远地区发生的更改。
应用程序自动向移动设备发送通知 一个朋友上传新照片后,该组中的所有朋友中的所有朋友。
新客户将数据添加到DynamoDB表中。此事件调用 另一个向新客户发送欢迎电子邮件的应用程序。
此DynamoDB Streams文档中的更多详细信息。
这是如何集成DynamoDB Streams with AWS Javascript SDK的方法:
var dynamodbstreams = new AWS.DynamoDBStreams();
dynamodbstreams.describeStream(params, function (err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
DynamoDB流支持一些事件
eventName —(字符串)已执行的数据修改的类型 在DynamoDB表上:
插入-新项目已添加到表中。
MODIFY-修改现有项目的一个或多个属性。
删除-该项目已从表格中删除。
顺便说一句,如果您想通过另一种方式而不是DynamoDB流来通知客户端,则可以尝试使用this article来使用Lambda函数。
希望这可以帮助您解决问题。
答案 2 :(得分:0)
我通常会看到DynamoDB-> SNS主题模式->(带有自定义lambda)。
如果您的应用程序是移动应用程序,请看一下AWS SNS Mobile Push,看看它是否更适合您的体系结构。