云函数列举COS文件

COS的操作文档以及API请看网页:https://cloud.tencent.com/document/product/436/64982
从云函数例子中选择这个模板创建工程:

创建步骤这里不细说,但是有一点很关键,就是云函数和cos的域必须一样,也就是所在地要一样:


这里主要是因为本例程使用到了触发器的缘故,如果没有触发器,那就不需要同区域了!
云函数代码修改如下:

/**************************************************
Nodejs8.9 - GetCosObject
TIPS:
1. cos-nodejs-sdk-v5 do not support the use of promise and async/awaitREFERENCE:
1. https://cloud.tencent.com/document/product/436/12264 - COS-NODE-SDK documents
***************************************************/const COS = require('cos-nodejs-sdk-v5')
const fs = require('fs')// The cos authentication information
// 使用 cos 所需的鉴权/配置信息
const APPID = '13XXXX8232' // Replace it with your Appid, 请替换为您的腾讯云Appid
const SECRET_ID = 'AKIXXXXn7AxWt0sSlnZ4IHzRcW9WcRzHH0Sd' // Replace it with your SecretId, 请替换为您的 SecretId
const SECRET_KEY = 'wbz6XXXXc7LIyOXP0KNAgvta091cMp2y' // Replace it with your SecretKey, 请替换为您的 SecretKey
const REGION = 'ap-guangzhou' // Replace it with your bucket's region, 请替换为您bucket所在的地域// Initialize cosSDK
const cosInst = new COS({SecretId: SECRET_ID,SecretKey: SECRET_KEY
})
// This part is used to solve cosSDK-getObjec do not support promise
// 暂时解决cosSDK-getObject不支持promise的问题
cosInst.getObjectPromise = function(params) {return new Promise((resolve, reject) => {cosInst.getObject(params, function(err, data) {if (err) {reject(err)} else {resolve(data)}})})
}
cosInst.getBuckets = function(params) {return new Promise((resolve, reject) => {cosInst.getBucket(params, function(err, data) {if (err) {reject(err)} else {resolve(data)}})})
}exports.main_handler = async (event, context, callback) => {console.log('Start main handler')let promiseArr = []promiseArr.push(cosInst.getBuckets({Bucket: 'syXXXXXXXXvice-13XXXXXXXX2',  /* 填入您自己的存储桶,必须字段 */Region: 'ap-guangzhou',  /* 存储桶所在地域,例如ap-beijing,必须字段 *///Prefix: '*'           /* Prefix表示列出的object的key以prefix开始,非必须 */}).then(res => {console.log('getBuckets success1: ', res)}).catch(e => {throw (`Error getting object from bucket ${bucket}. Error message: ${JSON.stringify(e)}`)}))// /**//  * Ger original data from uploaded pictures and write them into temporary directory /tmp///  * 从cos上传的图片中,获取元数据,并写入到临时目录/tmp/中//  */// for (let record of event['Records']) {//   const bucket = `${record['cos']['cosBucket']['name']}-${APPID}`//   let key = record['cos']['cosObject']['key']//   key = key.replace(`/${APPID}/${record['cos']['cosBucket']['name']}/`, '') // Ectract the name of picture, 抽取出图片的名称//   console.log('Key is: ', key)//   const downloadPath = `/tmp/${key}`//   promiseArr.push(//     cosInst//       .getObjectPromise({//         Bucket: bucket,//         Region: REGION,//         Key: key//       })//       .then(res => {//         fs.writeFileSync(downloadPath, res['Body'])//         console.log('Download file success: ', key)//       })//       .catch(e => {//         throw (//           `Error getting object ${key} from bucket ${bucket}. Error message: ${JSON.stringify(//             e//           )}`//         )//       })//   )//  }try {await Promise.all(promiseArr)return 'Success'} catch(e) {console.log(e)return 'Fail'}

这时候如果在COS上传一个图片,可以看到云函数这里有如下日志:

START RequestId: e1651c55-2d82-4d3b-9c49-9eb744dec6eeInit Report RequestId: e1651c55-2d82-4d3b-9c49-9eb744dec6ee Coldstart: 440ms (PullCode: 93ms InitRuntime: 6ms InitFunction: 341ms) Memory: 128MB MemUsage: 28.12MB2022-03-11T09:26:31.867Z e1651c55-2d82-4d3b-9c49-9eb744dec6ee Start main handler
2022-03-11T09:26:31.942Z e1651c55-2d82-4d3b-9c49-9eb744dec6ee getBuckets success1: { Name: ‘XXXXXXXX’,
Prefix: ‘’,
Marker: ‘’,
MaxKeys: ‘1000’,
IsTruncated: ‘false’,
Contents:
[ { Key: ‘bom - 副本 (2).png’,
LastModified: ‘2022-03-11T08:42:28.000Z’,
ETag: ‘“8d84c71801e6fb4b6dba4de0759f5bce”’,
Size: ‘4101709’,
Owner: [Object],
StorageClass: ‘STANDARD’ },
{ Key: ‘bom - 副本 (3).png’,
LastModified: ‘2022-03-11T08:44:29.000Z’,
ETag: ‘“8d84c71801e6fb4b6dba4de0759f5bce”’,
Size: ‘4101709’,
Owner: [Object],
StorageClass: ‘STANDARD’ },
{ Key: ‘bom - 副本 (4).png’,
LastModified: ‘2022-03-11T08:46:03.000Z’,
ETag: ‘“8d84c71801e6fb4b6dba4de0759f5bce”’,
Size: ‘4101709’,
Owner: [Object],
StorageClass: ‘STANDARD’ },
{ Key: ‘bom - 副本 (5).png’,
LastModified: ‘2022-03-11T08:53:04.000Z’,
ETag: ‘“8d84c71801e6fb4b6dba4de0759f5bce”’,
Size: ‘4101709’,
Owner: [Object],
StorageClass: ‘STANDARD’ },
{ Key: ‘bom - 副本 (6).png’,
LastModified: ‘2022-03-11T09:01:17.000Z’,
ETag: ‘“8d84c71801e6fb4b6dba4de0759f5bce”’,
Size: ‘4101709’,
Owner: [Object],
StorageClass: ‘STANDARD’ },
{ Key: ‘bom - 副本 (7).png’,
LastModified: ‘2022-03-11T09:03:08.000Z’,
ETag: ‘“8d84c71801e6fb4b6dba4de0759f5bce”’,
Size: ‘4101709’,
Owner: [Object],
StorageClass: ‘STANDARD’ },
{ Key: ‘bom - 副本 (8).png’,
LastModified: ‘2022-03-11T09:05:11.000Z’,
ETag: ‘“8d84c71801e6fb4b6dba4de0759f5bce”’,
Size: ‘4101709’,
Owner: [Object],
StorageClass: ‘STANDARD’ },
{ Key: ‘bom - 副本 (9).png’,
LastModified: ‘2022-03-11T09:26:30.000Z’,
ETag: ‘“8d84c71801e6fb4b6dba4de0759f5bce”’,
Size: ‘4101709’,
Owner: [Object],
StorageClass: ‘STANDARD’ },
{ Key: ‘bom.png’,
LastModified: ‘2022-03-11T08:35:03.000Z’,
ETag: ‘“8d84c71801e6fb4b6dba4de0759f5bce”’,
Size: ‘4101709’,
Owner: [Object],
StorageClass: ‘STANDARD’ },
{ Key: ‘子板BOM确定清单.png’,
LastModified: ‘2022-03-11T08:40:34.000Z’,
ETag: ‘“8d84c71801e6fb4b6dba4de0759f5bce”’,
Size: ‘4101709’,
Owner: [Object],
StorageClass: ‘STANDARD’ } ],
CommonPrefixes: [],
statusCode: 200,
headers:
{ ‘content-type’: ‘application/xml’,
‘content-length’: ‘3423’,
connection: ‘close’,
date: ‘Fri, 11 Mar 2022 09:26:31 GMT’,
server: ‘tencent-cos’,
‘x-cos-bucket-region’: ‘ap-guangzhou’,
‘x-cos-request-id’: ‘NjIyYjE1YzdfYzcyZjJjMGJfNGYxYV9mNzdkNGEy’ } }
Response RequestId:e1651c55-2d82-4d3b-9c49-9eb744dec6ee RetMsg:“Success”
END RequestId:e1651c55-2d82-4d3b-9c49-9eb744dec6ee
Report RequestId:e1651c55-2d82-4d3b-9c49-9eb744dec6ee Duration:80ms Memory:128MB MemUsage:30.275459MB
其实经过上面代码的修改,并不需要触发器就可以直接测试运行代码了,测试运行代码打印的log如下:

Invoke function GetCOSObject-1646965787 [RequestId:b269d9b3-b886-47d9-a01b-6e14a0910557]
Response:
“Success”
Output:
START RequestId: b269d9b3-b886-47d9-a01b-6e14a0910557
Event RequestId: b269d9b3-b886-47d9-a01b-6e14a0910557
2022-03-11T09:37:45.822Z b269d9b3-b886-47d9-a01b-6e14a0910557 Start main handler
2022-03-11T09:37:45.896Z b269d9b3-b886-47d9-a01b-6e14a0910557 getBuckets success1: { Name: ‘XXXXXXXX’,
Prefix: ‘’,
Marker: ‘’,
MaxKeys: ‘1000’,
IsTruncated: ‘false’,
Contents:
[ { Key: ‘bom - 副本 (2).png’,
LastModified: ‘2022-03-11T08:42:28.000Z’,
ETag: ‘“8d84c71801e6fb4b6dba4de0759f5bce”’,
Size: ‘4101709’,
Owner: [Object],
StorageClass: ‘STANDARD’ },
{ Key: ‘bom - 副本 (3).png’,
LastModified: ‘2022-03-11T08:44:29.000Z’,
ETag: ‘“8d84c71801e6fb4b6dba4de0759f5bce”’,
Size: ‘4101709’,
Owner: [Object],
StorageClass: ‘STANDARD’ },
{ Key: ‘bom - 副本 (4).png’,
LastModified: ‘2022-03-11T08:46:03.000Z’,
ETag: ‘“8d84c71801e6fb4b6dba4de0759f5bce”’,
Size: ‘4101709’,
Owner: [Object],
StorageClass: ‘STANDARD’ },
{ Key: ‘bom - 副本 (5).png’,
LastModified: ‘2022-03-11T08:53:04.000Z’,
ETag: ‘“8d84c71801e6fb4b6dba4de0759f5bce”’,
Size: ‘4101709’,
Owner: [Object],
StorageClass: ‘STANDARD’ },
{ Key: ‘bom - 副本 (6).png’,
LastModified: ‘2022-03-11T09:01:17.000Z’,
ETag: ‘“8d84c71801e6fb4b6dba4de0759f5bce”’,
Size: ‘4101709’,
Owner: [Object],
StorageClass: ‘STANDARD’ },
{ Key: ‘bom - 副本 (7).png’,
LastModified: ‘2022-03-11T09:03:08.000Z’,
ETag: ‘“8d84c71801e6fb4b6dba4de0759f5bce”’,
Size: ‘4101709’,
Owner: [Object],
StorageClass: ‘STANDARD’ },
{ Key: ‘bom - 副本 (8).png’,
LastModified: ‘2022-03-11T09:05:11.000Z’,
ETag: ‘“8d84c71801e6fb4b6dba4de0759f5bce”’,
Size: ‘4101709’,
Owner: [Object],
StorageClass: ‘STANDARD’ },
{ Key: ‘bom - 副本 (9).png’,
LastModified: ‘2022-03-11T09:26:30.000Z’,
ETag: ‘“8d84c71801e6fb4b6dba4de0759f5bce”’,
Size: ‘4101709’,
Owner: [Object],
StorageClass: ‘STANDARD’ },
{ Key: ‘bom.png’,
LastModified: ‘2022-03-11T08:35:03.000Z’,
ETag: ‘“8d84c71801e6fb4b6dba4de0759f5bce”’,
Size: ‘4101709’,
Owner: [Object],
StorageClass: ‘STANDARD’ },
{ Key: ‘子板BOM确定清单.png’,
LastModified: ‘2022-03-11T08:40:34.000Z’,
ETag: ‘“8d84c71801e6fb4b6dba4de0759f5bce”’,
Size: ‘4101709’,
Owner: [Object],
StorageClass: ‘STANDARD’ } ],
CommonPrefixes: [],
statusCode: 200,
headers:
{ ‘content-type’: ‘application/xml’,
‘content-length’: ‘3423’,
connection: ‘close’,
date: ‘Fri, 11 Mar 2022 09:37:45 GMT’,
server: ‘tencent-cos’,
‘x-cos-bucket-region’: ‘ap-guangzhou’,
‘x-cos-request-id’: ‘NjIyYjE4NjlfZDcyZjI3MGJfZjUzYl9kYjlhZWEz’ } }

END RequestId: b269d9b3-b886-47d9-a01b-6e14a0910557
Report RequestId: b269d9b3-b886-47d9-a01b-6e14a0910557 Duration:79ms Memory:128MB MemUsage:30.8274MB
Summary:
Request ID: b269d9b3-b886-47d9-a01b-6e14a0910557
Run Duration: 79
Bill Duration: 79
Usage Memory: 30.827438354492188
Invoke Result: 0
效果和触发器触发的一样!

腾讯COS例程实践之云函数列举COS文件相关推荐

  1. 使用腾讯云 SCF 云函数压缩 COS 对象存储文件

    欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:腾讯云Serverless团队 在使用腾讯云 COS 对象存储的过程中,我们经常有想要把整个 Bucket 打包下载的需求,但是 C ...

  2. decode函数_「实践」云函数 + API,你也可以做个天气信息系统

    为什么要把云函数 SCF 与 API 网关进行结合?本文告诉你答案! 通常,我们用云函数 SCF 写一个函数应用,这个应用可能多种多样.例如之前介绍过的 OJ 系统判题功能,通过 NLP 实现文本摘要 ...

  3. 使用云函数SCF+COS免费运营微信公众号

    是的,你没听错,这一次我来带大家直接上手运营微信公众号. 震惊,Awesome,哼,我才不信捏,所谓无图无真相 ~ 效果展示 更多的体验,可以关注我的微信公众号:乂乂又又 (仅供测试,不要乱搞哈~) ...

  4. 腾讯云服务器文件解压,使用腾讯云函数SCF快速解压对象存储COS中的ZIP文件

    使用场景 在本实践中,我们用到了云 由于当前云函数每次运行时分配的临时存储空间为512MB,因此建议单个 zip 包的大小不大于300MB,解压出来的单个文件不大于200MB. 操作步骤 一.创建存储 ...

  5. 【玩转云函数】腾讯云云函数结合金山文档打造轻量级 Office 在线预览服务

    以下内容来自「玩转腾讯云」用户原创文章,已获得授权. 本文介绍下如何使用云函数来实现 Office 办公文件的预览 01. 前言 曾几何时,文档预览曾经很麻烦,小公司需要购买服务器,自行搭建文件服务器 ...

  6. 微信小程序云开发之云函数的创建与环境配置

    云函数的使用与环境配置: 1.创建云函数 右键cloudfunctions文件选择新建Node.js云函数,云函数命名为updateVoice用于修改用户语音数量. 2.安装node.js及npm: ...

  7. 微信云函数的使用步骤

    微信云函数的使用步骤 1.先新建一个云函数 2.打开新建的云函数的js文件,在cloud.init()下面连接数据库 cloud.init() const db =cloud.database()// ...

  8. 【Serverless】云函数微信小程序

    简介 什么是AppGallery Connect云函数 云函数是一项Serverless计算服务,提供FaaS(Function as a Service)能力,可以帮助开发者大幅简化应用开发与运维相 ...

  9. 微信小程序云开发-云函数篇

    一.小程序原生-云函数 1.在项目根目录下新建云函数存放的文件夹目录: "functions/",并在 project.config.json 中加入配置 2.右击 functio ...

最新文章

  1. mysql练习题及答案_MySQL经典练习题及答案,常用SQL语句练习50题
  2. [译] 在 Facebook 发一张登机牌,你就有可能被盗号了
  3. Ubuntu Dapper 提速脚本
  4. 网络编程2_网络通讯协议, socket(tcp, udp)
  5. 考勤助手——数据库3.0版本
  6. 解决opencv在pycharm中无代码自动提示的bug
  7. 一张图看懂微软Power BI系列组件
  8. java对象持久化技术_Java对象持久化技术Hibernate 一
  9. 基于vue + element 的后台管理系统
  10. 想买楼下邻居的那套房,彼此熟悉,这种情况还用找中介付中介费吗?
  11. 《Linux高性能服务器编程》——2.7 IPv6头部结构
  12. Bzoj14981416: [NOI2006]神奇的口袋
  13. python从入门到精通pdf清华大学出版社-python从入门到精通 清华大学出版社
  14. Vue-组件之间的数据共享
  15. 小程序文档整理之 -- API(调试接口)
  16. 删除注册表里没用的服务
  17. 公网ip+内网穿透+c_str()+linux c++读文件+路径
  18. macd的python代码同花顺_超牛MACD(代编写程序化交易模型)-同花顺公式 -程序化交易(CXH99.COM)...
  19. SEO人员,怎么先发制人做好SEO?
  20. 【前端echatrs图表框架】使用echarts实现雷达图

热门文章

  1. 软件开发教父与国内高手论道实录全文
  2. 匆匆那年,纪念我的2014
  3. 极路由1s HC5661 编程器救砖教程
  4. LoRaWan协议1.1 ClassB部分学习笔记
  5. web前端基础——过渡效果
  6. 15个常用excel函数公式_EXCEL函数公式小妙招,点滴积累效率高
  7. Sublime Text - 中文汉化
  8. HSSFTextbox
  9. 尚硅谷Java大厂面试题第2季学习笔记(垃圾收集器部分)
  10. c陷阱与缺陷第三章——Semantic Pitfalls