将文件上传到OSS后发现OSS触发器被多次触发,您需要查看OSS触发器设置的触发事件是否符合预期。
问题原因
OSS触发器被多次触发,可能原因是设置的触发事件在文件上传过程中被多次触发。
例如,您通过分片上传功能上传文件到OSS,这个过程会依次触发oss:ObjectCreated:InitiateMultipartUpload、oss:ObjectCreated:UploadPart和oss:ObjectCreated:CompleteMultipartUpload事件。假如您将OSS触发器的触发事件设置为oss:ObjectCreated:*,通过OSS Browser工具上传一个12 MB的文件,分片大小设置为5 MB,那么您的函数将被触发执行5次。5次触发的事件分别为:
oss:ObjectCreated:InitiateMultipartUploadoss:ObjectCreated:UploadPartoss:ObjectCreated:UploadPartoss:ObjectCreated:UploadPartoss:ObjectCreated:CompleteMultipartUpload
所以对于分片上传,触发事件需要设置为oss:ObjectCreated:CompleteMultipartUpload才只会被触发一次。
解决方案
您可以设置触发器的触发事件为oss:ObjectCreated:PutObject、oss:ObjectCreated:PostObject和oss:ObjectCreated:CompleteMultipartUpload。这三个触发事件覆盖通过以下方式上传文件的情况:
oss:ObjectCreated:PutObject:通过简单上传创建或覆盖文件。oss:ObjectCreated:PostObject:通过表单上传创建或覆盖文件。oss:ObjectCreated:CompleteMultipartUpload:完成分片上传。