我想在 Amazon CloudFront 網頁分佈後使用 Amazon API Gateway 自定義網域端點。然後,我想使用基本路徑映射將 API 請求轉發到多個 API。該如何進行?
解決方案
為您的 REST API、HTTP API 或 WebSocket API 建立自訂網域名稱
如果您尚未這麼做,請建立自訂網域名稱,然後將其與兩個不同的 API 建立關聯。
**注意:**WebSocket API 的自訂網域名稱無法對應至 REST API 或 HTTP API。
如果是 REST API,請遵循設定 REST API 的自訂網域名稱中的指示進行。
如果是 HTTP API,請依照設定 HTTP API 的自訂網域名稱中的指示進行。
如果是 WebSocket API,請依照設定 WebSocket API 的自訂網域名稱中的指示進行。
**注意:**在 API Gateway 中建立自訂網域名稱後,您必須建立或更新 DNS 供應商的資源記錄,以對應至您的 API 端點。如需詳細資訊,請參閱註冊網域名稱。
本文中的範例使用 REST API 地區自訂網域名稱設定。
API 端點 URL 範例
https://restapiId1.execute-api.us-west-2.amazonaws.com/example1/home
https://restapiId2.execute-api.us-west-2.amazonaws.com/example2/home
自訂網域 URL 範例 (沒有基本路徑對應)
https://apigw.customdomain.com/example1/home
https://apigw.customdomain.com/example2/home
建立 CloudFront 網頁分佈
1. 開啟 CloudFront console (CloudFront 主控台),然後選擇 Create Distribution (建立分佈)。
2. 在 Select a delivery method for your content (選取內容的傳送方式) 頁面上,選擇 Web 下方的 Get Started (開始使用)。
3. 在 Create Distribution (建立分佈) 頁面上,針對 Origin Domain (原始網域),貼上 API 的自訂網域 URL,如下列範例所示:
原始網域名稱範例
https://apigw.customdomain.com
4.請將 Origin path (原始路徑) 保留空白。**備註:**呼叫 CloudFront 網頁分佈時,輸入不正確的來源路徑基礎路徑可能會導致錯誤。例如,未經授權的請求錯誤會傳回 Missing Authentication Token (缺少身分驗證字符) 錯誤和 403 Forbidden (403 禁止) 回應代碼。
5. 對於 Minimum Origin SSL Protocol (最低源 SSL 協定),最佳做法是選擇 TLSv1.2 。請不要選擇 SSLv3。API Gateway 不支援 SSLv3 通訊協定。
6. 在 Protocal (協定) 中,選擇 HTTPS Only (僅限 HPPTS)。**注意:**API Gateway 不支援未加密的 HTTP 端點。如需詳細資訊,請參閱 Amazon API Gateway 常見問答集。
7. (可選) 若要轉發自訂標頭給原始伺服器,請選擇 Add header (新增標頭),然後輸入您的 **Header name (標頭名稱)**和 Value (值)。**備註:**若 CloudFront 無法新增自訂標頭清單,請參閱 CloudFront 無法添加到原始伺服器請求的自訂標頭。
8. 選擇 Create Distribution (建立分佈)。
CloudFront 建立分佈之後,分佈的 Status (狀態) 欄的值會從 InProgress 變更為 Deployed。
如需詳細資訊,請參閱建立分佈。
測試您的 CloudFront 網頁分佈
1. 開啟 CloudFront console (主控台),將網頁分佈的 Domain Name (網域名稱) 複製到剪貼簿,如下列範例所示:
非自訂網域名稱範例
a222222bcdefg5.cloudfront.net
2. 按照測試分佈的指示進行操作。
成功的測試會傳回 200 OK 回應。如果您收到 500 server error 碼,則網頁分佈可能未部署。如果您沒有收到任何回應,表示 CloudFront DNS 記錄尚未傳播。
建立 CloudFront 分佈之後,您的設定會依照下列方式進行設定:
a222222bcdefg5.cloudfront.net/example1/home --> apigw.customdomain.com/example1/home --> API-1
a222222bcdefg5.cloudfront.net/example2/home --> apigw.customdomain.com/example2/home --> API-2
您現在可以使用 API Gateway 自訂網域名稱,從單一 CloudFront ffbu 向兩個 API 提出要求。
若要為 CloudFront 網頁分佈的傳入授權標頭設定轉寄功能,請參閱如何使用我自己的 CloudFront 分布設定 API Gateway?
相關資訊
選擇要設定 API Gateway API 的端點類型
使用對應的 Websocket APIs
使用 REST API 的 API 映射
使用 HTTP API 的 API 映射