dynamodb 可以根据它持有的某行数据发送到 sns

Can dynamodb send to sns based on some row of data it holds

正在尝试设计错误处理的解决方案。我们有一个 lambda,它从 sns 主题接收数据并将数据发送到已知有时不可用的遗留服务。

当遗留服务关闭时,我想将消息发送到 dyanmodb table 以进行重播。

我想使用断路器模式。所以目前我正在考虑启动一项服务,该服务将不断轮询遗留服务,然后是一些看起来像这样的伪代码

If (legacy service changes from dead to alive){
     Send all entries from dynamo to sns topic;

//This will trigger the lambda again which will hit legacy service which we know is now up
}

问题是,我们喜欢使用无服务器技术,但不确定我是否可以拥有一个不断轮询的无服务器服务,在服务器上 运行 是有意义的。

我正在寻找一种很好的方法来执行此操作,所以我想知道是否可以配置 dynamodb 以轮询遗留服务,并在它从死变活的情况下填充 sns 主题。或使用无服务器技术的任何其他解决方案。

P.s 我不喜欢 运行 间隔使用 lambda 来检查 dB 的想法,因为我们可能会错过一些停机时间,而且从 dB 读取数据并发送到 sns 也可以是一个漫长的操作。

更新:更多地阅读电路模式并意识到我不需要不断轮询我可以在我的 dynamodb table 中检查最后 XX 秒内失败的调用数量所以出现了新问题,我能否根据其条目之一的条件将消息从 dynamodb 发送到 sns。例如。 FailsInLastMinute 从 3 更改为 3 以下我们将所有消息从 dynamo 中的一个列发送到 sns 或者我需要这部分的服务

我觉得DynamoDB做不到,毕竟是数据库,不是集成平台。

也就是说,一个可能的解决方案是使用 DynamoDB 作为 SNS 和使用 DynamoDB streams 的遗留应用程序之间的队列。来自 SNS 的任何消息都会使用 Lambda 插入到 DynamoDB 中。 DynamoDB 流然后触发另一个 Lambda,将消息发送到遗留应用程序。

如果旧版应用程序关闭,Lambda 函数会生成故障,因为它无法连接。 DynamoDB 然后将重试 Lambda 直到成功。

请注意,您最好使用启用了 fifo 的 SQS 队列。这将做同样的事情,但没有 DynomoDB 的开销。