AWS服务跟踪dynamoDB中的实体

时间:2020-09-11 08:12:58

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

我正在AWS中构建一个简单的应用程序,使用户可以在有限的时间内租用汽车。我将AWS Lambda用于计算,将dynamoDB用于存储,并将API Gateway用于处理对lambda函数的请求。 我的问题是,是否有任何AWS服务或dynamoDB功能可让我跟踪dynamoDB中“汽车”对象的时间,以便在租用时间结束时触发lambda函数来通知用户并执行其他操作?

3 个答案:

答案 0 :(得分:3)

您可以考虑将DynamoDB Time to LiveDynamoDB streams和lambda函数一起使用。

在这种情况下,特定于租赁时间的项目将放置在单独的表中。他们会将TTL值设置为租赁时间。 DynamoDB 自动扫描并根据TTL删除项目。这些自动删除可以由DynamoDB流获取,并转发给 lambda函数。该功能将根据过期时间采取措施。

但是,possible issue可能是DynamoDB有时需要48小时才能删除项目。

答案 1 :(得分:0)

一个可能的解决方案是让Lambda cron作业在计时器上运行,该计时器扫描或查询DynamoDB表以查找日期与租赁结束日期匹配的值。然后,该lambda可以使用AWS Step Functions调用您的NotifyUser lambda,或者可以向您的lambda订阅的SNS主题发出事件。

一些可能有用的链接:
CronJob
SNS

答案 2 :(得分:0)

DynamoDB流和TTL并不是很好的解决方案,因为DynamoDB不提供用于TTL删除的SLA(在极少数情况下,甚至可能需要超过48小时的时间),并且该项目将被删除,因此以后无法由下游应用程序或分析使用。

为此,您应该将Cloudwatch事件规则(或Amazon Eventbridge)与cron计划表达式一起使用。因此,将项目放入DynamoDB表中的代码可以随后使用cron Schedule表达式为租用时间到期的将来时间创建Cloudwatch事件规则。这将触发一个lambda,该lambda可以调用您的通知服务来通知客户。

相关问题