配置函數的自訂網域對映
網域對映提供指向專案內 Code Engine 函數的 URL 路徑。 使用 Code Engine,每當您部署函數時,依預設會自動建立這些對映。 不過,您可以將自己的自訂網域對映至 Code Engine 函數,以從自訂 URL 將要求遞送至 Code Engine 主控台或 CLI 中的函數。
如果您想要以您擁有的網域作為函數的目標,則可以使用自訂網域對映。 當您在 Code Engine中設定自訂網域對映時,請在專案中的完整網域名稱 (FQDN) 與 Code Engine 函數之間定義 1-to-1 對映。
自訂網域對映只能指向一個對映。 不過,您可以配置多個網域對映至單一函數。
每個專案最多可以建立 80 個自訂網域對映。 請參閱 專案配額。
當您在 Code Engine中建立自訂網域對映時,您在對映中使用的網域名稱在地區中必須是唯一的。
若要建立及設定自訂網域對映,請完成下列步驟:
- 檢閱 在 Code Engine 中使用自訂網域對映之前的考量。
- 從網域登記員取得自訂網域 (在 Code Engine外部)。
- 在 Code Engine 中為 函數 (來自 Code Engine 主控台或 CLI) 配置自訂網域對映。
- 使用網域登記員完成自訂網域配置。(在 Code Engine 外部)。
假設您想要為 www.example.com 和 shop.example.com 建立自訂網域對映。 在此情況下,您必須為每一個唯一網域或子網域建立自訂網域對映。 不過,如果 TLS 密鑰的憑證包括自訂網域對映中指定的網域,則您可以針對多個自訂網域對映重複使用相同的 TLS 密鑰。 這表示您可以將 TLS 密鑰對映至多個網域 (例如 www.example.com 和 shop.example.com)
或萬用字元網域 (例如 *.example.com)。
從主控台配置自訂網域對映
您可以使用 Code Engine 函數,透過 Code Engine 主控台,建立與已登錄網域名稱的自訂網域對映。
開始之前
在此實務範例中,建立與具有 TLS 密鑰之函數的自訂網域對映。 例如,建立自訂網域對映,以將 www.example.com 網域對映至 myfunction 函數。
-
從 Code Engine 專案頁面,移至您的專案。
-
從「概觀」頁面中,按一下 網域對映。
-
從「網域對映」頁面中,按一下 建立 以建立對映。
-
從「建立網域對映」頁面中,指定要與此網域對映搭配使用的 TLS 密鑰。Code Engine 會驗證憑證是否由授信 CA 簽署,以及憑證是否符合所提供的自訂網域名稱及私密金鑰。
若要建立新的 TLS 密鑰,
- 按一下建立。
- 新增與網域相關聯的 TLS 憑證 (包括所有中繼憑證)。 如果將憑證提供給您作為個別檔案,請連結檔案的內容。 您可以在檔案中提供此資訊。
- 新增與您的憑證對應的私鑰。 您可以在檔案中提供此資訊。
憑證鏈的範例格式
-----BEGIN CERTIFICATE----- ...certificate... -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- ...intermediate-certificate... -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- ...intermediate-certificate... -----END CERTIFICATE-----或者,若要使用現有的 TLS 密鑰,
- 按一下選取。
- 從清單中選取您要使用的現有密鑰。
-
指定網域名稱和目標元件。
- 指定自訂網域名稱的完整網域名稱; 例如,
www.example.com。 - 選取現有的目標函數; 例如
myfunction。 在此範例中,myfunction函數使用icr.io/codeengine/helloworld範例影像。 如需用於此範例之程式碼的相關資訊,請參閱helloworld。 - 請注意 CNAME 目標 欄位。 此值是當您 使用網域登記員完成自訂網域配置,以便將以自訂網域為目標的資料流量遞送至指定的函數時所需的 CNAME 項目。
- 指定自訂網域名稱的完整網域名稱; 例如,
-
按一下 建立,以建立自訂網域對映。
現在您已在 Code Engine中建立網域對映。 不過,傳送至您的函數的要求尚未遞送至您的自訂網域。 接下來,使用網域登記員完成自訂網域配置。
假設您想要為 www.example.com 和 shop.example.com 建立自訂網域對映。 在此情況下,您必須為每一個唯一網域或子網域建立自訂網域對映。 不過,如果 TLS 密鑰包括自訂網域對映中所指定網域的憑證,則您可以針對多個自訂網域對映重複使用相同的 TLS 密鑰。 TLS 密鑰可以包含對映至特定多個網域 (例如 www.example.com 和 shop.example.com)
或萬用字元網域 (例如 *.example.com) 的憑證。 請注意,您不能在一個區域內使用萬用字元網域超過一次。
使用 CLI 配置自訂網域對映
若要使用 CLI 建立自訂網域對映,請使用 domainmapping create 指令。 此指令需要完整網域名稱 (FQDN),例如 www.example.com、目標函數及 TLS 密鑰。 如需選項的完整清單,請參閱 ibmcloud ce domainmapping create 指令。
開始之前
- 取得已登錄網域名稱。
- 取得自訂網域的已簽署 TLS 憑證及私密金鑰。
- 設定 Code Engine CLI 環境。
- 建立專案。
- 建立函數。
登錄您的網域名稱時,您具有已簽署的 TLS 憑證及其符合此網域的私密金鑰,並且具有現有的 Code Engine 函數,您已準備好新增自訂網域對映。 您可以在 CLI 中使用 domainmapping create 指令,以 Code Engine 函數建立自訂網域對映。
-
使用已簽章的 TLS 憑證及私密金鑰建立 TLS 密鑰。 在此範例中,
mycert.txt檔案包含與網域相關聯的 TLS 憑證 (包括所有中繼憑證)。 如果將憑證提供給您作為個別檔案,請連結檔案的內容。myprivatekey.txt檔案包含對應於憑證鏈的相符私密金鑰。ibmcloud ce secret create --name mytlssecret --format tls --cert-chain-file mycertchain.txt --private-key-file myprivatekey.txt輸出範例
Creating tls secret 'mytlssecret'... OK -
在 Code Engine
myfunction函數與自訂網域www.example.com之間建立自訂網域對映。 使用您在前一個步驟中建立的 TLS 密鑰。ibmcloud ce domainmapping create --domain-name www.example.com --target myhellofun --tls-secret mytlssecret輸出範例
OK Domain mapping successfully created.
下表彙總在此範例中與 domainmapping create 指令搭配使用的選項。 如需指令及其選項的相關資訊,請參閱 ibmcloud ce domainmapping create 指令。
| 選項 | 說明 |
|---|---|
--domain-name |
自訂域映射的名稱。 指定自訂網域的名稱,例如 www.example.com。 這是必要值。 |
--target |
目標Code Engine函數的名稱。 這是必要值。 |
--tls-secret |
網域對映的 TLS 密鑰。 這是必要值。 |
現在,您的自訂網域對映已建立在 Code Engine中。 不過,傳送至您的函數的要求尚未遞送至您的自訂網域。 接下來,您必須 使用網域登記員完成自訂網域配置。
使用網域登記員完成自訂網域配置
建立 Code Engine 自訂網域對映之後,必須將符合完整網域名稱的 CNAME 記錄新增至自訂網域的 DNS 設定。 您可以在對應網域登記員的配置設定中找到 DNS 設定。 完成此步驟,以便將以自訂網域為目標的資料流量遞送至 Code Engine 自訂網域對映中定義的 Code Engine 函數。
測試自訂網域
在使用網域登記員完成自訂網域配置並發佈 CNAME 記錄更新之後,您可以使用自訂網域對映來測試函數。
使用瀏覽器,以 curl 指令將自訂網域設為目標來呼叫函數。
curl -v -X GET https://www.example.com
對自訂網域的呼叫輸出對映至使用 icr.io/codeengine/helloworld 範例映像檔的 myhellofun 函數。