全部產品
Search
文件中心

Function Compute:檔案上傳到OSS觸發函數執行多次,要如何處理?

更新時間:Jul 06, 2024

將檔案上傳到OSS後發現OSS觸發器被多次觸發,您需要查看OSS觸發器設定的觸發事件是否符合預期。

問題原因

OSS觸發器被多次觸發,可能原因是設定的觸發規則中包含萬用字元,因此單個檔案上傳過程中產生的多個事件均匹配成功,導致觸發了多次函數執行。

例如,您通過分區上傳功能上傳檔案到OSS,這個過程會依次觸發oss:ObjectCreated:InitiateMultipartUploadoss:ObjectCreated:UploadPartoss: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:PutObjectoss:ObjectCreated:PostObjectoss:ObjectCreated:CompleteMultipartUpload。這三個觸發事件覆蓋通過以下方式上傳檔案的情況:

  • oss:ObjectCreated:PutObject:通過簡單上傳建立或覆蓋檔案。

  • oss:ObjectCreated:PostObject:通過表單上傳建立或覆蓋檔案。

  • oss:ObjectCreated:CompleteMultipartUpload:完成分區上傳。