將文件上傳到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:InitiateMultipartUpload
oss:ObjectCreated:UploadPart
oss:ObjectCreated:UploadPart
oss:ObjectCreated:UploadPart
oss:ObjectCreated:CompleteMultipartUpload
所以對于分片上傳,觸發事件需要設置為oss:ObjectCreated:CompleteMultipartUpload
才只會被觸發一次。
解決方案
您可以設置觸發器的觸發事件為oss:ObjectCreated:PutObject
、oss:ObjectCreated:PostObject
和oss:ObjectCreated:CompleteMultipartUpload
。這三個觸發事件覆蓋通過以下方式上傳文件的情況:
oss:ObjectCreated:PutObject
:通過簡單上傳創建或覆蓋文件。oss:ObjectCreated:PostObject
:通過表單上傳創建或覆蓋文件。oss:ObjectCreated:CompleteMultipartUpload
:完成分片上傳。