使用函数计算来打包下载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