【问题标题】:Configure multiple delete event in S3/Lambda在 S3/Lambda 中配置多个删除事件
【发布时间】: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


【解决方案1】:

您需要订阅的 s3 事件是 s3:ObjectRemoved:Delete,documentation 用于跟踪一个对象或一批被删除的对象:

通过使用 ObjectRemoved 事件类型,您可以在从存储桶中删除一个对象或一批对象时启用通知。

您可以期待一个结构详细的事件here

但是,由于您在评论中说您只是想“将预先删除的对象复制到另一个存储桶”,您可能想探索S3 buckets versioning capabilities。 根据删除工作流程here,启用版本控制将允许您将对象保留在“已删除”状态,为将来的恢复留出空间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-30
    • 2017-05-25
    • 2022-01-18
    • 2019-07-05
    • 1970-01-01
    • 2021-10-23
    • 1970-01-01
    相关资源
    最近更新 更多