天天看點

函數計算搭建 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 服務遷移至函數計算,并且不影響外部服務,也就是對外提供服務的連結不變,那麼您可以為您的應用綁定自定義域名。

函數計算搭建 Serverless 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

通路使用者伺服器的服務

api.app.com/login

2.DNS 解析到 FC 位址

api.app.com/login

通路部署在 FC 的函數

使用流程

  • 建立 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

,設定的路由比對規則如下:

Path ServiceName FunctionName

/

s1 f1

/*

s2 f2

/login

s3 f3

/login/a

s4 f4

/login/*

s5 f5

最終的比對結果:

RequestURI MatchedServiceName MatchedFunctionName MatchedPath
api.app.com

/

api.app.com/user

/*

api.app.com/login

/login

api.app.com/login/a

/login/a

api.app.com/login/a/b

/login/*

api.app.com/login/b

/login/*

總結

綁定自定義域名可以允許使用者通過自定義域名通路 FC 的函數,配合 HTTP 觸發器使用,可以快速搭建性能穩定彈性可擴容的 Web 應用,可以說是十分友善了。

您在使用過程中遇到任何問題都可以随時

聯系我們

,函數計算團隊所有工程師都會在群裡實時進行答疑,沒錯,所有工程師,任何問題,随時聯系。

期待您的使用~~

參考文檔

綁定自定義域名示例

繼續閱讀