全部產品
Search
文件中心

Function Compute:配置ZIP包解壓觸發器

更新時間:Apr 21, 2026

Object Storage Service提供ZIP檔案自動解壓功能。配置解壓規則,即指定檔案首碼和目標目錄後,您上傳符合規則的ZIP檔案至OSS Bucket時,系統自動完成解壓操作,並將解壓後的檔案寫入目標目錄。該功能基於Function ComputeFC與OSS的整合,其本質是在FC側建立的OSS原生觸發器,無需編寫代碼,即可實現上述事件驅動流程。

實現原理

ZIP包解壓結合Function Compute完成ZIP檔案的解壓工作,解壓流程如下圖所示。

  1. 匹配解壓規則尾碼的ZIP檔案上傳到滿足OSS解壓規則首碼的目錄。

  2. 自動觸發Function Compute。

  3. Function Compute解壓ZIP檔案,並將解壓後的檔案儲存體至OSS的指定目錄中。

應用情境

  • 批量上傳

    當您有大量小檔案需要上傳時,使用程式上傳耗時較多,此時可以使用ZIP包解壓功能,將檔案打包上傳。

  • 上傳完整的檔案

    出於資源完整性考慮,有時需要將多個檔案組合成一個資源,而將多個檔案分別上傳可能成功率不高,此時可以使用ZIP包解壓功能,提升上傳成功率。

  • 按特定目錄結構上傳

    網站中引用了很多靜態資源,資源的目錄結構比較複雜,如果在OSS中逐一建立目錄上傳檔案的話耗時很長。此時可以在本地定義ZIP包中目錄結構,壓縮後上傳到OSS,使用ZIP包解壓功能解壓使用。

  • 資源分發

    在需要將大量檔案分發給使用者或不同伺服器時,可以將這些檔案打包成ZIP包,並使用OSS ZIP包解壓功能將ZIP包解壓到指定目錄。這樣可以減少傳輸時間和頻寬消耗。

費用說明

使用ZIP包解壓功能,涉及OSS儲存費用以及FC函數調用和資源使用費用,詳細如下。

  • OSS費用

    涉及請求Bucket資源產生的請求費用和檔案儲存體在OSS Bucket產生的儲存費用

  • FC費用

    涉及函數調用次數費用和調用函數產生的vCPU、記憶體和磁碟資源使用費用。以上計量項目需按照轉換係數轉換為CU使用量進行計費,詳情請參見計費概述

Bucket內網網域名稱傳輸資料免流量費用。

使用限制

  • 儲存類型限制

    冷歸檔或者深度冷Archive Storage類型的檔案需先解凍再解壓;Archive Storage類型的檔案,如果所在Bucket未開啟歸檔直讀,需先解凍再解壓。

  • 檔案或檔案夾命名限制

    建議使用UTF-8或GB 2312編碼命名您的檔案或檔案夾,否則可能會出現解壓後的檔案或檔案夾名稱出現亂碼、解壓過程中斷等問題。

  • 壓縮包限制

    ZIP壓縮包大小不超過10 GB,且單個檔案的大小不超過10 GB,解壓單個壓縮包預設的最大時間是2小時,超過2小時可以調整函數最大執行時間長度,詳情請參見解壓超大檔案解壓超過2h任務失敗

配置ZIP包解壓觸發器

  1. 登入Object Storage Service控制台,在左側導覽列,單擊Bucket 列表

  2. Bucket 列表頁面,單擊目標Bucket名稱。

  3. 在目標Bucket頁面的左側導覽列,選擇,然後單擊ZIP包解壓,在ZIP包解壓面板配置ZIP包解壓規則。

    參數

    說明

    本文樣本

    服務授權

    建立Function Compute服務關聯角色使用者Function Compute訪問其他雲端服務。如果您之前未登入過Function Compute控制台,則需要單擊授權按鈕,完成服務關聯角色AliyunServiceRoleForFC的建立。

    不涉及

    函數授權

    授予Function Compute讀寫OSS的許可權。

    單擊授權按鈕,然後按照提示完成授權。

    不涉及

    觸發器授權

    授予OSS訪問Function Compute的許可權。

    單擊授權按鈕,然後按照提示完成授權。如果已完成授權,此項顯示為觸發器角色

    不涉及

    首碼

    配置觸發函數的檔案首碼。您上傳指定首碼的ZIP檔案或將ZIP檔案上傳至指定目錄會觸發Function Compute。置空此項則匹配所有上傳的ZIP檔案。

    重要

    置空此項可能會觸發迴圈執行,建議您設定檔首碼。更多資訊,請參見如何避免迴圈觸發?

    zipfolder/

    目標目錄

    填寫ZIP檔案解壓後存放的目錄。置空此項,Function Compute會將ZIP檔案解壓到當前Bucket的根目錄。配置不同目標目錄,解壓後的檔案結構見本文配置樣本。

    警告

    為避免影響OSS-HDFS服務的正常使用或者引發資料汙染、資料丟失的風險,在開通了OSS-HDFS服務的Bucket中配置ZIP包解壓規則時,禁止將目標目錄填寫為.dlsdata/

    • 目標目錄為destfolder,選中直接解壓到目標目錄中

      bucket
      ├─── zipfolder/
      │ ├─── a.zip
      │ └─── b.zip
      └─── destfolder/
      ├─── a.txt
      ├─── b.txt
      └─── ...
    • 目標目錄為空白,選中保留壓縮檔名為路徑目錄

      bucket/
      ├── zipfolder/
      │   ├── a.zip
      │   └── b.zip
      ├── a/
      │   ├── a.txt
      │   └── ...
      └── b/
          ├── b.txt
          └── ...
    • 目標目錄為destfolder,選中保留壓縮檔名為路徑目錄

      bucket/
      ├── zipfolder/
      │   ├── a.zip
      │   └── b.zip
      └── destfolder/
          ├── a/
          │   ├── a.txt
          │   └── ...
          └── b/
              ├── b.txt
              └── ...

