Object Storage Service提供ZIP檔案自動解壓功能。配置解壓規則,即指定檔案首碼和目標目錄後,您上傳符合規則的ZIP檔案至OSS Bucket時,系統自動完成解壓操作,並將解壓後的檔案寫入目標目錄。該功能基於Function ComputeFC與OSS的整合,其本質是在FC側建立的OSS原生觸發器,無需編寫代碼,即可實現上述事件驅動流程。
實現原理
ZIP包解壓結合Function Compute完成ZIP檔案的解壓工作,解壓流程如下圖所示。
匹配解壓規則尾碼的ZIP檔案上傳到滿足OSS解壓規則首碼的目錄。
自動觸發Function Compute。
Function Compute解壓ZIP檔案,並將解壓後的檔案儲存體至OSS的指定目錄中。
應用情境
批量上傳
當您有大量小檔案需要上傳時,使用程式上傳耗時較多,此時可以使用ZIP包解壓功能,將檔案打包上傳。
上傳完整的檔案
出於資源完整性考慮,有時需要將多個檔案組合成一個資源,而將多個檔案分別上傳可能成功率不高,此時可以使用ZIP包解壓功能,提升上傳成功率。
按特定目錄結構上傳
網站中引用了很多靜態資源,資源的目錄結構比較複雜,如果在OSS中逐一建立目錄上傳檔案的話耗時很長。此時可以在本地定義ZIP包中目錄結構,壓縮後上傳到OSS,使用ZIP包解壓功能解壓使用。
資源分發
在需要將大量檔案分發給使用者或不同伺服器時,可以將這些檔案打包成ZIP包,並使用OSS ZIP包解壓功能將ZIP包解壓到指定目錄。這樣可以減少傳輸時間和頻寬消耗。
費用說明
使用ZIP包解壓功能,涉及OSS儲存費用以及FC函數調用和資源使用費用,詳細如下。
OSS費用
FC費用
涉及函數調用次數費用和調用函數產生的vCPU、記憶體和磁碟資源使用費用。以上計量項目需按照轉換係數轉換為CU使用量進行計費,詳情請參見計費概述。
Bucket內網網域名稱傳輸資料免流量費用。
使用限制
儲存類型限制
冷歸檔或者深度冷Archive Storage類型的檔案需先解凍再解壓;Archive Storage類型的檔案,如果所在Bucket未開啟歸檔直讀,需先解凍再解壓。
檔案或檔案夾命名限制
建議使用UTF-8或GB 2312編碼命名您的檔案或檔案夾,否則可能會出現解壓後的檔案或檔案夾名稱出現亂碼、解壓過程中斷等問題。
壓縮包限制
ZIP壓縮包大小不超過10 GB,且單個檔案的大小不超過10 GB,解壓單個壓縮包預設的最大時間是2小時,超過2小時可以調整函數最大執行時間長度,詳情請參見解壓超大檔案解壓超過2h任務失敗。
配置ZIP包解壓觸發器
登入Object Storage Service控制台,在左側導覽列,單擊Bucket 列表。
在Bucket 列表頁面,單擊目標Bucket名稱。
在目標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觸發器和函數執行個體規格和彈性配置。
相關文檔
如果您需要實現自動解壓更多壓縮類型檔案,例如
.tar或.gz等,請參見decompress-oss。如果您需要使用Function Compute實現打包下載OSS檔案,請參見將多個檔案打包成ZIP包下載。