ObjectCreated:发布到S3控制台上载?

时间:2018-11-21 22:49:58

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

通过S3控制台上传文件时,我的S3 Lambda事件侦听器仅看到ObjectCreated:Put个事件。这既适用于新文件,又适用于覆盖现有文件。这是预期的行为吗?

似乎新文件上传应生成ObjectCreated:Post,以保持POST ==创建,PUT ==更新规范。

1 个答案:

答案 0 :(得分:0)

S3有4个用于对象创建的API:

  • PUT用于仅在HTTP请求正文中发送原始对象字节的请求。这是用于创建最大5 GB的对象的最常用API。
  • POST使用specially-crafted HTML forms的属性,身份验证和文件作为multipart/form-data HTTP请求正文的一部分。
  • Copy用于源字节来自HTTP中现有对象的情况(顺便说一下,该对象也使用HTTP PUT,但它是自己的事件类型)。每当您编辑现有对象的元数据时,也会使用Copy API:将对象存储在S3中后,它们及其元数据将完全不可变。控制台允许您“编辑”元数据,但是它可以通过在其自身之上复制对象来实现此目的(即使未启用存储区版本控制,这也是S3中的安全操作,因为在创建新对象之前不会触摸旧对象已提供成功)),同时提供了修订的元数据。 S3不支持移动或重命名-这些操作通过复制然后删除来完成。可以使用Copy API复制的对象的最大大小为5 GB。
  • Multipart,这对于创建超过5 GB的对象是必需的,对于多兆字节的对象则建议使用。分段可以用于任何大小的对象,但是每个部分(最后一个除外)的大小至少必须为5 MiB,因此通常不用于较小的上载。此API还允许安全地重试失败的任何部件,并并行上传部件,并具有多个完整性检查,以防止在S3重组的对象中出现任何缺陷。分段也可用于复制大对象

控制台使用与SDK使用相同的标准公共API与S3进行通信,并且如上所述,根据对象大小使用PUT或multipart,并使用复制来编辑对象元数据。

为获得最佳结果,请始终使用s3:ObjectCreated:*事件,除非您有特定原因不这样做。