配置完成後,支援修改觸發器的檔案首碼和關聯的FC函數配置,具體操作,請參見配置原生OSS觸發器函數執行個體規格和彈性配置

相關文檔

常見問題

上傳檔案後觸發Function Compute失敗

ZIP包解壓涉及OSS與Function Compute服務的關聯調用。ZIP檔案上傳到OSS後,OSS觸發Function Compute執行解壓操作。OSS觸發Function Compute的調用可能失敗,您可以在響應Header中通過x-oss-event-status的值(Base64編碼)判斷是否成功觸發解壓。如果x-oss-event-status的值解碼後為{"Result": "Ok"},表示成功觸發解壓。如果x-oss-event-status的值解碼後不為{"Result": "Ok"},表示觸發解壓失敗,建議重新上傳ZIP檔案。具體操作,請參見簡單上傳

說明

ZIP壓縮包中單個檔案的大小不超過10 GB,解壓單個壓縮包的最大時間是2小時。

解壓超大檔案解壓超過2h任務失敗

函數執行逾時,請根據情況調整函數執行逾時時間,最大支援24h。

  1. 在OSS控制台,找到目標Bucket,在ZIP 包解壓頁面,單擊目標觸發器右側的编辑

  2. 在彈出的函數詳情頁面,單擊配置頁簽,在左側導覽列,選擇運行時,然後單擊编辑

  3. 在運行時編輯面板,修改执行超时时间,然後單擊部署

ZIP壓縮包超過10 GB,或壓縮包中單個檔案超過10 GB

ZIP壓縮包大小超過10 GB或壓縮包中單個檔案大小超過10 GB,可以採用NAS作為解壓臨時工作目錄。該方案可能會產生少量的NAS儲存費用。具體參見unzip-oss-nas

是否支援嵌套的ZIP包解壓

不支援。

配置ZIP包解壓規則後,在OSS儲存空間上傳一個ZIP包,觸發一次Function Compute解壓後傳回OSS指定目錄。如果解壓後的檔案中依然包括ZIP包,則該ZIP包不能再次解壓。您可以將該ZIP包重新上傳到OSS儲存空間觸發解壓操作。

通過FC解壓後的檔案,能不能解壓到另一個Bucket

不支援。

ZIP包解壓功能僅支援將檔案解壓到配置ZIP包解壓規則時設定的目標目錄中。如果需要解壓到另一個Bucket,需要基於函數代碼做二次開發,修改代碼。

解壓過程中隨時可以看到OSS目錄的檔案麼

可以。

使用ZIP包解壓功能時,Function Compute邊解壓邊上傳檔案到OSS,您可以隨時在目標目錄查看解壓後的檔案。

怎麼判斷已經解壓完成

您可以在目標Bucket的檔案清單查看是否已解壓檔案到目標目錄,或在Function Compute控制台查看函數調用日誌,判斷解壓是否完成。

  1. 在OSS控制台的ZIP 包解壓頁面,單擊目標觸發器右側的编辑

  2. 在彈出的函數詳情頁面,單擊日志頁簽。

    如果當前函數未啟用日誌功能,單擊一鍵啟用即可。

  3. 上傳zip包檔案,然後在日志頁簽查看是否調用成功。

是否支援解壓.rar和.tar.gz格式的檔案

不支援。

ZIP包解壓功能目前只支援解壓.zip格式的檔案。如果需要解壓更多壓縮類型檔案,請參見decompress-oss

ZIP包解壓完畢後會返回資訊給OSS麼

不會。

如果需要查看解壓進度,可以在Function Compute詳情頁面的調用日誌頁簽進行查看,或者給解壓函數配置非同步呼叫目標服務。更多資訊,請參見配置非同步呼叫目標服務

OSS是否支援在線壓縮

不支援。

如果需要將OSS上多個檔案(Object)打包下載到本地,可以使用Function Compute打包下載。更多資訊,請參見將多個檔案打包成ZIP包下載

是否支援分卷壓縮

不支援。

ZIP包解壓功能只針對單個壓縮包,不支援將多個壓縮包解壓後的內容進行合并,因此大檔案分卷壓縮成多個.zip壓縮包的情況不支援解壓。

ZIP包解壓按鈕為灰色,無法配置ZIP包解壓規則

查看是否已根據介面提示完成相關授權,例如已建立Function Compute服務關聯角色AliyunServiceRoleForFC或授予Function Compute向OSS上傳檔案的許可權。