官方文档:https://cloud.tencent.com/document/product/583
闲来无聊,一直听说serverless最近比较火热,试了下腾讯的serverless云函数。
个人对于serverless的理解:
其实serverless顾名思义,就是无服务器架构,并不是说不需要服务器,只是服务器的管理与资源分配无需用户关系,用户只需要编写对应的函数,提交到对应平台,然后配置对应的触发器即可。要知道全栈开发工程师最大的拦路虎并不是nodejs,而是服务器的运维管理,通过serverless用户只需要编写node代码即可,大大提高了开发效率,个人感觉有点像编写RPC风格接口。
云函数创建方法:
1.使用控制台创建函数
2.使用CLI创建函数
3.使用VS Code插件创建函数
这里使用第三种:
1.首先通过VS Code的EXTENSIONS下载Tencent Serverless
2.进入插件,接着创建一个腾讯云用户凭证,创建凭证需要腾讯云的账号 ID(https://console.cloud.tencent.com/developer)以及SecretID 和SecretKey(https://console.cloud.tencent.com/cam/capi)。
3.点击就可以添加函数了,添加完成后在文件目录下就有如下文件:
默认函数代码如下:
'use strict';
exports.main_handler = async (event, context, callback) => {
console.log("%j", event);
return "hello world"
};
4.点击可以进行本地调用选择,执行结果如下:
nice,根据预期返回了hello world,那么如何进行远程调用呢,这时可以点击上传到云端,这个时候有可能会提示,这时需要为云函数添加角色(https://console.cloud.tencent.com/cam/role),添加完角色在template.yaml文件中Role添加对应角色,再次点击上传云端即可。
5.进入https://console.cloud.tencent.com/scf/list可以看到刚才上传的函数
点击进入函数,为其添加一个触发方式,
点击保存后能通过访问路径即可远程调用
一个云函数最简单的helloworld完成。
helloworld成功了,接下来试试看连接数据库,cd到函数文件,npm init初始化npm,然后npm install mysql2 --save,然后就可以在node文件中操作mysql了,代码如下:
'use strict';
const DB_HOST = 'xxxx'
const DB_PORT = 'xxxx'
const DB_DATABASE = 'xxxx'
const DB_USER = 'xxxx'
const DB_PASSWORD = 'xxxx'
const promisePool = require('mysql2').createPool({
host : DB_HOST,
user : DB_USER,
port : DB_PORT,
password : DB_PASSWORD,
database : DB_DATABASE,
connectionLimit : 1
}).promise();
exports.main_handler = async (event, context, callback) => {
let result = await promisePool.query('select * from user')
return {
data:result[0],
code:200
}
};
打开浏览器输入访问路径,发现成功从mysql库中拉取了对应的数据。