【发布时间】:2022-01-01 08:44:26
【问题描述】:
我正在尝试构建一个在 S3 删除事件上触发的 Lambda 函数。如果一次删除多个项目,我想使用 S3 批处理作业。我无法在文档中弄清楚或找到的是这样的事件会是什么样子。我假设它在 Records 中只有多个类似的项目,我可以遍历,获取所有密钥,然后批量删除,但我无法确认。我搜索了文档,并构建了一个测试 Lambda,它只记录事件,但它作为多个不同的事件出现。我对如何做我在这里尝试的事情感到困惑。
【问题讨论】:
-
不清楚你的问题是什么。据推测,这些对象已被删除,因为这就是触发您的 Lambda 函数的原因。为什么需要批量删除 Lambda 函数中的任何内容?您将收到一组包含 1 条以上记录的事件记录(每个对象一条记录)。我不知道每次调用最多可以获得 1 条记录的保证,但 this post 讨论了它。
-
我正在尝试将对象复制到另一个预先删除的存储桶以进行存档。这些是给我的规格,对我来说也很奇怪……也许他们的意思是批量复制?在这种情况下,我的问题仍然存在:如何制作多个项目的测试事件? (在阅读您的博客文章之前输入此内容,接下来我会这样做)
-
如何为多个对象创建一个测试事件?我会确保 Lambda 函数以有用的格式 (JSON) 打印事件,然后通过从 S3 存储桶中删除测试对象来触发 Lambda 函数。从 CloudWatch Logs 获取日志,从中复制事件,进行修改以包含多个测试对象,然后保存为您的测试事件。您将无法触发您的 Lambda 函数预删除。您必须以不同的方式解决这个问题,并注意 S3 生命周期,它可以将对象转换到不同的存储层进行归档(或可以在 N 天后删除它们)。
标签: amazon-web-services amazon-s3 aws-lambda