在 Serverless 中,云函数是作为计算容器存在的,可以作为服务接口使用,也可以做为中转服务使用,也可以编写业务逻辑。我们经常谈的 FaaS(Functions as a Service)中最核心的是云函数。如果需要简单理解,那就是写了一段代码(一个函数),可以直接部署在服务器上,但是这个函数是具备伸缩性的。流量来了,可以直接将函数拉起,可以进行资源扩充;流量回落,可以降至 0。这里不讨论业界如何实现冷启动或者 0 - 1 的优化。
上一节,我们在控制台创建了自己的环境;这里我们就可以在控制台编写第一个函数了。
第 1 步:登录云开发控制台
网址:https://console.cloud.tencent.com/tcb
第 2 步:创建云函数
如下图:
>如果云函数不需要占用大内存,可以选择 128 MB;在控制台默认选择的是 256 MB 。
然后,可以直接点击【下一步】即可,如下图:
我们在控制台创建函数完成,下面即可编写代码了。目前控制台默认提供了 Cloud Studio 作为编辑器,基本满足基础的 Web IDE 需要。
点击「函数名」,进入函数配置和详情页。
我们精简默认生成的,修改代码成如下:
'use strict';
exports.main = async (event, context) => {
//这里代码比较简单
//后期会准备从数据库取数据,然后返回结果
return {
msg: 'Hello Serverless! Good good study !',
maybe: '从入门到放弃'
}
};
这里点击【保存】。【保存】和【保存并安装依赖】是有区别的:
>如果实在分不清楚,就直接点击【保存并安装依赖】吧。
访问函数的形式有好几种,比如函数间调用,客户端 SDK 调用等;当前这里只介绍「开启 HTTP」触发的形式。有的同学对触发不理解,其实可以理解为 “使用 HTTP 访问“。
点击【函数配置】,对函数进行设置。
点击【编辑】,开始设定 HTTP 访问路径,这里设置为 “/say-hello” 。只需要修改这一个地方点击保存。
点击生成的链接,即可在浏览器看到返回的数据。
浏览器返回数据如下:
{
"msg": "Hello Serverless! Good good study !",
"maybe": "从入门到放弃"
}
当你发布完成,这个云函数就具备下面特性:
当然真实的服务不止这么简单,例如:
通过前面小节,我们已经可以编写和发布云函数了。但是有个问题,既然是 HTTP 服务,前端传递的参数如何获取呢?
http://api.serverless80.com/say-hello?name=vczero
例如上面 url 中的 name 参数该如何获取呢?可以通过 queryStringParameters
获取。例如计算两个数之和,代码如下:
'use strict';
exports.main = async (event, context) => {
//这里代码比较简单
//这里通过 queryStringParameters 获取请求参数
let a = parseInt(event.queryStringParameters.a || 0)
let b = parseInt(event.queryStringParameters.b || 0)
return {
msg: 'Hello Serverless! Good good study !',
maybe: '从入门到放弃',
sum: a + b
}
}
HTTP 请求参数如下:
//可以点击生成的路径直接方案,需要加上 a, b 两个参数
https://你的环境ID.service.tcloudbase.com/say-hello?a=1&b=23
返回结果如下:
{
"msg": "Hello Serverless! Good good study !",
"maybe": "从入门到放弃",
"sum": 24
}
详细内容可以参考 云接入
云函数可以通过 HTTP 访问了,也可以获取请求参数了,那么。在前端应用中,使用 ajax 请求生成的 http url 肯定会存在跨域情况。那么,在哪设置该函数可以被「指定域名」访问,其他域名不能访问呢。那就是开启 「安全域名」。
可以配置:
>可以根据开发、正式环境进行修改;应用正式上线后,记得删除无关域名。
一般情况,可以使用默认生成的域名进行服务调用。但是如果有自己的域名,也可以配置。因为默认的域名生成的比较长,也没有规律,配置自定义域名显得统一性高一些。
可以按照上图进行配置,如果没有 SSL 安全证书,可以选择腾讯云的免费证书。免费证书只能配置一个域名,不能配置通配符域名,也就是子域名都需要重新申请。