通过S3控制台上传文件时,我的S3 Lambda事件侦听器仅看到ObjectCreated:Put
个事件。这既适用于新文件,又适用于覆盖现有文件。这是预期的行为吗?
似乎新文件上传应生成ObjectCreated:Post
,以保持POST ==创建,PUT ==更新规范。
答案 0 :(得分:0)
S3有4个用于对象创建的API:
multipart/form-data
HTTP请求正文的一部分。PUT
,但它是自己的事件类型)。每当您编辑现有对象的元数据时,也会使用Copy API:将对象存储在S3中后,它们及其元数据将完全不可变。控制台允许您“编辑”元数据,但是它可以通过在其自身之上复制对象来实现此目的(即使未启用存储区版本控制,这也是S3中的安全操作,因为在创建新对象之前不会触摸旧对象已提供成功)),同时提供了修订的元数据。 S3不支持移动或重命名-这些操作通过复制然后删除来完成。可以使用Copy API复制的对象的最大大小为5 GB。控制台使用与SDK使用相同的标准公共API与S3进行通信,并且如上所述,根据对象大小使用PUT或multipart,并使用复制来编辑对象元数据。
为获得最佳结果,请始终使用s3:ObjectCreated:*
事件,除非您有特定原因不这样做。