繁体   English   中英

在 Lambda 中持有 DynamoDB Stream 事件一小段时间

[英]Hold DynamoDB Stream Events in Lambda for a Small Period

我们计划在 Lambda Function 中添加一些更新,它已被设置为 DynamoDB 新项目事件的触发器

DynamoDB --> DynamoDB 流 --> AWS Lambda

因此,在执行更新时,我们需要确保 lambda 不应接收到任何事件。

是否有任何易于实施的方法来做到这一点?

选项 1:流 -> Lambda(启用/禁用)

DynamoDB Streams 可以使用事件源映射集成将事件直接发送到 Lambda 事件源映射是 AWS 管理的轮询器资源,可为您拉取事件。 如果您从等式中删除 EventBridge 并使用事件源映射,则可以使用其enabled属性暂停消息流到 Lambda 消费者:

docs :设置为 true 以启用事件源映射。 设置为 false 以停止处理记录。 Lambda 跟踪最后处理的记录,并在重新启用映射时从该点恢复处理。

UpdateEventSourceMapping API 设置启用属性:

aws lambda update-event-source-mapping --uuid <mapping-uuid> --enabled false

选项 2:Streams -> EventBridge -> Lambda(带存档和重放)

如果您确实需要 EventBridge 集成,您可以暂时禁用触发您的 Lambda 的规则,然后使用 EventBridge 存档和重播功能在准备就绪时赶上。 您负责确定哪些事件需要重新处理。 如果您的应用程序是幂等的,这将更容易。

首先你为什么要使用 EventBridge?

路径应该是DynamoDB -> DynamoDB Streams -> Lambda

为确保 Lambda 仅接收新项目,您可以使用Lambda 事件过滤器

{
  "filters": [
    {
      "pattern": "{\"eventName\" : [\"INSERT\"] }"
    }
  ]
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM