serverless cos -同步-案例-下载资源后打包压缩

580 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

需求

本次需求需要从cos拉文件 在 服务器端压缩好后上传到另一个cos中

概念

云api

cloud.tencent.com/document/pr… 通过云 API,您只需少量代码即可快速操作云产品。为方便您快速轻松调用云 API 来管理腾讯云资源,云 API 提供了 API Explorer、腾讯云命令行工具 TCCLI、SDK、云 API 平台及 API Inspector 工具。

腾讯云开发者工具套件(SDK)3.0

cloud.tencent.com/document/sd… 目前已经支持 CVM、VPC、CBS 等产品,后续所有的云服务产品都会陆续接入。新版 SDK 实现了统一化,具有各个语言版本的 SDK 使用方法相同,接口调用方式相同,错误码相同以及返回包格式相同等优点。

SDK for 云函数

cloud.tencent.com/document/ap…

流程思路

image.png

过程

1,进入 serverless.cloud.tencent.com/start?c=scf

使用官方demo 创建云函数

image.png

配置云函数

image.png 选择 zip 文件压缩 进行部署 其中node 12.16 创建云函数完成后,你会得到

image.png

2,添加触发器

image.png

选择新建一个api服务

image.png

3,访问触发器地址

image.png 参数为

{
    "secretId": "你的secretId"
    "secretKey": "你的secretKey"
    "bucket": "nod69424",
    "region": "aphou",
    "key": "zip-test0907.zip",
    "sourceList": [
        {"url": "http://node-zip-1255469424.cos.ap-guangzhou.myqcloud.com/cos/WechatIMG56%E7%9A%84%E5%89%AF%E6%9C%AC%202.jpeg"}
    ]
}

报错为:

"errno": 403,
    "error": "requestId 74ededec75838b55856b0d204d545c3a , Invalid scf response format. please check your scf response format."

查看文档 cloud.tencent.com/document/pr…

image.png

然demo中是直接返回的对象

image.png

所以我们添加一个方法

const asReJson = (data,state = 200)=>{
  const promise = new Promise(function(resolve, reject) {
    resolve({
      "isBase64Encoded": false,
      "statusCode": state,
      "headers": {"Content-Type": "application/json"},
      "body": JSON.stringify(data)
    })
  })
  return promise
}

调用该方法

    return asReJson({
      code: 0,
      message: 'cos zip file success',
      data: {
        Location,
        Bucket,
        Key,
        ETag,
      },
    },200)

即可正常返回

{
    "code": 0,
    "message": "cos zip file success",
    "data": {
        "Location": "node-zip-.cos.ap-guangzhou.myqcloud.com/zip-test0907.zip",
        "Bucket": "node-zip-",
        "Key": "zip-test0907.zip",
        "ETag": "\"761b3110e232f1a2bf7a9eecda5ee6d4-3\""
    }
}

如图 (如图 响应raw json 格式)

image.png

缺点

1, 响应时间 由于云函数有响应时间 1-900 秒的限制

image.png

所以如果是多而大,时间过长就会压缩失败,比较适合短小的任务