SCF函数同个COS目录前缀后缀实现ZIP自动解压缩功能
一、SCF配置创建角色运行:
Ps:
1、因本段代码运行时需调用COSAPI接口,为避免秘钥对写死到代码里,因此采取运用角色来承载临时密钥方法(SCF函数运行时会自动切获取临时秘钥)
2、QcloudAccessForCOSBatchRole载体:腾讯云对象存储批量处理服务(COSBatchOperations)操作权限包括但不限于以下权限:增删查改对象存储(COS)对象、对象ACL、对象数据元数据信息等。
- 角色创建:
登录控制台-》访问管理-》角色-》新建角色-》选择角色载体-》选择腾讯云产品服务-》QcloudAccessForCOSBatchRole载体勾选后下一步确认,具体步骤如下截图:
二、创建SCF函数及配置
1)登录云函数控制台,并选择和COS同地域,新建函数https://console.cloud.tencent.com/scf/list?rid=4&ns=default
1)自定义命名函数名,选择Nodejs8.9环境,搜索zip,选择模板函数“zip格式文件解压”然后点击下一步:
2)配置步骤如下:
函数名:随意值
运行环境:Nodejs8.9
创建方式:模板函数
模版搜索:zip格式文件解压
选择:zip格式文件解压
3)添加函数配置
运行角色:可以选择任意有权限操作源&&目标存储桶的角色,例如“SCF_QcsRole”
高级配置-环境变量:
注:后续想要修改前缀路径,可以直接修改环境变量就行
targetBucket:目标存储桶(解压后,解压出来的文件存放的Bucket)
targetRegion:目标存储桶的地域
targetPrefix:目标存储桶存放的前缀,例如target/
4)点击完成
5)在“函数配置”项,点击“编辑”
内存:896MB
超时时间:900
SCF权限配置:
注:
1) 针对角色更细粒度的权限控制,如只针对某个COS Bucket进行配置,可以到访问管理选中角色,基于策略模板自定义配置。
2) 网络配置建议开启:通过SCF云函数配置VPC,可确保函数和COS间的通信走内网方式。
6)在“触发方式”项,创建触发器
触发方式:COS触发
COSBucket:sourceBucket,选择你的源Bucket(该Bucket下上传的zip文件会触发解压函数)
事件类型:和创建相关的事件,例如:全部创建,Put方法创建,Post方法创建,Copy方法创建,CompleteMultipartUpload方法创建等
前缀过滤:sourcePrefix,zip文件存放的目录,例如source/
后缀过滤:必须为.zip
注:触发器配置成功后,需等待10s左右,再到COS控制台上进行测试验证,另外还可以到SCF函数控制台查看运行日志。
7)在“运行日志”项,查看函数日志信息
8)在你指定的sourceBucket的sourcePrefix下上传zip包,然后查看targetBucket的targetPrefix下是否出现解压的文件
验证测试是成功的,如下截图:
每一个上传的压缩包要保证文件名不一样,否则解压后可能覆盖写,如下情形:zip/1/1.zip
SCF运行监控日志,显示调用成功: