在 Serverless 中,云函數(shù)是作為計算容器存在的,可以作為服務(wù)接口使用,也可以做為中轉(zhuǎn)服務(wù)使用,也可以編寫業(yè)務(wù)邏輯。我們經(jīng)常談的 FaaS(Functions as a Service)中最核心的是云函數(shù)。如果需要簡單理解,那就是寫了一段代碼(一個函數(shù)),可以直接部署在服務(wù)器上,但是這個函數(shù)是具備伸縮性的。流量來了,可以直接將函數(shù)拉起,可以進行資源擴充;流量回落,可以降至 0。這里不討論業(yè)界如何實現(xiàn)冷啟動或者 0 - 1 的優(yōu)化。
上一節(jié),我們在控制臺創(chuàng)建了自己的環(huán)境;這里我們就可以在控制臺編寫第一個函數(shù)了。
第 1 步:登錄云開發(fā)控制臺
網(wǎng)址:https://console.cloud.tencent.com/tcb
第 2 步:創(chuàng)建云函數(shù)
如下圖:
如果云函數(shù)不需要占用大內(nèi)存,可以選擇 128 MB;在控制臺默認選擇的是 256 MB 。
然后,可以直接點擊【下一步】即可,如下圖:
我們在控制臺創(chuàng)建函數(shù)完成,下面即可編寫代碼了。目前控制臺默認提供了 Cloud Studio 作為編輯器,基本滿足基礎(chǔ)的 Web IDE 需要。
點擊「函數(shù)名」,進入函數(shù)配置和詳情頁。
我們精簡默認生成的,修改代碼成如下:
'use strict';
exports.main = async (event, context) => {
//這里代碼比較簡單
//后期會準備從數(shù)據(jù)庫取數(shù)據(jù),然后返回結(jié)果
return {
msg: 'Hello Serverless! Good good study !',
maybe: '從入門到放棄'
}
};
這里點擊【保存】。【保存】和【保存并安裝依賴】是有區(qū)別的:
如果實在分不清楚,就直接點擊【保存并安裝依賴】吧。
訪問函數(shù)的形式有好幾種,比如函數(shù)間調(diào)用,客戶端 SDK 調(diào)用等;當前這里只介紹「開啟 HTTP」觸發(fā)的形式。有的同學(xué)對觸發(fā)不理解,其實可以理解為 “使用 HTTP 訪問“。
點擊【函數(shù)配置】,對函數(shù)進行設(shè)置。
點擊【編輯】,開始設(shè)定 HTTP 訪問路徑,這里設(shè)置為 “/say-hello” 。只需要修改這一個地方點擊保存。
點擊生成的鏈接,即可在瀏覽器看到返回的數(shù)據(jù)。
瀏覽器返回數(shù)據(jù)如下:
{
"msg": "Hello Serverless! Good good study !",
"maybe": "從入門到放棄"
}
當你發(fā)布完成,這個云函數(shù)就具備下面特性:
當然真實的服務(wù)不止這么簡單,例如:
通過前面小節(jié),我們已經(jīng)可以編寫和發(fā)布云函數(shù)了。但是有個問題,既然是 HTTP 服務(wù),前端傳遞的參數(shù)如何獲取呢?
http://api.serverless80.com/say-hello?name=vczero
例如上面 url 中的 name 參數(shù)該如何獲取呢?可以通過 queryStringParameters
獲取。例如計算兩個數(shù)之和,代碼如下:
'use strict';
exports.main = async (event, context) => {
//這里代碼比較簡單
//這里通過 queryStringParameters 獲取請求參數(shù)
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 請求參數(shù)如下:
//可以點擊生成的路徑直接方案,需要加上 a, b 兩個參數(shù)
https://你的環(huán)境ID.service.tcloudbase.com/say-hello?a=1&b=23
返回結(jié)果如下:
{
"msg": "Hello Serverless! Good good study !",
"maybe": "從入門到放棄",
"sum": 24
}
詳細內(nèi)容可以參考 云接入
云函數(shù)可以通過 HTTP 訪問了,也可以獲取請求參數(shù)了,那么。在前端應(yīng)用中,使用 ajax 請求生成的 http url 肯定會存在跨域情況。那么,在哪設(shè)置該函數(shù)可以被「指定域名」訪問,其他域名不能訪問呢。那就是開啟 「安全域名」。
可以配置:
可以根據(jù)開發(fā)、正式環(huán)境進行修改;應(yīng)用正式上線后,記得刪除無關(guān)域名。
一般情況,可以使用默認生成的域名進行服務(wù)調(diào)用。但是如果有自己的域名,也可以配置。因為默認的域名生成的比較長,也沒有規(guī)律,配置自定義域名顯得統(tǒng)一性高一些。
可以按照上圖進行配置,如果沒有 SSL 安全證書,可以選擇騰訊云的免費證書。免費證書只能配置一個域名,不能配置通配符域名,也就是子域名都需要重新申請。
更多建議: