请直接参考 start-zip-oss, 直接使用控制台应用中心可视化部署或者使用 s 工具部署。
打包下载 OSS 上存储的多个文件,例如将OSS上的一个目录打包下载。这样可以节省网络传输的数据,达到减少费用和下载时间的效果。
使用函数计算先把多个文件压缩成一个 zip,存储到 OSS上面,返回 zip 文件的地址,客户端下载此文件。一般的客户端都支持跟随 HTTP 302 跳转地址,所以在完成压缩后,返回一个302的地址,客户端再跟随这个地址下载压缩后的文件包。
git clone https://github.com/awesome-fc/zip-oss.git
如果没有安装 git, 可以直接在浏览器输入 https://codeload.github.com/awesome-fc/zip-oss/zip/master
下载代码 zip 包
-
在OSS上准备要打包的文件
- 把文件放在OSS上面一个目录下面, 比如
files
目录
- 把文件放在OSS上面一个目录下面, 比如
-
触发函数(通过HTTP trigger地址)
- 使用curl命令直接调用函数
cat <<EOF > event.json
{
"region": "cn-shanghai",
"bucket": "fc-test-tianlong-wu",
"source-dir": "files/"
}
EOF
curl -v -L -o /tmp/my.zip -d @./event.json https://123456789.cn-shanghai.fc.aliyuncs.com/2016-08-15/proxy/zip-service/zip-oss/
打开/tmp/my.zip
,就是files/
目录下所有文件的压缩包。
- 函数运行环境的磁盘空间是有限的,采用流式下载和上传的方式,只在内存中缓存少量的数据。
- 为了加快速度,一边生成zip文件时一边上传到OSS
- 上传zip文件到OSS时,利用OSS分片上传的特性,多线程并发上传
# | 文件数 | 压缩前总大小 | 压缩后总大小 | 执行时间 |
---|---|---|---|---|
1 | 7 | 1.2MB | 1.16MB | 0.4s |
2 | 57 | 1.06GB | 1.06GB | 63s |