AWS:如果DynamoDB表行在过去30分钟内未更新,则触发事件

时间:2017-10-16 13:23:07

标签: amazon-web-services triggers amazon-dynamodb aws-lambda

我必须在AWS流程上设置管理。 为了简单起见,我有一些客户端通过SOAP请求到我在Elastic Beanstalk NodeJS应用程序上部署的SOAP服务器,每隔5分钟发送一次心跳。每次收到心跳时,我都会通过更新表中的字段来存储我最后一次在DynamoDB表上收到它。

我现在需要创建一个进程,如果我在过去的30分钟内没有收到心跳,就会执行操作(更新另一个表,调用Lambda函数等)。我现在不知道我将拥有多少客户,但他们会随着时间的推移而逐渐增长,并且全天候连接到我的服务器。

我希望在30分钟后触发Lambda函数的事件(或在SNS主题上发布消息),表格中的特定行未更新,但我不知道如何获取最后一部分工作。此事件应该检查​​文档中的每一行。

你会怎么做?

谢谢!

2 个答案:

答案 0 :(得分:4)

您可以将DynamoDB与TTL,DynamoDB Streams和AWS Lambda一起使用。无需cron

当您创建新行或更新现有行时,请将该行的TTL设置为30分钟。

当达到30分钟时,它将启动一个DynamoDB流,您可以将其用作Lambda函数的触发器。

然后,此Lambda函数可以执行您想要执行的自定义处理(即更新另一个表,调用Lambda函数等)。

请注意,当TTL过期时,原始的DynamoDB行将被删除。如果你需要保留该记录,你可以让Lambda函数重新创建它,并在未来30分钟内设置一个新的TTL。

参考文献:

答案 1 :(得分:0)

您是否需要在所有客户端间隔30分钟检查:这可以通过执行SQL语句的服务器上的cron作业来完成,其中Date() - Timestamp> 30分钟(只是陈述逻辑),在DynamoDB格式中只需更改语法。

或者您需要在特定客户上次发送给您的30分钟后进行检查。 在这种情况下,你的cron将每分钟运行一次,逻辑与上面相同

如果您需要在计划中使用lambda,请参阅此链接Using Lambda in schedule

希望这会有所帮助 如果你需要进一步帮助我准备帮助的语法