1、 前往 CAM 控制台进入 角色-创建角色-腾讯云产品服务,选择 云函数 (scf),点击下一步
2、 在策略搜索框中输入 QcloudCOSDataFullControl,并勾选该策略,点击下一步
3、 角色名称输入 SCF_COS_ZIP_FILE_ROLE,点击完成
1、 前往 SCF 控制台,选择你要的地域,然后点击创建
2、 创建方式选择 模板创建,模糊搜索输入 Nodejs12.16,zip文件压缩,选择下图指定的模板,点击下一步
3、 基础配置:函数名称输入 scf-cos-zip-file
4、 点击展开高级配置,内存选择 1024MB,运行角色勾选 启用,并选择刚刚创建的 CAM 角色 SCF_COS_ZIP_FILE_ROLE。
-
如果您希望请求在压缩结束时再同步返回执行结果(包含生成的 ZIP 压缩包 URL),请在执行超时时间输入
1800,这种一般是针对待压缩文件较少,且执行时间小于 1800s 的场景(API 网关的超时时间上限为 1800s)。 -
如果您希望**请求在触发压缩任务后立刻响应,响应头部包含一个可供查询执行情况的字段 X-Scf-Reqid **,然后异步地执行压缩函数,请先执行配置勾选
异步执行和状态追踪,然后在执行超时时间输入86400,这种一般针对待压缩文件较多,执行时间较长的场景。 点击完成
1、 前往API网关控制台-服务,选择地域,然后点击创建
2、 服务名输入 scf_cos_apigateway,访问方式勾选公网,备注输入 COS 和 SCF 联动服务的 API 网关,点击提交
3、 前往API网关控制台-密钥,点击创建,密钥名输入 scf_cos_apigateway_key,点击提交
4、 前往API网关控制台-使用计划,点击新建,使用计划名输入 scf_cos_apigateway_plan,点击提交
5、 进入刚刚创建的使用计划 scf_cos_apigateway_plan 的详情,点击 绑定密钥,选中刚刚创建的 scf_cos_apigateway_key 密钥对,点击提交

6、 前往API网关控制台-服务,点击进入刚刚创建的 scf_cos_apigateway 的详情,选择顶部菜单进入 使用计划
7、 点击绑定,生效环境选择 发布,使用计划勾选刚刚创建的 scf_cos_apigateway_plan,点击提交
8、 选择顶部菜单进入管理API,点击创建,进入新建API页面
9、 API名称输入 /scf-cos-zip-file,路径输入 /scf-cos-zip-file,请求方法选择 POST,鉴权类型选择 密钥对,勾选 支持CORS,点击下一步
10、 后端类型选择 云函数SCF,云函数的下拉框选择刚刚创建的 scf-cos-zip-file 云函数,后端超时输入 1800,点击下一步
11、 返回类型选择 JSON,点击完成,弹窗中点击 发布服务

12、 点击刚刚创建的 API 操作栏的更多-调试按钮,进入API调试页面
Content-Type选择application/json请求body输入如下模板,并将YOUR_BUCKET替换为你的 COS 存储桶名,例如:mybucket-1250000000。YOUR_REGION替换为你的 COS 存储桶地域,例如:ap-guangzhou。YOUR_ZIP_FILE_KEY替换为你希望的压缩包名称,例如:mypack.zip。sourceList: 替换为你希望进行 zip 打包的文件 url。
{
"bucket": "YOUR_BUCKET",
"region": "YOUR_REGION",
"key": "YOUR_ZIP_FILE_KEY",
"sourceList": [
{
"url": "https://bucket-1250000000.cos.ap-guangzhou.myqcloud.com/dir1/1.png"
},
{
"url": "https://bucket-1250000000.cos.ap-guangzhou.myqcloud.com/dir2/2.png",
"renamePath": "2.png"
},
{
"url": "https://bucket-1250000000.cos.ap-guangzhou.myqcloud.com/dir3/3.png",
"renamePath": "dir3-new/3.png"
}
]
}
这里以 Nodejs 语言测试为例,请先确保本地安装 nodejs 和 npm
1、 下载测试代码包并解压
2、 对 index.js 中的参数进行替换
YOUR_SECRET_ID: 替换为你的密钥对的SecretId,可以前往 API网关控制台-密钥 查看YOUR_SECRET_KEY: 替换为你的密钥对的SecretKey,可以前往 API网关控制台-密钥 查看YOUR_API_DOMAIN: 替换为你API网关的服务域名,可以前往 API网关控制台-服务,进入刚刚创建的scf_cos_apigateway服务的详情,点击基础配置,复制公网访问地址指定的域名,例如:service-xxxxx-1250000000.gz.apigw.tencentcs.comYOUR_BUCKET: 替换为你的 COS 存储桶名,例如:mybucket-1250000000YOUR_REGION: 替换为你的 COS 存储桶地域,例如:ap-guangzhouYOUR_ZIP_FILE_KEY: 替换为你希望的压缩包名称,例如:mypack.zipsourceList: 替换为你希望进行 zip 打包的文件,例如:
/**
* 这里压缩配置的含义是:
* 将 dir1/1.png,dir2/2.png,dir3/3.png 打入 ZIP 压缩包,其中
* 1. dir1/1.png 在压缩包中路径为:dir1/1.png
* 2. dir2/2.png 在压缩包中路径为:2.png
* 3. dir3/3.png 在压缩包中路径为:dir3-new/3.png
*/
sourceList: [
{
url: 'https://mybucket-1250000000.cos.ap-guangzhou.myqcloud.com/dir1/1.png',
},
{
url: 'https://mybucket-1250000000.cos.ap-guangzhou.myqcloud.com/dir2/2.png',
renamePath: '2.png',
},
{
url: 'https://mybucket-1250000000.cos.ap-guangzhou.myqcloud.com/dir3/3.png',
renamePath: 'dir3-new/3.png',
},
],
- 在根目录下执行
npm run test,可以看到执行日志
{"status":200,"requestId":"2f37262cc39e298817c7f35068a66891","data":{"code":0,"data":{"Location":"mybucket-1250000000.cos.ap-guangzhou.myqcloud.com/mypack.zip","Bucket":"mybucket-1250000000","Key":"mypack.zip","ETag":"\"35bb5e5f050e22bed8f443d8da5dbfb8-1\""},"message":"cos zip file success","error":null}}
- 前往你的存储桶,可以看到根路径下创建了一个
mypack.zip的文件 - 下载文件
mypack.zip文件,解压,可以看到对应的文件和目录结构
























