使用函数计算打包下载OSS文件-阿里云开发者社区

开发者社区> rockuw> 正文

使用函数计算打包下载OSS文件

简介: 需求 打包下载OSS上存储的多个文件 方案 使用函数计算先把多个文件压缩成一个zip,存储到OSS上面,返回zip文件的地址,客户端下载此文件。 函数代码下载zip-oss.zip 实现细节 函数运行环境的磁盘空间是有限的,采用流式下载和上传的方式,只在内存中缓存少量的数据。
+关注继续查看

需求

打包下载OSS上存储的多个文件,例如将OSS上的一个目录打包下载。这样可以节省网络传输的数据,达到减少费用和下载时间的效果。

方案

使用函数计算先把多个文件压缩成一个zip,存储到OSS上面,返回zip文件的地址,客户端下载此文件。一般的客户端都支持跟随HTTP 302跳转地址,所以在完成压缩后,返回一个302的地址,客户端再跟随这个地址下载压缩后的文件包。

zip_oss_high

函数代码下载: zip-oss-code.zip

实现细节

  1. 函数运行环境的磁盘空间是有限的,采用流式下载和上传的方式,只在内存中缓存少量的数据。
  2. 为了加快速度,一边生成zip文件时一边上传到OSS
  3. 上传zip文件到OSS时,利用OSS分片上传的特性,多线程并发上传

zip_oss_low

实验

实验数据

# 文件数 压缩前总大小 压缩后总大小 执行时间
1 7 1.2MB 1.16MB 0.4s
2 57 1.06GB 1.06GB 63s

实验步骤

  1. 在OSS上准备要打包的文件

    • 把文件放在OSS上面一个目录下面
  2. 部署函数

    • 使用fun deploy部署函数
  3. 触发函数(通过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-beijing.fc.aliyuncs.com/2016-08-15/proxy/zip-service/zip-oss/

打开/tmp/my.zip,就是files/目录下所有文件的压缩包。

函数计算是一个按量付费的计算服务,每月都有大量的免费额度可以使用,欢迎免费试用

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
iOS中NSSearchPathForDirectoriesInDomains函数
<h1 style="padding:0px; margin:20px 0px 10px; line-height:43.20000076293945px; font-size:24px; color:rgb(51,51,51); font-family:Verdana,sans-serif,宋体"> <span style="padding:0px; margin:0px; font-
1251 0
Android 开发者如何使用函数式编程 (二)
本文讲的是Android 开发者如何使用函数式编程 (二),在上一篇帖子中,我们学习了纯粹性*、副作用和排序**。在本部分中,我们将讨论不变性和并发。
957 0
php移动文件的函数 move_uploaded_file()和copy
最近遇到的问题就是:用户提交一个图片,我这边给缩放成三种格式的大小,缩放的方法存在,所以我这边直接就调用三次,结果只有一张图片上传,采用循环调用的方法还是只有一个图片,后来发现 提交文件的时候有一个移动函数 move_uploaded_file(),这个函数虽然多次调用但是只能执行一次,原因就在于...
567 0
阿里云函数计算发送短信单文件轻量版
本文实现了使用阿里云《函数计算》+《短信服务》发送短信的简单功能,官方短信服务SDK功能全面,但较为冗杂,二爷精简了官方SDK,实现了一段代码(单文件)发送短信的功能。 阅读本文,你需要先了解阿里云函数计算、阿里云短信服务的基本常识。 试用本代码,需要预先在短信服务中申请短信签名、短信模板。
2329 0
如何在函数计算中使用结构化的用户日志
目前函数计算默认会将用户的标准输出写入到用户指定的 logstore ,如果使用了 `logger.log()` `console.log()` 这类函数还会带上时间戳及requestID。 通常情况下,对于普通用户来说这已经可以做一些问题调查和调试了。 但在很多情况下,我们可能需要做自定义的特定字段的查询,例如比较数字大小,比较字符串长度,做柱状图、饼图,曲线图等等。本文会介绍如何在函数
1149 0
PHP 使用 OSS上传文件
PHP 使用 OSS上传文件
2902 0
IDA反汇编/反编译静态分析iOS模拟器程序(三)函数表示与搜索函数
打开IDA一般都是去搜索函数,可以说函数是IDA工程的基本单位吧,数据结构什么的都是为函数服务而已。函数列表在界面左侧的Functions Window: 可以看到,UIKit有27789个函数呢。
870 0
xcode反汇编调试iOS模拟器程序(三)查看Objective-C函数与参数
在Objective-C函数的入口处(第一行)加断点,可用esp指针来探查参数。 以esp为基址,往后的偏移分别是: 0:函数执行完毕后的返回地址(不是返回值的地址哦) 4:对象实例的指针,即self指针 8:selector,实际是一个...
973 0
lambda匿名函数使用
#!/usr/bin/pythonfun=lambda x:x*x-xprint fun(3)
438 0
+关注
rockuw
Serverless | Function Compute
10
文章
63
问答
来源圈子
更多
专注Serverless、微服务、函数计算等
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载