函數計算搭建 Serverless Web 應用(二)- 自定義域名

摘要: 綁定自定義域名可以允許用戶通過自定義域名訪問 FC 的函數,配合 HTTP 觸發器使用,爲使用函數計算搭建 Web 應用提供便利。

簡介
阿里雲 函數計算(Function Compute) 是事件驅動的全託管計算服務,是阿里雲的 Serverless 計算平臺。基於函數計算構建應用,您無需管理服務器等基礎設施,而是專注於應用邏輯的開發,大幅提高開發效率。

文章 函數計算搭建 Serverless Web 應用(一)- HTTP 觸發器 中闡述了 Web 應用(Serverless web backend) 是函數計算很重要的一個使用場景。相比於傳統的在服務器上搭建 web 應用,函數計算無需您管理服務器等基礎設施,只需編寫代碼並上傳,函數計算會爲您準備好計算資源,以 彈性、 可靠 的方式運行您的代碼,實現毫秒級別彈性伸縮,輕鬆應對峯值壓力。

HTTP 觸發器爲用戶提供一個形如 <account_id>.<region>.fc.aliyuncs.com/<version>/proxy/<serviceName>/<functionName>/[action?queries] 的默認的 endpoint,但是用戶希望可以通過自定義域名對外提供服務,原有的 Web 應用可以通過自定義域名進行訪問,遷移到函數計算後,只能通過默認 endpoint 訪問,實在強人所難。

因此函數計算在 HTTP 觸發器後推出自定義域名的功能。

自定義域名
綁定自定義域名可以允許用戶通過自定義域名訪問 FC 的函數,配合 HTTP 觸發器使用,爲使用函數計算搭建 Web 應用提供便利。

您可以在函數計算上綁定自定義域名,並設置不同路徑到不同服務的不同函數,然後就可以通過自定義域名訪問不同的函數了,您的 HTTP Request 會原封不動地傳遞給函數,FC 不會對您的 HTTP Request 進行任何處理。

例如,您擁有一個域名爲 api.app.com 的網站,從成本和彈性擴容角度考慮,您希望將 Web 服務遷移至函數計算,並且不影響外部服務,也就是對外提供服務的鏈接不變,那麼您可以爲您的應用綁定自定義域名。

函數計算搭建 Serverless Web 應用(二)- 自定義域名

流程對比:
函數計算搭建 Serverless Web 應用(二)- 自定義域名
使用流程
創建 HTTP 觸發器並且編寫函數 ;

搭建過程請參考 HTTP 觸發器示例。
綁定自定義域名

步驟一: 域名需要在阿里雲備案或接入阿里雲備案;

備案請參考文章 阿里雲備案 。
步驟二:域名需要解析到您的 endpoint 上,即需要設置域名的 CNAME 到您對應區域的 endpoint,先設置 CNAME 再到函數計算進行綁定;

域名解析請參考文章 設置域名解析;
例如:您的域名爲 app.com,您的 accountID 爲 12345,區域爲上海,需要設置 app.com 的 CNAME 爲 12345.cn-shanghai.fc.aliyuncs.com。
步驟三:在函數計算綁定自定義域名,並設置不同的路徑到不同函數。

同一域名綁定的函數必須在同一區域,可以屬於不同服務;
例如,您可以設置路徑 “/a” 的請求到 service1 的 function1 執行,設置路徑 “/b” 的請求到 service2 的 function2 執行;
只有設置了 HTTP 觸發器 的函數纔可以通過自定義域名的請求觸發執行。

路由匹配規則
您需要在自定義域名處設置路徑和函數的對應關係,即請求的路徑不同可以觸發不同函數執行。函數計算支持精確匹配和模糊匹配,具體規則如下:

支持精確匹配和模糊匹配。

精確匹配是設置的路徑和到來的請求完全一致纔可以匹配,例如 /a 觸發服務 s1 下的 f1(以下統一簡寫成 s1/f1),那麼路徑爲 /a/ 的請求無法觸發 f1 的執行。
支持通配符 ,且只能放到路徑的最後,比如 /login/ 表示路徑前綴爲 /login/ 的請求,/login/* 對應 s2/f2,那麼 /login/a、/login/b/c/d 都會觸發 f2 的執行。
匹配順序爲:精確匹配 -> 模糊匹配
匹配優先級爲:最長前綴匹配
示例:
域名爲 api.app.com,設置的路由匹配規則如下:

函數計算搭建 Serverless Web 應用(二)- 自定義域名

最終的匹配結果:

函數計算搭建 Serverless Web 應用(二)- 自定義域名
總結
綁定自定義域名可以允許用戶通過自定義域名訪問 FC 的函數,配合 HTTP 觸發器使用,可以快速搭建性能穩定彈性可擴容的 Web 應用,可以說是十分方便了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章