寻求有关带有 Lambda 自定义条件的 DynamoDB 触发器的指导

问题描述 投票:0回答:1

我在 AWS 中有一个 DynamoDB 表,我尝试根据以下两个条件为 Lambda 函数设置触发器:

  1. 如果表中属性“status”设置为“NEW”的项目数量达到 200 个。

  2. 如果消息已在表中存在超过 10 分钟且属性“状态”为“新”。

我最初探索了 CloudWatch 警报,但我发现表大小和项目计数指标不会直接发送到 CloudWatch。此外,没有直接的方法来查询具有特定条件(例如“状态为新”)的指标。

我考虑的另一种方法是使用 DynamoDB Streams 在每次插入时触发 Lambda 函数,同时还维护一个计数器。此外,我将有一个单独的 Lambda 函数,该函数定期运行来处理满足第二个条件(即超过 10 分钟)的消息。

到目前为止,我还没有想出任何其他方法。

有人可以提供指导或建议替代解决方案来实现这一目标吗?

amazon-web-services aws-lambda amazon-dynamodb amazon-cloudwatch
1个回答
0
投票

在您的桌子上创建一个 GSI。如果您的吞吐量低于每秒 1000 WCU,则使用静态值作为 GSI_PK,例如

1
。使用时间戳作为排序键。

GSIPK SK 其他
1 2023-09-26T00:01:000 一些数据
1 2023-09-26T00:23:000 一些数据
1 2023-09-26T00:41:000 一些数据

现在您调用一个 Lambda 函数,该函数每分钟读取一次索引,该索引获取早于 10 分钟的项目。当您将某个项目更新为不再是

NEW
时,同时从该项目中删除
GSIPK
,这会将其从索引中删除。

这是满足您的用例的一种非常有效且简单的方法。

对于 Lambda 调用,您可以在 EventBridge 上使用基于 Cron 的事件。

© www.soinside.com 2019 - 2024. All rights reserved.