函数计算搭建 Serverless 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 服務遷移至函數計算,并且不影響外部服務,也就是對外提供服務的鏈接不變,那么您可以為您的應用綁定自定義域名。
?
流程對比:
| 部署階段 | 1.編寫應用代碼并部署到用戶服務器 2.為域名備案? 3.設置 DNS 解析到用戶服務器 IP 4.利用 web 框架設置路徑和服務的對應關系 | 1.在函數計算為應用編寫函數并設置 HTTP 觸發器? 2.域名在阿里云備案或接入阿里云備案? 3.DNS 解析到 FC 地址:<accountID>.<region>.fc.aliyuncs.com? 4. 在 FC 綁定域名,并設置路徑與函數的對應關系 |
| 訪問階段 | 1.訪問?api.app.com/login? 2.DNS 解析到用戶服務器 IP? 3.api.app.com/login?訪問用戶服務器的服務 | 1.訪問?api.app.com/login? 2.DNS 解析到 FC 地址? 3.api.app.com/login?訪問部署在 FC 的函數 |
使用流程
-
創建 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,設置的路由匹配規則如下:
| / | s1 | f1 |
| /* | s2 | f2 |
| /login | s3 | f3 |
| /login/a | s4 | f4 |
| /login/* | s5 | f5 |
最終的匹配結果:
| api.app.com | s1 | f1 | / |
| api.app.com/user | s2 | f2 | /* |
| api.app.com/login | s3 | f3 | /login |
| api.app.com/login/a | s4 | f4 | /login/a |
| api.app.com/login/a/b | s5 | f5 | /login/* |
| api.app.com/login/b | s5 | f5 | /login/* |
總結
綁定自定義域名可以允許用戶通過自定義域名訪問 FC 的函數,配合 HTTP 觸發器使用,可以快速搭建性能穩定彈性可擴容的 Web 應用,可以說是十分方便了。
您在使用過程中遇到任何問題都可以隨時?聯系我們,函數計算團隊所有工程師都會在群里實時進行答疑,沒錯,所有工程師,任何問題,隨時聯系。
期待您的使用~~
原文鏈接
本文為云棲社區原創內容,未經允許不得轉載。
總結
以上是生活随笔為你收集整理的函数计算搭建 Serverless Web 应用(二)- 自定义域名的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在MaxCompute上分析IP来源的方
- 下一篇: Mars 如何分布式地执行