腾讯COS例程实践之云函数列举COS文件
云函数列举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文件相关推荐
- 使用腾讯云 SCF 云函数压缩 COS 对象存储文件
欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:腾讯云Serverless团队 在使用腾讯云 COS 对象存储的过程中,我们经常有想要把整个 Bucket 打包下载的需求,但是 C ...
- decode函数_「实践」云函数 + API,你也可以做个天气信息系统
为什么要把云函数 SCF 与 API 网关进行结合?本文告诉你答案! 通常,我们用云函数 SCF 写一个函数应用,这个应用可能多种多样.例如之前介绍过的 OJ 系统判题功能,通过 NLP 实现文本摘要 ...
- 使用云函数SCF+COS免费运营微信公众号
是的,你没听错,这一次我来带大家直接上手运营微信公众号. 震惊,Awesome,哼,我才不信捏,所谓无图无真相 ~ 效果展示 更多的体验,可以关注我的微信公众号:乂乂又又 (仅供测试,不要乱搞哈~) ...
- 腾讯云服务器文件解压,使用腾讯云函数SCF快速解压对象存储COS中的ZIP文件
使用场景 在本实践中,我们用到了云 由于当前云函数每次运行时分配的临时存储空间为512MB,因此建议单个 zip 包的大小不大于300MB,解压出来的单个文件不大于200MB. 操作步骤 一.创建存储 ...
- 【玩转云函数】腾讯云云函数结合金山文档打造轻量级 Office 在线预览服务
以下内容来自「玩转腾讯云」用户原创文章,已获得授权. 本文介绍下如何使用云函数来实现 Office 办公文件的预览 01. 前言 曾几何时,文档预览曾经很麻烦,小公司需要购买服务器,自行搭建文件服务器 ...
- 微信小程序云开发之云函数的创建与环境配置
云函数的使用与环境配置: 1.创建云函数 右键cloudfunctions文件选择新建Node.js云函数,云函数命名为updateVoice用于修改用户语音数量. 2.安装node.js及npm: ...
- 微信云函数的使用步骤
微信云函数的使用步骤 1.先新建一个云函数 2.打开新建的云函数的js文件,在cloud.init()下面连接数据库 cloud.init() const db =cloud.database()// ...
- 【Serverless】云函数微信小程序
简介 什么是AppGallery Connect云函数 云函数是一项Serverless计算服务,提供FaaS(Function as a Service)能力,可以帮助开发者大幅简化应用开发与运维相 ...
- 微信小程序云开发-云函数篇
一.小程序原生-云函数 1.在项目根目录下新建云函数存放的文件夹目录: "functions/",并在 project.config.json 中加入配置 2.右击 functio ...
最新文章
- mysql练习题及答案_MySQL经典练习题及答案,常用SQL语句练习50题
- [译] 在 Facebook 发一张登机牌,你就有可能被盗号了
- Ubuntu Dapper 提速脚本
- 网络编程2_网络通讯协议, socket(tcp, udp)
- 考勤助手——数据库3.0版本
- 解决opencv在pycharm中无代码自动提示的bug
- 一张图看懂微软Power BI系列组件
- java对象持久化技术_Java对象持久化技术Hibernate 一
- 基于vue + element 的后台管理系统
- 想买楼下邻居的那套房,彼此熟悉,这种情况还用找中介付中介费吗?
- 《Linux高性能服务器编程》——2.7 IPv6头部结构
- Bzoj14981416: [NOI2006]神奇的口袋
- python从入门到精通pdf清华大学出版社-python从入门到精通 清华大学出版社
- Vue-组件之间的数据共享
- 小程序文档整理之 -- API(调试接口)
- 删除注册表里没用的服务
- 公网ip+内网穿透+c_str()+linux c++读文件+路径
- macd的python代码同花顺_超牛MACD(代编写程序化交易模型)-同花顺公式 -程序化交易(CXH99.COM)...
- SEO人员,怎么先发制人做好SEO?
- 【前端echatrs图表框架】使用echarts实现雷达图