將檔案上傳到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
:完成分區上傳。