将记录插入 dynamoDB 时调用 Lambda

Invoking Lambda when record inserted to dynamoDB

记录插入 dynamoDB 时需要调用 lambda table, 但在这里我需要在记录插入 60 秒后调用 lambda, 有没有办法在 n 秒后调用 lambda?

您可以触发一个 lambda,将您的 DynamoDB 事件写入 SQS 队列,该队列由您的初始 lambda 轮询。然后您可以自定义轮询间隔,因此在将某些内容插入 table.

后,您的 lambda 被调用的持续时间

您可以使用 AWS StepFunctions 实现此类行为。有一个特殊的“等待”state,用于在下一步之前延迟。

所以想法是启动状态机以响应新的 DynamoDB 记录,然后它过渡到“等待”步骤(60 秒),然后过渡到使用您的 lambda 函数的“任务”步骤。

为了以“可扩展”的方式解决这个问题,我将使用以下 AWS 产品:

  1. DynamoDB Streams
  2. EventBridge
  3. Step Function

流程如下所示:

  1. 一旦您的第一个 Lambda 在您的 table 中插入一个新条目,DynamoDB 流就会被“触发”。
  2. 您将 Lambda 配置为“侦听”流事件。
  3. 然后,此 Lambda 应该将一个事件放到 EventBridge 上。您执行此操作而不是直接在此处执行某些操作,因为根据文档,您最多只能有两个 Lambda 表达式“侦听”流事件。因此,我建议将这些“事件”发送到 EventBridge,这样您就可以将 more/other 处理步骤添加到您的 DynamoDB 流中。但这是可选的。
  4. 您在 EventBridge 中创建一个规则,该规则将触发具有适当负载(例如您要处理的 DynamoDB 密钥)的 Step Function。
  5. Step Function(如 Artem 所述)然后可以包含一个等待 n 秒的步骤,然后另一个 Lambda 被触发到 运行 您的代码。