簡介
阿裡雲
函數計算(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 服務遷移至函數計算,并且不影響外部服務,也就是對外提供服務的連結不變,那麼您可以為您的應用綁定自定義域名。
流程對比:
流程 | 自定義域名綁定前 | 自定義域名綁定後 |
---|---|---|
部署階段 | 1.編寫應用代碼并部署到使用者伺服器 2.為域名備案 3.設定 DNS 解析到使用者伺服器 IP 4.利用 web 架構設定路徑和服務的對應關系 | 1.在函數計算為應用編寫函數并設定 HTTP 觸發器 2.域名在阿裡雲備案或接入阿裡雲備案 3.DNS 解析到 FC 位址: 4. 在 FC 綁定域名,并設定路徑與函數的對應關系 |
通路階段 | 1.通路 2.DNS 解析到使用者伺服器 IP 3. 通路使用者伺服器的服務 | 2.DNS 解析到 FC 位址 通路部署在 FC 的函數 |
使用流程
- 建立 HTTP 觸發器并且編寫函數 ;
- 搭建過程請參考 HTTP 觸發器示例 。
- 綁定自定義域名
- 步驟一: 域名需要在阿裡雲備案或接入阿裡雲備案;
- 備案請參考文章 阿裡雲備案
- 步驟二:域名需要解析到您的 endpoint 上,即需要設定域名的 CNAME 到您對應區域的 endpoint,先設定 CNAME 再到函數計算進行綁定;
- 域名解析請參考文章 設定域名解析 ;
- 例如:您的域名為
,您的 accountID 為 12345,區域為上海,需要設定app.com
的 CNAME 為app.com
12345.cn-shanghai.fc.aliyuncs.com
- 步驟三:在函數計算綁定自定義域名,并設定不同的路徑到不同函數。
- 同一域名綁定的函數必須在同一區域,可以屬于不同服務;
- 例如,您可以設定路徑
的請求到“/a”
的service1
執行,設定路徑function1
“/b”
service2
執行;function2
- 隻有設定了 HTTP 觸發器 的函數才可以通過自定義域名的請求觸發執行。
- 步驟一: 域名需要在阿裡雲備案或接入阿裡雲備案;
路由比對規則
您需要在自定義域名處設定路徑和函數的對應關系,即請求的路徑不同可以觸發不同函數執行。函數計算支援精确比對和模糊比對,具體規則如下:
- 支援精确比對和模糊比對。
- 精确比對是設定的路徑和到來的請求完全一緻才可以比對,例如
觸發服務 s1 下的 f1(以下統一簡寫成 s1/f1),那麼路徑為/a
的請求無法觸發 f1 的執行。/a/
- 支援通配符
,且隻能放到路徑的最後,比如*
表示路徑字首為/login/*
的請求,/login/
對應 s2/f2,那麼/login/*
、/login/a
都會觸發 f2 的執行。/login/b/c/d
- 精确比對是設定的路徑和到來的請求完全一緻才可以比對,例如
- 比對順序為:精确比對 -> 模糊比對
- 比對優先級為:最長字首比對
示例:
域名為
api.app.com
,設定的路由比對規則如下:
Path | ServiceName | FunctionName |
---|---|---|
| s1 | f1 |
| s2 | f2 |
| s3 | f3 |
| s4 | f4 |
| s5 | f5 |
最終的比對結果:
RequestURI | MatchedServiceName | MatchedFunctionName | MatchedPath |
---|---|---|---|
api.app.com | | ||
api.app.com/user | | ||
api.app.com/login | | ||
api.app.com/login/a | | ||
api.app.com/login/a/b | | ||
api.app.com/login/b | |
總結
綁定自定義域名可以允許使用者通過自定義域名通路 FC 的函數,配合 HTTP 觸發器使用,可以快速搭建性能穩定彈性可擴容的 Web 應用,可以說是十分友善了。
您在使用過程中遇到任何問題都可以随時
聯系我們,函數計算團隊所有工程師都會在群裡實時進行答疑,沒錯,所有工程師,任何問題,随時聯系。
期待您的使用~~