【问题标题】:How to implement a Lambda trigger to fire once on a global dynamoDb table如何实现 Lambda 触发器以在全局 dynamoDb 表上触发一次
【发布时间】:2020-10-19 17:27:04
【问题描述】:
我有一个 dynamoDb 表,在两个区域之间设置为全局(2019 版)。
我在桌子上分配了一个 lambda 函数作为触发器。
当一条记录插入到表的东部版本时,就会触发东部版本的 lambda。然后将该记录复制到表的西版,并触发西版的 lambda。
我想触发一个 lambda。但我也希望在一个区域出现故障时启用两个触发器。
我怎样才能做到这一点?
我宁愿不让我的触发逻辑幂等。
【问题讨论】:
标签:
amazon-web-services
aws-lambda
amazon-dynamodb
【解决方案1】:
我不知道这是否可以在没有幂等性的情况下实现,除非你想让它变得非常脆弱和复杂。如果不使用某种幂等性过滤器,即使不是不可能,也很难在分布式系统中获得恰好一次的端到端交付。
【解决方案2】:
在不了解您在做什么的情况下,与其直接写入 DynamoDB,不如先写入本地 Step Function。数据在 step 函数中处理,然后写入 DynamoDB。这样,当它到达 DynamoDB 时,它已经被“处理”并且复制发生没有问题。我不确定这是否可行,因为我不了解您的全部情况,但它可能会。
【解决方案3】:
我认为您可以为此使用 FIFO SQS。响应您的 dynamoDB 流的 Lambda 可以写入 FIFO SQS。