You need to enable JavaScript to run this app.
导航
使用函数服务实现 TOS 上传文件实时自动解压
最近更新时间:2024.12.25 17:05:42首次发布时间:2023.07.27 16:22:32

本文为您介绍如何通过函数服务(veFaaS)将对象存储(TOS)上传的 Zip 文件实时自动解压。

场景介绍

实际业务场景中,经常需要上传文件至 TOS 进行存储和使用。为了提高效率,业务方通常会将所有文件打包成 Zip 包进行上传。然而,实际使用时还是需要手动解压对应的压缩包,十分繁琐不便。通过函数服务,结合 TOS 触发器,可以帮助您实现 TOS 上传后实时自动解压文件,提高工作效率。

使用限制

  • 建议避免使用 Mac 工具压缩文件。如必须使用 Mac 工具压缩文件,文件名称请勿使用中文。否则将造成解压后的文件名称显示为乱码,可能无法正常使用。
  • TOS Bucket 和 veFaaS 函数需要在同一个地域(Region)。

前提条件

  • API 访问密钥
    已获取当前操作账号的 Access Key(AK 和 SK),并确保该密钥具有 TOSFullAccess。具体操作可参见 Access Key(密钥)管理创建用户并授权
  • 对象存储
    • 已开通火山引擎对象存储。
    • 已创建存储桶(TOS Bucket),详细操作可参见 创建存储桶
  • 函数服务
    已开通函数服务。

操作步骤

步骤一:使用代码模板创建函数

使用 vefaas-python38-tos-auto-unzip 代码模板创建函数,并配置代码信息。

  1. 登录 函数服务控制台

  2. 在顶部导航栏,选择目标地域。

  3. 在函数列表页面,单击 创建函数

  4. 在创建函数页面,主要参数按如下说明配置,其余参数请参见 创建事件函数 按需配置。
    alt

    配置项说明
    创建函数的方式选择 创建「事件函数」
    基础配置
    名称根据界面提示的命名规则,自定义函数名称。创建函数成功后名称不可修改。
    函数代码
    运行时选择 Python 3.8
    部署方式选择 函数模板 > vefaas-python38-tos-auto-unzip
  5. 单击 确定,完成函数的创建。
    函数创建成功后,系统自动跳转到该函数详情页的 代码 页签。

  6. 在函数的 代码 页签,代码模板已提供自动解压业务代码,您只需配置以下信息。
    alt

    配置项说明
    ak输入前提条件中准备的 AK。
    sk输入前提条件中准备的 SK。
    endpoint输入内网的访问域名,使用 Endpoint(地域节点)。

    region

    地域。
    TOS Bucket 必须与函数部署在同一地域。

    destinationTOS 上传的 Zip 文件解压后存放的路径。
  7. 单击 保存,保存已修改的代码。

步骤二:发布函数

将函数的当前代码和配置发布至线上。

  1. 在函数详情页面,单击右上角的 发布

  2. 函数版本 使用 Latest,其余参数按需填写或保持默认值。

  3. 单击 确定, 函数进入发布中。函数发布成功后如下图所示。

    alt

步骤三:配置 TOS 触发器

为当前函数配置 TOS 触发器,设置触发函数的规则。

  1. 在函数详情页面,切换至 触发器 页签,单击 创建触发器

  2. 按要求配置触发器信息。更多参数介绍请参见 创建 TOS 触发器
    alt

    配置项说明
    触发器类型选择 TOS 触发器。
    触发器名称根据界面提示规则自定义触发器名称。
    TOS Bucket选择前提条件中准备的 TOS Bucket。

    触发事件

    本示例选择 tos:ObjectCreated:Puttos:ObjectCreated:CompleteUpload

    注意

    有大文件分片上传的情况下,需要同时选择 tos:ObjectCreated:Puttos:ObjectCreated:CompleteUpload。若无分片上传的情况,可只选择 tos:ObjectCreated:Put,通过简单上传对象后触发。

    过滤条件通过设置过滤条件,可精确匹配需要监听的事件所包含的对象范围,有效降低触发频率,减少成本。本示例设置前缀 为 origin,即向/origin路径下上传 Zip 文件将触发自动解压上传任务。
  3. 单击 确定,完成 TOS 触发器创建。

    alt

结果验证

  1. 在当前函数的 触发器 页签下,选择刚才创建的 TOS 触发器,单击 Bucket 名称,跳转至对象存储控制台的对应 Bucket。

  2. 进入origin/目录,单击 上传文件,从本地提交一个 Zip 文件。

  3. 进入uncompressed/目录,可看到上传的文件成功被解压至uncompressed/origin目录下。