當您需要批量上傳檔案、按特定目錄結構上傳檔案、上傳完整的檔案或對檔案快速進行資源分發時,可以配置解壓規則,上傳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相關費用,Bucket資源和Function Compute資源通過Bucket的內網網域名稱進行傳輸,內網網域名稱傳輸資料免流量費用:
OSS:請求Bucket資源的請求數計費和儲存費用。更多資訊,請參見OSS計費概述。
Function Compute:vCPU使用量費用、記憶體使用量量和磁碟使用量費用,按執行時間計費。更多資訊,請參見FC計費概述。
例如:ZIP包解壓執行了5分鐘,vCPU是2核,記憶體是3GB,預設建立的臨時隱藏檔的硬碟大小為 10 GB,費用計算如下:
資源使用項
單位
說明
計費樣本
vCPU使用量
vCPU*秒
活躍vCPU使用量 = vCPU規格 × 執行時間長度(秒)
函數配置的vCPU規格為2核,單次運行了300s,則單次啟動並執行vCPU使用量為2 ×300 = 600 vCPU*秒
記憶體使用量量
GB*秒
記憶體使用量量 = 記憶體規格× 執行時間長度(秒)
函數配置的記憶體規格為3GB,單次運行了300s,則單次啟動並執行記憶體使用量量為3 ×300 = 900 GB*秒
磁碟使用量
GB*秒
磁碟使用量 = 磁碟規格 × 執行時間長度(秒)
說明:512 MB以下磁碟使用量免費。
函數配置的臨時硬碟大小為10 GB,單次運行了300s,則單次啟動並執行磁碟使用量為(10-512/1024) × 300 = 2850 GB*秒。
使用限制
儲存類型限制:冷歸檔儲存類型的檔案需先解凍再解壓;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,然後單擊確定。
修改ZIP包解壓配置
您可以根據自己的需求修改ZIP包解壓的配置。
修改觸發Function Compute的檔案首碼
在OSS控制台的ZIP 包解壓頁面,單擊目標觸發器右側的編輯。
在彈出的函數詳情頁面下的觸發器管理頁簽,單擊目標觸發器右側的編輯。
在編輯觸發器對話方塊,修改檔案首碼,其他參數保持預設配置。
單擊確定。
修改Function Compute配置
在Function Compute控制台的函數詳情頁面下的函數配置頁簽,單擊目標觸發器右側的編輯。
根據實際需求,修改Function Compute相關配置,例如函數執行記憶體、執行逾時時間等。
具體操作,請參見管理函數。
刪除觸發器
刪除後無法恢複,且不能繼續使用當前觸發器觸發函數。執行中的任務會繼續進行。
在函數詳情頁面下的觸發器管理頁簽,單擊目標觸發器右側的刪除。
在彈出的對話方塊,單擊刪除。
