使用函数计算实现OSS压缩文件的自动解压

当您需要自动解压缩上传到OSS的压缩文件时,可以通过函数计算的应用中心一键部署应用来实现。当匹配解压规则的ZIP文件上传到对象存储后,自动触发函数计算进行解压。文件解压完成后,函数计算会将解压后的文件上传至对象存储的指定目录中。

背景信息

流程图如下。

image

注意事项

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

  • 向Bucket上传压缩文件时,请不要选择归档存储或冷归档存储类型,否则无法正常触发函数执行。

  • 向Bucket上传的压缩文件中,单个文件大小不要超过1 GB,否则可能导致解压失败。

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

  • 默认设置的函数执行时长为2小时,您可以调整函数的执行超时时间来满足业务需求。

前提条件

操作步骤

  1. 登录函数计算控制台,在左侧导航栏,单击应用
  2. 应用页面,单击创建应用,然后在创建应用页面,选择创建应用的方式。

    本文以通过模板创建应用方式为例进行介绍。

  3. 创建应用页面下方的模板区域,选择热门模板页签,找到OSS上传zip文件自动解压,光标放到该卡片,然后单击立即创建

  4. 创建应用页面,设置以下配置项,然后单击创建并部署默认环境

    主要配置项说明如下,其余配置项选择默认值即可。

    配置项

    说明

    基础配置

    部署类型

    选择直接部署

    角色名称

    默认为角色AliyunFCServerlessDevsRole。如果现有权限不足,单击+添加策略,在弹出的对话框选择要添加的策略,然后单击添加

    高级配置

    RAM角色ARN

    选择OSS触发函数时所用的角色。请确保已为该角色配置AliyunOSSFullAccessAliyunFCDefaultRolePolicy权限策略。

    OSS存储桶名

    选择已创建的Bucket。

    前缀

    设置文件前缀。默认为src

    重要

    请确保同一Bucket下的不同触发器设置的文件前缀不要重复,否则会导致应用创建失败。

    解压目标目录

    设置文件解压后的目标存储目录。默认为dst

    说明

    为了防止循环触发函数,请将此目录设置为不同于前缀的目标目录。

    是否保留压缩文件名为路径目录

    设置是否保留压缩文件名为路径的目录。取值说明如下:

    • true:保留压缩文件名为路径目录。例如,设置的解压目标目录target,压缩文件名为source.zip,解压后文件路径为target/source/...

    • false:直接解压到目标目录中。上述示例中,解压后文件路径为target/...

    触发器RAM角色ARN

    默认为角色AliyunOSSEventNotificationRole,OSS使用此角色发送事件通知调用函数。

  5. 测试应用。

    1. 登录对象存储OSS控制台,单击您上一步创建应用时选择的Bucket。

    2. 在目标Bucket,上传.zip文件至与您设置的前缀匹配的目录时,将触发应用所属函数执行,自动解压.zip文件并保存至您设置的解压目标目录

      例如,您设置的前缀source解压目标目录target。将.zip文件上传至sourcesource1时,均触发函数执行,并自动解压保存文件至target

相关文档

  • 本文介绍的通过函数计算的应用中心一键部署文件解压缩应用只支持ZIP文件的解压缩,如您需要其他解压缩其他格式,请参见decompress-oss

  • 如果您仅需要解压上传到OSS的ZIP文件,可以直接在OSS配置ZIP文件自动解压,具体请参见ZIP包解压

  • 如果您需要使用函数计算实现打包下载OSS的文件,请参见使用函数计算打包下载OSS文件