只在S3对象创建时触发Lambda,而不在覆盖时触发

0

【以下的问题经过翻译处理】 我们有一个用例,即针对首次创建的对象从 S3 触发 AWS Lambda。我们不想在对象重写时触发 lambda。我查看了 S3 POST 和 PUT 的文档,两者看起来都差不多。

profile picture
专家
已提问 3 个月前0 查看次数
1 回答
0

【以下的回答经过翻译处理】 在这里,没有特别简单的方法可以做到你想做的事情。PUT/POST 事件都会发送创建对象的事件,即使是在替换现有对象的情况下。

你可以在数据桶上启用版本控制,并(通过查看对象元数据)检测是否有新版本刚刚上传。但这意味着你将在数据桶中拥有额外的对象副本。可以使用生命周期规则删除这些副本,但这需要额外的工作。

更麻烦的是,还要维护一个保存现有对象列表的数据库;Lambda 函数会检查这是否是一个替换操作,而不是一个 "正确 "的创建操作,并根据情况停止运行。

也就是说,如果你已经有了一个数据库(或列表或其他东西),而你又不想在对象被替换时填充额外的数据,那么也许你可以查询一下这个数据库(或列表或其他东西)。如果对象不存在于该数据库中,那么它就是新的,否则就是被替换的。

profile picture
专家
已回答 3 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则