全部產品
Search
文件中心

Function Compute:OSS觸發器概述

更新時間:Jun 07, 2025

OSS與Function Compute整合後,OSS事件能觸發相關函數執行,實現對OSS中的資料的自訂處理。本文介紹Function Compute支援的OSS觸發器的使用限制、事件類型及觸發規則。

背景資訊

OSS和Function Compute通過OSS觸發器實現無縫整合,您可以編寫函數對OSS事件進行自訂處理,當OSS捕獲到指定類型的事件後,OSS事件觸發相應的函數執行。例如,您可以設定函數來處理PutObject事件,當您調用OSS的PutObject介面上傳圖片到OSS後,相關聯的函數會自動被觸發來處理該圖片。

OSS和Function Compute整合後,您可以自由地調用各種函數處理映像或音頻資料,再把結果寫回到多種儲存服務中。整個架構中,您只需要專註於函數邏輯的編寫,系統將以即時的、可靠的、大規模並行的方式處理海量的資料。

OSS觸發器使用限制

OSS事件定義

當OSS系統捕獲到相關事件後,會將事件資訊編碼為JSON字串,傳遞給事件處理函數。OSS事件通知格式的詳細資料,請參見訊息通知

已支援的OSS事件定義如下表所示。一種事件類型對應一個ObjectCreated、ObjectRemoved或ObjectModified類型的API,調用某個API並執行成功後會觸發函數執行一次。

事件類型

事件名稱

說明

ObjectCreated

oss:ObjectCreated:PutObject

調用PutObject介面上傳檔案。更多資訊,請參見PutObject

oss:ObjectCreated:PutSymlink

調用PutSymlink介面針對OSS上的TargetObject建立軟連結,您可以通過該軟連結訪問TargetObject。更多資訊,請參見PutSymlink

oss:ObjectCreated:PostObject

調用PostObject介面使用HTML表單上傳檔案到指定的Bucket。更多資訊,請參見PostObject

oss:ObjectCreated:CopyObject

調用CopyObject介面拷貝一個在OSS上已經存在的對象。更多資訊,請參見CopyObject

oss:ObjectCreated:InitiateMultipartUpload

使用MultipartUpload模式傳輸資料前,必須先調用InitiateMultipartUpload介面來通知OSS初始化一個MultipartUpload事件。更多資訊,請參見InitiateMultipartUpload

oss:ObjectCreated:UploadPart

初始化一個MultipartUpload事件之後,可以根據指定的對象名和Upload ID來分塊(Part)上傳資料。更多資訊,請參見UploadPart

oss:ObjectCreated:UploadPartCopy

UploadPartCopy通過從一個已存在的Object中拷貝資料來上傳一個Part。更多資訊,請參見UploadPartCopy

oss:ObjectCreated:CompleteMultipartUpload

在將所有資料Part都上傳完成後,必須調用CompleteMultipartUpload介面來完成整個檔案的MultipartUpload。更多資訊,請參見CompleteMultipartUpload

oss:ObjectCreated:AppendObject

調用AppendObject介面以追加寫的方式上傳檔案。更多資訊,請參見AppendObject

oss:ObjectCreated:*

調用任何上述ObjectCreated類型的API執行成功後都會觸發函數。

ObjectRemoved

oss:ObjectRemoved:DeleteObject

調用DeleteObject介面刪除某個對象。更多資訊,請參見DeleteObject

oss:ObjectRemoved:DeleteObjects

調用DeleteMultipleObjects介面大量刪除檔案。更多資訊,請參見DeleteMultipleObjects

oss:ObjectRemoved:AbortMultipartUpload

調用AbortMultipartUpload介面可以根據使用者提供的Upload ID終止其對應的MultipartUpload事件。更多資訊,請參見AbortMultipartUpload

ObjectModified

oss:ObjectModified:UpdateObjectMeta

調用UpdateObjectMeta介面修改某個對象的屬性。

說明

目前,支援該事件的地區包括:華東1(杭州)、華東2(上海)、華北1(青島)、華北2(北京)、華北3(張家口)、華北5(呼和浩特)、華南1(深圳)和西南1(成都)。

ObjectReplication

oss:ObjectReplication:ObjectCreated

資料複製過程涉及的寫入操作。

oss:ObjectReplication:ObjectModified

