【问题标题】:Does AWS S3 Have a concept of files being 'updated'?AWS S3 是否有“更新”文件的概念?
【发布时间】:2017-01-22 20:55:54
【问题描述】:

我想编写一个 Lambda 函数,当在 s3 存储桶中添加或修改文件时触发该函数并处理它们并将它们移动到别处,从而破坏旧版本的文件。

我想知道是否可以将 AWS Lambda 配置为在文件更新时触发?

在查看了 s3 的 Boto3 documentation 之后,看起来 s3 存储桶中唯一可能发生的事情就是创建和删除。

此外,AWS documentation 似乎表明无法触发对 S3 的“更新”。

我认为在 S3 中没有对文件进行“更新”的真正概念并且更新实际上是在某些东西被销毁和重新创建时,我是否正确?如果我弄错了,当存储桶中的 S3 文件发生更改时,如何触发 Lambda 函数?

【问题讨论】:

  • 你读过这个eng.localytics.com/…
  • @error2007s 不,但我读过的链接帖子似乎表明没有“更新”的概念aws.amazon.com/blogs/aws/s3-event-notification 但链接中的引用显示“Lambda 将自动运行代码以响应修改到上传到 Amazon Simple Storage Service (S3) 存储桶的对象。 “修改”是这里的语言,但我只能假设它实际上是指新创建的对象?
  • 当我们通过上传新版本重写该对象时,该对象将被修改?

标签: amazon-web-services amazon-s3 aws-lambda


【解决方案1】:

不,没有在 S3 上更新文件的概念。 S3 上的文件的更新方式与最初上传的方式相同 - 通过 PUT 对象请求。 (Relevant answer here.) 配置为触发 PUT 对象请求的 S3 bucket notification 可以执行 Lambda 函数。

【讨论】:

    【解决方案2】:

    现在 S3 存储桶有一项新功能。在属性下,可以为此存储桶启用版本控制。如果您在分配给您的 Lambda 函数的 S3 上设置了创建触发器 - 如果您“更新”同一个文件,因为它是新版本,每次都会执行此操作。

    【讨论】:

    • 版本控制功能似乎没有添加特定的更新触发事件。我检查了有或没有版本控制的 S3 存储桶,并且事件列表是相同的。因此,它不允许专门针对文件更新。此外,当一个文件被另一个文件替换时,无需启用版本控制来设置触发器。如果没有版本控制,新文件会触发 POST / PUT 事件,也会触发替换旧文件的文件。
    猜你喜欢
    • 2017-09-17
    • 2020-11-25
    • 1970-01-01
    • 2021-01-03
    • 1970-01-01
    • 1970-01-01
    • 2019-05-03
    • 2015-07-21
    • 2013-06-06
    相关资源
    最近更新 更多