对象存储OSS提供ZIP文件自动解压功能。配置解压规则后,您上传到OSS指定路径的ZIP文件都会被自动解压。

前提条件

  • 已开通函数计算服务。您可以在函数计算的 产品详情 页面开通函数计算服务。

  • 华东1(杭州)、华东2(上海)、华北1(青岛)、华北2(北京)、华北 3(张家口)、华北5(呼和浩特)、华南1(深圳)、西南1(成都)、中国香港、新加坡、澳大利亚(悉尼)、马来西亚(吉隆坡)、印度尼西亚(雅加达)、日本(东京)、德国(法兰克福)、英国(伦敦)、美国(弗吉尼亚)、美国(硅谷)、印度(孟买) 地域的存储空间支持ZIP包解压。

背景信息

ZIP包解压结合函数计算完成ZIP文件的解压工作,解压流程如下图所示。

匹配解压规则的ZIP文件在上传到OSS后,会自动触发函数计算进行解压。文件解压完成后,会存储至OSS的指定目录中。

注意事项

  • 建议使用UTF-8或GB 2312编码命名您的文件或文件夹,否则可能会出现解压后的文件或文件夹名称出现乱码、解压过程中断等问题。

  • 冷归档存储类型的文件需先解冻再解压。

  • 归档存储类型的文件,如果所在Bucket未开启归档直读,需先解冻再解压。

  • 解压单个压缩包的最大时间是2小时,超过2小时未完成的任务会解压失败。

  • ZIP包内的单个文件大小建议不超过1 GB,否则可能解压失败。

  • ZIP包解压功能是增值服务,函数计算会根据解压执行时间计算费用。更多信息,请参见 计费方式

配置ZIP包解压规则

  1. 登录 OSS管理控制台

  2. 单击 Bucket 列表 ,然后单击目标Bucket名称。

  3. 在左侧导航栏,选择 数据处理 > ZIP包解压

  4. 单击 ZIP包解压 ,然后在 ZIP包解压 面板配置ZIP包解压规则。

    • 参数说明

      参数

      是否必选

      说明

      服务授权

      授予函数计算读写OSS和执行函数的权限。

      单击 授权 按钮,之后按照提示完成授权。

      触发器授权

      授予OSS访问函数计算的权限。

      单击 授权 按钮,之后按照提示完成授权。若已完成授权,此项显示为 触发器角色

      前缀

      配置触发函数计算的文件前缀。您上传指定前缀的ZIP文件或将ZIP文件上传至指定目录会触发函数计算。置空此项则匹配所有上传的ZIP文件。

      重要

      置空此项可能会触发循环执行,建议您配置文件前缀。更多信息,请参见 如何避免循环执行

      目标目录

      填写ZIP文件解压后存放的目录。置空此项,函数计算会将ZIP文件解压到当前Bucket的根目录。若您需要在目标目录中保留ZIP文件名,则选中 保留压缩文件名为路径目录 ;若您不需要保留ZIP文件名,直接将解压后的文件存放在目标目录,则选中 直接解压到目标目录中 。配置详情请参见以下配置示例。

      警告

      为避免影响OSS-HDFS服务的正常使用或者引发数据污染、数据丢失的风险,在开通了OSS-HDFS服务的Bucket中配置ZIP包解压规则时,禁止将 目标目录 填写为 .dlsdata/

    • 配置示例

      场景

      配置方法

      解压后的文件结构

      所有上传至 zipfolder 目录的ZIP包均解压到 destfolder 目录,不保留ZIP包名称。

      • 前缀 设置为 zipfolder/

      • 目标目录 设置为 destfolder

      • 选中 直接解压到目标目录中

      bucket  
      ├─── zipfolder/   
      │    ├─── a.zip
      │    └─── b.zip
      └─── destfolder/
           ├─── a.txt
           ├─── b.txt
           └─── ...

      所有上传至 zipfolder 目录的ZIP包均解压到根目录,保留ZIP包名称。

      您需要配置如下参数:

      • 前缀 设置为 zipfolder/

      • 目标目录 设置为空。

      • 选中 保留压缩文件名为路径目录

      bucket  
      ├─── zipfolder/   
      │    ├─── a.zip
      │    └─── b.zip
      ├─── a/
      │    ├─── a.txt
      │    └─── ...
      └─── b/
           ├─── b.txt
           └─── ...

      所有上传至 zipfolder 目录的ZIP包均解压到 destfolder 目录,保留ZIP包名称。

      您需要配置如下参数:

      • 前缀 设置为 zipfolder/

      • 目标目录 设置为 destfolder

      • 选中 保留压缩文件名为路径目录

      bucket  
      ├─── zipfolder/   
      │    ├─── a.zip
      │    └─── b.zip
      └─── destfolder/
           ├─── a/
           │    ├─── a.txt
           │    └─── ...
           └─── b/
                ├─── b.txt
                └─── ...
  5. 选中 我已知晓并同意开通函数计算,通过函数计算处理压缩文件。压缩文件里面的文件名或文件夹名不支持非UTF-8或GB 2312编码 后,单击 确定

修改ZIP包解压配置

您可以根据自己的需求随时修改ZIP包解压的配置。

  • 修改前缀

    1. 进入 ZIP包解压 页签。

    2. 单击目标触发器右侧的 编辑 跳转到函数计算控制台。

    3. 在弹出的 修改触发器 面板修改 触发规则 区域的 前缀 ,其他参数建议保持默认。

    4. 单击 确定

  • 修改函数计算配置

    1. 进入 ZIP包解压 页签。

    2. 单击目标触发器右侧的 编辑 跳转到函数计算控制台。

    3. 在弹出的 修改触发器 面板单击 取消

    4. 单击 概览 页签,之后单击 修改配置

    5. 在弹出的 配置函数 页面修改函数配置。

      您可以根据实际需求修改 函数执行内存 超时时间 环境变量

      • 函数执行内存 :根据您处理的文件大小来选择,若您的ZIP文件较小,可以选择更小规格的函数执行内存来节省费用。

      • 超时时间 :函数在规定时间内未能执行,函数计算会返回超时错误。建议配置合适的超时时间,避免函数执行超时。

      • 环境变量 :修改此项的值会修改解压文件的目标目录。

    6. 单击 提交

删除ZIP包解压规则

对于不需要的ZIP包解压规则,您可以手动删除。

  1. 进入 ZIP包解压 页签。

  2. 单击目标触发器右侧的 编辑 跳转到函数计算控制台。

  3. 在弹出的 修改触发器 面板单击 取消

  4. 单击 触发器 页签,之后单击目标触发器右侧的 删除

  5. 在弹出的对话框单击 确定