用于跟踪 dynamoDB 中的实体的 AWS 服务

AWS service to track entity in dynamoDB

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

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

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

您可以考虑使用 DynamoDB Time to Live along with DynamoDB streams 和 lambda 函数。

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

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

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

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