使用函數計算來打包下載OSS文件
需求
打包下載OSS上存儲的多個文件
方案
使用函數計算先把多個文件壓縮成一個zip,存儲到OSS上麵,返回zip文件的地址,客戶端下載此文件。
函數代碼下載zip-oss.zip
實現細節
- 函數運行環境的磁盤空間是有限的,采用流式下載和上傳的方式,隻在內存中緩存少量的數據。
- 為了加快速度,一邊生成zip文件時一邊上傳到OSS
- 上傳zip文件到OSS時,利用OSS分片上傳的特性,多線程並發上傳
實驗
實驗數據
# | 文件數 | 壓縮前總大小 | 壓縮後總大小 | 執行時間 |
---|---|---|---|---|
1 | 7 | 1.2MB | 1.16MB | 0.4s |
2 | 57 | 1.06GB | 1.06GB | 63s |
實驗步驟
- 在OSS上準備要打包的文件
- 把文件放在OSS上麵一個目錄下麵
- 觸發函數(通過API網關)
- 使用curl命令直接調用函數
cat <<EOF > event.json
{
"region": "cn-shanghai",
"bucket": "fc-test-tianlong-wu",
"source-dir": "files/"
}
EOF
curl -v -L -o /tmp/my.zip -H "Content-Type: application/json" -d @./event.json \
{apigateway-domain}-cn-shanghai.alicloudapi.com/zip?redirect=true
最後更新:2017-07-28 23:35:31