有奖捉虫:办公协同&微信生态&物联网文档专题 HOT

操作场景

本文介绍如何使用腾讯云云函数 SCF 实现对象存储 COS 中的文件自动解压缩。其中 COS 用于存储上传后需要解压的 .zip 文件及解压后的文件,SCF 实现对 .zip 文件上传至 COS 后的自动解压缩。

操作步骤

创建存储桶

1. 登录 对象存储控制台
2. 在左侧导航中,单击存储桶列表,进入存储桶列表页面。
3. 单击创建存储桶
4. 在弹出的创建存储桶对话框中,配置如下信息:
4.1 基本信息



主要参数信息如下,其余参数请保持默认设置:
名称:自定义 Bucket 名称,本文以 mybucket 为例。
所属地域:选择“广州”。
访问权限:选择“私有读写”。
4.2 高级可选配置
该设置项为可选,您可按需进行设置。参数详情请参见 创建存储桶
4.3 确认配置
对存储桶的配置信息进行确认。如需修改,单击上一步即可。
5. 确认信息无误后,单击创建,即可创建存储桶。在存储桶列表界面中,您可以看到刚才已创建的存储桶。

配置解压函数

1. 在存储桶详情页面,选择左侧导航中的函数计算,单击 ZIP 文件解压函数,进入 ZIP 文件解压函数配置页面。
2. 单击添加函数。在弹出的窗口中配置如下信息。如下图所示:



函数名称:将自动在对应地域下创建函数,函数名称作为函数的唯一标识名称,创建后不可修改。您可以在 云函数控制台 上查看该函数。
事件类型:事件是指触发云函数的操作。以上传操作为例,上传的方式可能是调用 PUT Object 接口或 POST Object 接口,当选择事件为Put 方法创建时,只有通过 PUT Object 接口上传的压缩包会触发解压缩。
注意
如果您的文件是通过简单上传、分块上传或跨地域复制等渠道上传到存储桶中,建议选择全部创建事件。
触发条件:指压缩包上传到指定路径时会触发云函数。如果选择指定前缀,则仅当压缩包上传到指定前缀路径下时才会触发云函数。如果选择整个存储桶,则压缩包上传到存储桶任意位置均会触发。
注意
如果配置的目标文件前缀与触发条件存在包含关系,可能导致循环触发,请尽量避免这种情况。例如目标前缀为 prefix,触发条件为 pre,当上传一个 pref 的压缩包时,将触发循环解压。
SCF授权:解压缩需要授权云函数从您的存储桶中读取压缩包,并将解压缩后的文件上传到您指定的位置。因此需要添加此授权。
3. 单击下一步,在弹出的窗口中配置如下信息:
解压格式:指当前可支持的压缩格式,目前仅支持 ZIP 格式压缩包解压。
投递存储桶:选择解压后的文件所存放的存储桶。
投递的路径:将匹配到的文件解压到此目标目录下。为防止循环触发产生不必要的费用,建议您设置不同于前缀的目标目录。
额外的前缀:是压缩包解压缩后,文件存储的具体路径。如果不设置则默认为存储桶根目录。详情可参见 通过控制台配置 ZIP 文件自动解压
禁止递归触发:选择开启,则解压后的文件中如果包含 ZIP 包,不允许其触发解压;选择关闭,则解压后的文件中如果包含 ZIP 包,允许其触发解压。
回调地址:根据实际需求,输入回调地址。
4. 确认配置无误后,单击确认,即可看到函数已添加完成。 对新创建的函数进行查看日志操作,可查看解压缩的历史运行情况。当解压出现报错时,您可以通过选择查看日志,快速跳转到云函数控制台查看日志错误详情。如果需要删除不使用的文件解压缩规则,可以选择删除并删除相关配置。

测试函数功能

1. 在 Bucket 管理页面,选择左侧的文件列表
2. 在文件列表页面,单击上传文件,选择任意一个 .zip 压缩文件上传。如下图所示:


3. 刷新当前存储桶,检查是否生成解压后的文件。
4. 切换至函数计算查看日志或进入 Serverless 控制台 查看执行结果,在日志查询中可以看到打印出来的日志信息。