當您需要批量上傳檔案、按特定目錄結構上傳檔案、上傳完整的檔案或對檔案快速進行資源分發時,可以配置解壓規則,上傳ZIP檔案到OSS指定路徑,觸發Function Compute自動解壓,並將解壓後內容儲存回OSS。
前提條件
已開通Function Compute服務。您可以在Function Compute的產品詳情頁面開通Function Compute服務。
使用情境
批量上傳:當您有大量小檔案需要上傳時,使用程式上傳耗時較多,此時可以使用ZIP包解壓功能,將檔案打包上傳。
上傳完整的檔案:出於資源完整性考慮,有時需要將多個檔案組合成一個資源,而將多個檔案分別上傳可能成功率不高,此時可以使用ZIP包解壓功能,提升上傳成功率。
按特定目錄結構上傳:網站中引用了很多靜態資源,資源的目錄結構比較複雜,如果在OSS中逐一建立目錄上傳檔案的話耗時很長。此時可以在本地定義ZIP包中目錄結構,壓縮後上傳到OSS,使用ZIP包解壓功能解壓使用。
資源分發:在需要將大量檔案分發給使用者或不同伺服器時,可以將這些檔案打包成ZIP包,並使用OSS ZIP包解壓功能將ZIP包解壓到指定目錄。這樣可以減少傳輸時間和頻寬消耗。
實現原理
ZIP包解壓結合Function Compute完成ZIP檔案的解壓工作,解壓流程如下圖所示。
“匹配解壓規則尾碼”的ZIP檔案上傳到“滿足OSS解壓規則首碼”的目錄。
自動觸發Function Compute。
配置ZIP包解壓規則時需要觸發器授權,以便OSS使用觸發器角色AliyunOSSEventNotificationRole調用Function Compute,觸發器授權時自動為該角色授予調用Function Compute的權限原則。
Function Compute解壓ZIP檔案,並將解壓後的檔案儲存體至OSS的指定目錄中。
配置ZIP包解壓規則時需要給Function Compute服務授權。授權時將建立角色,Function Compute使用角色擷取OSS上的ZIP包,並將解壓後的檔案儲存回OSS。建立角色時會同步授予角色相應的權限原則(對OSS Bucket的讀寫權限)。
費用說明
ZIP包解壓功能是增值服務,將產生OSS和Function Compute相關費用:
OSS:請求Bucket的資源的請求數計費和儲存費用。更多資訊,請參見OSS計費概述。
Function Compute:vCPU使用量費用和記憶體使用量量費用,按執行時間計費。例如:ZIP包解壓執行了5分鐘,vCPU是2核,記憶體是3GB,計費為2*0.000015*300+3*0.0000015*300=0.01035美元。更多資訊,請參見FC計費概述。
Bucket資源和Function Compute資源通過Bucket的內網網域名稱進行傳輸,內網網域名稱傳輸資料免流量費用。
使用限制
地區限制:僅華東1(杭州)、華東2(上海)、華北1(青島)、華北2(北京)、華北 3(張家口)、華北5(呼和浩特)、華南1(深圳)、西南1(成都)、中國香港、新加坡、馬來西亞(吉隆坡)、印尼(雅加達)、日本(東京)、德國(法蘭克福)、英國(倫敦)、美國(維吉尼亞)、美國(矽谷)、沙特(利雅得)地區的儲存空間支援ZIP包解壓。
儲存類型限制:冷歸檔儲存類型的檔案需先解凍再解壓;Archive Storage類型的檔案,如果所在Bucket未開啟歸檔直讀,需先解凍再解壓。
檔案或檔案夾命名限制:建議使用UTF-8或GB 2312編碼命名您的檔案或檔案夾,否則可能會出現解壓後的檔案或檔案夾名稱出現亂碼、解壓過程中斷等問題。
壓縮包限制:ZIP壓縮包中單個檔案的大小不超過1 GB,解壓單個壓縮包預設的最大時間是2小時,超過2小時可以調整函數最大執行時間長度,詳情請參見解壓超大檔案解壓超過2h任務失敗。
配置ZIP包解壓規則
登入OSS管理主控台。
單擊Bucket 列表,然後單擊目標Bucket名稱。
在左側導覽列,選擇 。
單擊ZIP 包解壓,在ZIP 包解壓面板配置ZIP包解壓規則。
參數說明
參數
是否必選
說明
服務授權
是
授予Function Compute讀寫OSS和執行函數的許可權。
單擊授權按鈕,然後按照提示完成授權。
觸發器授權
是
授予OSS訪問Function Compute的許可權。
單擊授權按鈕,然後按照提示完成授權。如果已完成授權,此項顯示為觸發器角色。
首碼
否
配置觸發Function Compute的檔案首碼。您上傳指定首碼的ZIP檔案或將ZIP檔案上傳至指定目錄會觸發Function Compute。置空此項則匹配所有上傳的ZIP檔案。
重要置空此項可能會觸發迴圈執行,建議您設定檔首碼。更多資訊,請參見如何避免迴圈觸發?。
目標目錄
否
填寫ZIP檔案解壓後存放的目錄。置空此項,Function Compute會將ZIP檔案解壓到當前Bucket的根目錄。
如果您需要在目標目錄中保留ZIP檔案名稱,則選中保留壓縮檔名為路徑目錄。
如果您不需要保留ZIP檔案名稱,直接將解壓後的檔案存放在目標目錄,則選中直接解壓到目標目錄中。配置詳情請參見以下配置樣本。
警告為避免影響OSS-HDFS服務的正常使用或者引發資料汙染、資料丟失的風險,在開通了OSS-HDFS服務的Bucket中配置ZIP包解壓規則時,禁止將目標目錄填寫為
.dlsdata/
。配置樣本
情境
配置方法
解壓後的檔案結構
所有上傳至zipfolder目錄的ZIP包均解壓到destfolder目錄,不保留ZIP包名稱。
首碼設定為zipfolder/。
目標目錄設定為destfolder。
選中直接解壓到目標目錄中。
bucket ├─── zipfolder/ │ ├─── a.zip│ └─── b.zip└─── destfolder/ ├─── a.txt ├─── b.txt └─── ...
所有上傳至zipfolder目錄的ZIP包均解壓到根目錄,保留ZIP包名稱。
您需要配置如下參數:
首碼設定為zipfolder/。
目標目錄設定為空白。
選中保留壓縮檔名為路徑目錄。
bucket ├─── zipfolder/ │ ├─── a.zip│ └─── b.zip├─── a/│ ├─── a.txt│ └─── ...└─── b/ ├─── b.txt └─── ...
所有上傳至zipfolder目錄的ZIP包均解壓到destfolder目錄,保留ZIP包名稱。
您需要配置如下參數:
首碼設定為zipfolder/。
目標目錄設定為destfolder。
選中保留壓縮檔名為路徑目錄。
bucket ├─── zipfolder/ │ ├─── a.zip│ └─── b.zip└─── destfolder/ ├─── a/ │ ├─── a.txt │ └─── ... └─── b/ ├─── b.txt └─── ...
選中我已知曉並同意開通Function Compute,通過Function Compute處理壓縮檔。壓縮檔裡面的檔案名稱或檔案夾名不支援非UTF-8或GB 2312編碼後,單擊確定。
修改ZIP包解壓配置
您可以根據自己的需求修改ZIP包解壓的配置。
修改觸發Function Compute的檔案首碼
在OSS控制台的ZIP 包解壓頁面,單擊目標觸發器右側的編輯。
在彈出的函數詳情頁面下的觸發器管理頁簽,單擊目標觸發器右側的編輯。
在編輯觸發器對話方塊,修改檔案首碼,其他參數保持預設配置。
單擊確定。
修改Function Compute配置
在Function Compute控制台的函數詳情頁面下的函數配置頁簽,單擊目標觸發器右側的編輯。
根據實際需求,修改Function Compute相關配置,例如函數執行記憶體、執行逾時時間等。
具體操作,請參見管理函數。
刪除觸發器
刪除後無法恢複,且不能繼續使用當前觸發器觸發函數。執行中的任務會繼續進行。
在函數詳情頁面下的觸發器管理頁簽,單擊目標觸發器右側的刪除。
在彈出的對話方塊,單擊刪除。