赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 函数计算 FC 3.0
  4. 实践教程
  5. 文件处理
  6. 使用函数计算实现多个文件的打包下载

使用函数计算实现多个文件的打包下载

  • 文件处理
  • 发布于 2025-04-16
  • 0 次阅读
文档编辑
文档编辑

当您需要从对象存储OSS中批量下载多个文件时,可能会遇到批量下载不方便、小文件较多等情况。 您可以通过函数计算将对象存储OSS中的多个文件打包下载至本地,既可以节约时间又可以节省流量和相关费用。

流程及实现细节

流程图

使用函数计算在对象存储OSS中同时下载多个文件的流程图如下:

image
  1. 按需调用函数,指定存储空间及待压缩文件。

  2. 调用函数后,函数计算从对象存储OSS中下载目标文件并压缩成ZIP包。

  3. 函数计算将ZIP包上传到对象存储OSS中。

  4. 函数计算将给您返回目标ZIP文件在对象存储OSS中的地址。

  5. 您可以通过步骤4返回的地址下载目标文件。

实现细节

流程图中步骤2与步骤3实现的原理如下。

image

使用这种调用方式有以下优势:

  • 函数运行环境的磁盘空间是有限的,采用流式下载和上传的方式,在内存中只缓存少量数据。

  • 上传ZIP文件到对象存储OSS时,利用对象存储OSS分片上传的特性,将分片以队列的形式多线程并发上传。

前提条件

  • 已开通函数计算服务。具体操作,请参见开通函数计算服务。

  • 已开通OSS服务并在OSS创建存储空间。具体操作,请参见开通OSS服务并创建存储空间。

  • 已安装并配置Serverless Devs。具体操作,请参见快速入门。

操作步骤

  1. 执行以下命令,初始化项目。

    sudo s init start-zip-oss-v3 -d start-zip-oss-v3

    根据界面提示,依次选择地域,设置函数名称并输入函数的RAM角色。

    image

  2. 执行以下命令,进入项目,并进行项目部署。

    cd start-zip-oss-v3 && s deploy - y

    部署成功后,输出示例如下。记录返回的system_url,用于调用函数时使用。

    region:         cn-hangzhou
    description:    
    functionArn:    acs:fc:cn-hangzhou:1034354682****:functions/zip-oss-func-2m1d
    functionName:   zip-oss-func-jbip
    handler:        main.main_handler
    internetAccess: true
    memorySize:     3072
    role:           acs:ram::1034354682****:role/aliyunfcdefaultrole
    runtime:        python3.9
    timeout:        1800
    triggers: 
      - 
        description:   
        qualifier:     LATEST
        triggerConfig: 
          methods: 
            - GET
            - POST
            - PUT
          authType:           anonymous
          disableURLInternet: false
        triggerName:   http-test
        triggerType:   http
    url: 
      system_url:          https://zip-ossunc-jbip-gvdzx****.cn-hangzhou.fcapp.run
      system_intranet_url: https://zip-ossunc-jbip-gvdzx****.cn-hangzhou-vpc.fcapp.run
    __component:    fc3
  3. 应用部署成功后,调用部署好的函数下载多个文件。

    1. 在start-zip-oss-v3目录下创建event.json文件,并在文件中指定Bucket名称、待下载的文件所在的目录或指定待下载文件名称列表。

      • 通过source-dir指定要下载的文件所在的目录。

        {
          "bucket": "bucketname", 
          "source-dir": "filepath/"
        }
      • 通过source-files指定要下载的文件列表。

        {
          "bucket": "bucketname", 
          "source-files": ["files1.txt","filepath/files2.txt"]
        }
    2. 使用curl命令直接调用函数。

      说明

      请将命令示例中的访问地址更新为您部署应用成功后返回的公网访问地址system_url。

      curl -v -L -o /tmp/my.zip -d @./event.json https://zip-oss-func-zip-oss-****.cn-hangzhou.fcapp.run

      调用成功后,您可以在/tmp文件夹中查看到下载的压缩文件my.zip。同时登录对象存储控制台,在对应Bucket的output目录也可以看到下载的压缩文件。

实验数据

场景

文件数

压缩前总大小

压缩后总大小

执行时间

1

7

1.2 MB

1.16 MB

0.4s

2

57

1.06 GB

0.91 GB

63s

您可以通过以上表格获取以下两个信息:

  • 场景1说明使用函数计算实现多个文件的下载,可以减少文件的存储空间。

  • 场景2说明使用函数计算实现多个文件的下载,可以在短时间内下载大量文件。

相关文档

如果您需要解压上传到OSS的ZIP文件,可以在函数计算部署函数实现ZIP文件自动解压,也可以直接在OSS配置ZIP文件自动解压,具体请参见使用函数计算实现自动解压上传到OSS的ZIP文件和ZIP包解压。

相关文章

使用函数计算实现自动解压上传到OSS的ZIP文件 2025-04-16 14:38

当您需要自动解压缩上传到OSS的压缩文件时,可以通过使用函数计算来实现自动对压缩文件解压,当匹

低成本跨境文件传输 2025-04-16 14:38

本文介绍如何通过OSS加速域名,配合函数计算和Serverless 工作流,快速打造低成本、高效的跨境对象存储数据同步传输系统。

使用函数计算实现网站的文件处理 2025-04-16 14:38

本文介绍如何通过函数计算实现文件管理网站的功能,例如自动解压文件、自动打包压缩、自动处理图片分辨率等。 应用场景 某图片网站数据管理主要

使用函数计算搭建前端CICD系统 2025-04-16 14:38

本文介绍通过函数计算搭建前后端分离架构下的前端静态资源部署服务。

智能家电利用函数计算获取天气信息 2025-04-16 14:38

本文介绍使用函数计算,结合阿里云IoT物联网平台,实现IoT设备获取天气信息的最佳实践。 应用场景

使用函数计算实现OSS压缩文件的自动解压 2025-04-16 14:38

当您需要自动解压缩上传到OSS的压缩文件时,可以通过函数计算的应用中心一键部署应用来实现。当匹配解压规则的ZIP文件上传到

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号