如何避免lambda触发递归调用

时间:2017-07-24 20:14:40

标签: aws-lambda

我写了一个lambda函数,它是通过一个s3 bucket的putObject事件触发的。我正在修改上传后的对象的标题,下载对象,并使用适当的标头重新上传。但是因为函数本身使用putObject重新上载对象,所以lambda会触发它自己。

1 个答案:

答案 0 :(得分:1)

三个选项:

  • 使用其他API上传您的更改,而不是您有活动的更改。即,如果你的lambda由PUT触发,那么之后使用POST来修改内容(很难做到,因为SDK AFAIK不支持POST,所以这可能不是一个选项)。

  • 跟踪使用情况,如果对文件所做的唯一更改是您所做的更改,则在处理程序开头处有一个小保护,以便短路。如果您无法以编程方式检测已设置的标头,则可能需要一个小的发电机表或类似表来跟踪您已经触摸过的文件。这将让您立即中止,只收取最低100毫秒的费用。

  • 重新组织项目以获得“摄取”存储桶和输出存储桶。未处理的是放入前者,修改后,然后放入后者。这具有许多优点。首先是你没有结束当前的情况,所以这是一个加号。第二个是你没有任何进程消耗这些修改过的文件可能会提取未经修改的版本。第三是你可以更好地了解这个过程 - 如果出现问题,很容易看出哪些批次的文件经历了哪个过程。

总的来说,我会为你推荐选项3,不过我知道在我的懒惰时刻,我可能会尝试选择1或2.

无论哪种方式,祝你好运。

相关问题