資料複製過程涉及的覆蓋操作。

oss:ObjectReplication:ObjectRemoved

資料複製過程涉及的刪除操作。

OSS觸發器觸發規則

避免迴圈觸發

警告

使用OSS觸發器時,請注意避免迴圈觸發。例如,一個典型的迴圈觸發情境是OSS的某個Bucket上傳檔案事件觸發函數執行,此函數執行完成後又產生了一個或多個檔案再寫回到OSS的Bucket裡,這個寫入動作又觸發了函數執行,形成了鏈狀迴圈。

為了避免迴圈觸發函數產生不必要的費用,建議您設定檔首碼或檔案尾碼,例如將觸發函數的檔案的檔案首碼設定為src,函數執行完成後組建檔案的檔案首碼設定為dst,產生的檔案將不會再次觸發函數。如果不設定檔案首碼和檔案尾碼,表示匹配任意檔案首碼和檔案尾碼。具體操作,請參見步驟一:建立OSS觸發器

原生OSS觸發器配置規則

為了避免在同一個Bucket下建立重複的觸發器導致單個事件同時觸發多個觸發器,Function Compute限制單個Bucket下觸發器配置必須滿足以下條件:

  • 觸發事件、檔案首碼和檔案尾碼組成的組合必須唯一。

  • 建立觸發器只有在其“觸發事件 + 檔案首碼 + 檔案尾碼”組合與已有觸發器不衝突時,才能成功建立。

以下通過具體樣本說明原生OSS觸發器的配置規則:

已有觸發器

建立觸發器

建立觸發器是否成功

說明

觸發事件

檔案首碼

檔案尾碼

觸發事件

檔案首碼

檔案尾碼

oss:ObjectCreated:PutObject

source

zip

oss:ObjectCreated:*

source

zip

不成功

oss:ObjectCreated:*是所有ObjectCreated類型事件的全集。建立觸發器的事件oss:ObjectCreated:*匹配已有相同檔案前尾碼的觸發器的事件oss:ObjectCreated:PutObject。

source1

zip1

成功

建立觸發器和已有觸發器的事件類型和檔案首碼匹配,但檔案尾碼不匹配。

oss:ObjectCreated:PutObject

source

zip

不成功

建立觸發器與已有觸發器的事件類型、檔案首碼檔案尾碼都匹配。

source

1zip

不成功

source1

zip

不成功

source

不成功

建立觸發器與已有觸發器的事件類型和檔案首碼匹配,檔案尾碼不設定則包含了尾碼為zip的對象,即檔案尾碼也匹配。

zip

不成功

建立觸發器與已有觸發器的事件類型和檔案尾碼匹配,檔案首碼不設定則包含了首碼為source的對象,即檔案首碼也匹配。

source1

zip1

成功

建立觸發器與已有觸發器的事件類型和檔案首碼匹配,但檔案尾碼不匹配。

1source

1zip

成功

建立觸發器與已有觸發器的事件類型和檔案尾碼匹配,但檔案首碼不匹配。

oss:ObjectCreated:PostObject

source

zip

成功

建立觸發器與已有觸發器的事件類型不匹配。

說明

檔案首碼匹配原則為前向匹配,檔案尾碼匹配原則為後向匹配。

以下介紹兩種衝突類型,兩種衝突同時存在,則建立觸發器不成功,兩種衝突都不存在或只存在其中一種衝突,建立觸發器可以成功。

事件類型衝突

已有觸發事件類型

建立觸發事件類型

衝突說明

oss:ObjectCreated:PutObject

oss:ObjectCreated:*

oss:ObjectCreated:*包含oss:ObjectCreated:PutObject,事件衝突。

oss:ObjectCreated:*

oss:ObjectCreated:PostObject

路徑匹配衝突

已有觸發器路徑

建立觸發器路徑

衝突說明

source/.zip

1source/.zip

首碼不匹配,尾碼匹配,路徑不衝突

source/.zip

source/.zip1

首碼匹配,尾碼不匹配,路徑不衝突

source/.zip

source/.zip

首碼匹配,尾碼匹配,路徑衝突

重要

如果您希望一個OSS事件類型可以觸發不同的函數進行不同的處理,即為不同的函數配置相同的OSS觸發器,可以建立EventBridge類別的OSS觸發器

常見問題

相關文檔