【发布时间】:2016-07-25 13:59:34
【问题描述】:
我正在寻找一种方法来临时禁用 DynamoDB 上的 Lambda 触发器。我希望能够在不触发 Lambda 代码的情况下对表应用手动更新(例如,从 S3 备份导入数据)。我尝试了 lambda 函数“触发器”选项卡中触发器旁边的禁用按钮。我还尝试禁用表的整个流。在这两种情况下,当重新激活触发器/流时,所有的触发器事件(在它们被停用时发生)都会被执行。
如何防止触发此代码?
非常感谢!
【问题讨论】:
-
将触发器添加回lambda函数时,您将起始位置设置为什么?在这种情况下,它需要是最新的。如果设置为 TRIM_HORIZON,它将从流中最旧的记录开始(流记录保留 24 小时)。
-
好的,我想知道这是否是我的问题的关键。但我对此仍然有点不安全。从 lambda 控制台创建触发器时,我可以设置起始位置。因此,当我将触发器设置为从 LATEST 开始时,它会在手动禁用并再次启用后执行此操作。但是,如果存在某种错误或瓶颈,它是否也会影响它的一般工作方式?是否仍然保证所有事件都将由触发器处理?我不太了解这个设置。不要忘记:谢谢你,这对我来说是一个重要的答案!
-
设置起始位置只影响它开始读取流的位置。除此之外,它根本不影响流的行为。在 lambda 函数返回成功之前,Streams 不会继续,因此如果遇到错误,将使用相同的事件数据再次调用该函数。你必须在这里小心,因为如果它是你的代码中的一个错误(即不是一个 api 调用错误),你会在那个时候卡住。然而,不管流的起始位置如何,这是一个需要注意的问题
-
非常感谢@JonathanSeed!我真的很难弄清楚这是如何工作的。您提供的信息非常非常有用!再次感谢您的努力!
标签: amazon-web-services lambda amazon-dynamodb aws-lambda amazon-dynamodb-streams