如何将DynamoDB主从表作为Amazon SNS的发布者/订阅者实现变更通知
结论
- 不支持直接将DynamoDB子表记录设置为SNS订阅者。SNS的合法订阅端点仅包含Lambda、SQS、HTTP/HTTPS、邮件、短信、移动推送等官方指定类型,DynamoDB单条记录不属于可对接的订阅端点范畴。
落地实现方案
你可以按照以下步骤实现发布者变更时通知关联订阅者的需求:
- 为主表(Publisher表)开启
DynamoDB Streams,捕获所有数据新增、修改、删除的变更事件 - 配置Lambda函数作为DynamoDB Streams的触发目标,主表每产生一条变更事件就自动触发Lambda执行
- 在Lambda函数中完成后续逻辑:
- 通过关联字段(如发布者ID)查询子表(Subscriber表),拉取所有与当前变更发布者绑定的订阅者记录
- 按业务需求完成通知动作:如果需要将变更内容同步更新到子表的订阅者记录中,直接调用DynamoDB更新接口批量修改对应记录即可;如果需要触达订阅者的业务接收端(如应用、消息队列等),可以提前为所有订阅者配置对应SNS主题的订阅,Lambda向SNS主题推送变更消息即可批量触达所有订阅端。
若订阅者量级较大,为避免Lambda运行超时,可先将查询到的订阅者列表写入SQS队列,再配置多个Lambda消费者分批次处理通知请求,提升并发处理效率。
内容的提问来源于stack exchange,提问作者Vahaj Uddin
相关产品推荐
相关产品推荐

