如何获取单个s3文件创建事件

时间:2018-02-15 20:01:27

标签: amazon-s3 aws-lambda amazon-sns

我有几个不同客户端上传文件的amazon s3存储桶,通常使用sftp。由于不同的客户端以不同的方式访问存储桶,我无法准确预测它们将如何上传文件。我想在新文件到达时收到通知,所以当任何s3对象创建甚至被触发时,我让桶写入SNS主题。但是,对于某些客户端,这会为每个文件创建生成3个不同的事件:

  1. 文件大小为0的ObjectCreated:Put事件
  2. 包含完整文件大小的ObjectCreated:Copy事件
  3. ObjectCreated:CompleteMultiPartUpload,还有完整的文件大小。
  4. 我有一个lambda函数侦听此事件,我希望它只对每个文件执行一次。有没有区分这些重复事件?

    我不希望s3存储桶只写CopyCompleteMultiPartUploads,因为我担心一些客户端只会触发其中一个(除非有一些保证其中一个每个s3文件创建的触发器,但我没有在任何地方的文档中看到过。)

    我真的不想使用我的lambda将数据库中的接收文件记录下来,因为这会使客户端合法地重新上传具有相同名称的文件时遇到挑战。

    我确信我的lambda工作正常,这些是不同的事件,而不是重试

1 个答案:

答案 0 :(得分:1)

您应该仅收到一个文件通知。但是无论如何,对于s3文件事件触发器,您可以使用选项All object create events选项。每个文件将发送一个事件。