Skip to content

Latest commit

 

History

History
144 lines (115 loc) · 10.4 KB

File metadata and controls

144 lines (115 loc) · 10.4 KB

一、 创建 CAM 角色

1、 前往 CAM 控制台进入 角色-创建角色-腾讯云产品服务,选择 云函数 (scf),点击下一步 enter image description here

2、 在策略搜索框中输入 QcloudCOSDataFullControl,并勾选该策略,点击下一步 enter image description here

3、 角色名称输入 SCF_COS_ZIP_FILE_ROLE,点击完成 enter image description here

二、 创建云函数

1、 前往 SCF 控制台,选择你要的地域,然后点击创建 enter image description here

2、 创建方式选择 模板创建,模糊搜索输入 Nodejs12.16zip文件压缩,选择下图指定的模板,点击下一步 enter image description here

3、 基础配置:函数名称输入 scf-cos-zip-file enter image description here

4、 点击展开高级配置,内存选择 1024MB,运行角色勾选 启用,并选择刚刚创建的 CAM 角色 SCF_COS_ZIP_FILE_ROLE

enter image description here

  • 如果您希望请求在压缩结束时再同步返回执行结果(包含生成的 ZIP 压缩包 URL),请在执行超时时间输入 1800,这种一般是针对待压缩文件较少,且执行时间小于 1800s 的场景(API 网关的超时时间上限为 1800s)。 enter image description here

  • 如果您希望**请求在触发压缩任务后立刻响应,响应头部包含一个可供查询执行情况的字段 X-Scf-Reqid **,然后异步地执行压缩函数,请先执行配置勾选 异步执行状态追踪,然后在执行超时时间输入 86400,这种一般针对待压缩文件较多,执行时间较长的场景。 点击完成 enter image description here enter image description here

三、 创建 API 网关

1、 前往API网关控制台-服务,选择地域,然后点击创建 enter image description here

2、 服务名输入 scf_cos_apigateway,访问方式勾选公网,备注输入 COS 和 SCF 联动服务的 API 网关,点击提交 enter image description here

3、 前往API网关控制台-密钥,点击创建,密钥名输入 scf_cos_apigateway_key,点击提交 enter image description here

4、 前往API网关控制台-使用计划,点击新建,使用计划名输入 scf_cos_apigateway_plan,点击提交 enter image description here

5、 进入刚刚创建的使用计划 scf_cos_apigateway_plan 的详情,点击 绑定密钥,选中刚刚创建的 scf_cos_apigateway_key 密钥对,点击提交 enter image description here enter image description here

6、 前往API网关控制台-服务,点击进入刚刚创建的 scf_cos_apigateway 的详情,选择顶部菜单进入 使用计划 enter image description here

7、 点击绑定,生效环境选择 发布,使用计划勾选刚刚创建的 scf_cos_apigateway_plan,点击提交 enter image description here

8、 选择顶部菜单进入管理API,点击创建,进入新建API页面 enter image description here

9、 API名称输入 /scf-cos-zip-file,路径输入 /scf-cos-zip-file,请求方法选择 POST,鉴权类型选择 密钥对,勾选 支持CORS,点击下一步 enter image description here

10、 后端类型选择 云函数SCF,云函数的下拉框选择刚刚创建的 scf-cos-zip-file 云函数,后端超时输入 1800,点击下一步 enter image description here

11、 返回类型选择 JSON,点击完成,弹窗中点击 发布服务 enter image description here enter image description here

12、 点击刚刚创建的 API 操作栏的更多-调试按钮,进入API调试页面 enter image description here

  • Content-Type 选择 application/json
  • 请求body 输入如下模板,并将 YOUR_BUCKET 替换为你的 COS 存储桶名,例如: mybucket-1250000000YOUR_REGION 替换为你的 COS 存储桶地域,例如: ap-guangzhouYOUR_ZIP_FILE_KEY 替换为你希望的压缩包名称,例如: mypack.zipsourceList: 替换为你希望进行 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"
    }
  ]
}
  • 点击 发送请求 。如果响应头部中包含 X-Scf-Reqid则说明 SCF 和 API 网关打通成功,这就是云函数的 RequestId,可用于查询云函数的执行日志 enter image description here enter image description here

四、 本地测试

这里以 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.com enter image description here
  • YOUR_BUCKET: 替换为你的 COS 存储桶名,例如: mybucket-1250000000
  • YOUR_REGION: 替换为你的 COS 存储桶地域,例如: ap-guangzhou
  • YOUR_ZIP_FILE_KEY: 替换为你希望的压缩包名称,例如: mypack.zip
  • sourceList: 替换为你希望进行 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 文件,解压,可以看到对应的文件和目录结构