當我從虛擬私有雲端(VPC)調用我的 Amazon API Gateway API 時,我會收到 HTTP 403 禁止錯誤。
簡短說明
當您針對與 VPC 相關聯的 API Gateway 介面 VPC 端點開啟 DNS 時,會發生 HTTP 403 禁止錯誤。在這個案例,從 VPC 到 API Gateway API 的所有請求都會解析為該個介面 VPC 端點。但是,您無法使用 VPC 端點連線到公用 API。
VPC 端點的私有 DNS 名稱格式為 *.execute-api.exampleRegion.amazonaws.com,而 * 字元為 API ID 的預留位置。此格式與公有和私有 API 的 API Gateway 預設叫用 URL 相符。
針對 VPC 端點開啟私有 DNS 時,API 的調用 URL 會被私有 DNS 名稱覆蓋。當 DNS 查詢從 VPC 內部解析公用 API 時,DNS 會指向相關聯 VPC 端點的私有 IP。接著,API 呼叫會透過 VPC 端點路由至公有 API,而不是透過網際網路。由於 VPC 端點只能將流量路由至私有 API,因此導致 HTTP 403 錯誤。
當您使用預設的 execute-api 調用網址以使用 AWS Direct Connect 從內部部署連線至私有 API 時,也會收到 403 錯誤。
解決方法
確認已為與您 VPC 相關聯的介面 VPC 端點開啟私有 DNS
檢查您的 VPC,查看是否有介面 VPC 端點可存取私有 API。如果有介面端點,請檢查是否已開啟私有 DNS 設定。如需相關資訊,請參閱 VPC 中的 DNS 屬性。
在開啟私有 DNS 的情況下連線至公有 API
如果已開啟私有 DNS,請設定邊緣最佳化自訂網域名稱或區域自訂網域名稱,以連線至您的公有 API。
如果用戶端從內部部署進行網路連線,請設定 Amazon Route 53 Resolver 傳入端點。若要使用 execute-api 調用網址,請將遠端網路的所有私有 DNS 查詢轉寄到傳入端點。
**重要:**您的 VPC 資源必須具有網際網路連線才能連線到您的公用 API。此外,請使用 A 類型別名記錄來設定區域自訂網域名稱的 DNS 記錄。然而,對於邊緣最佳化自訂網域名稱,請使用 A 類型別名記錄或 CNAME 記錄。
在未開啟私有 DNS 的情況下連線至公有 API
如果您的 VPC 具備存取公有 API 的許可時,那麼請使用公有 DNS 連線至您的公有 API。如需相關資訊,請參閱在 API Gateway 中控制和管理 REST API 的存取。
(選用) 變更介面 VPC 端點的私有 DNS 設定
您可以隨時變更介面 VPC 端點的私有 DNS 設定。變更此設定會影響指向介面 VPC 端點之私有 IP 的 API 階段 URL 的解析。
若要變更介面 VPC 端點的私有 DNS 設定,請完成下列步驟:
- 開啟 Amazon VPC 主控台。
- 開啟端點窗格。
- 選取您的介面 VPC 端點。
- 選擇動作,然後選擇修改私有 DNS 名稱。
- 在啟用私有 DNS 名稱中,選取或清除為此端點啟用核取方塊。
- 選擇 Modify Private DNS names(修改私有 DNS 名稱)。
**注意:**變更私有 DNS 設定會影響使用者從 VPC 連線至私有 API 和公有 API 的方式。
如需詳細資訊,請參閱檢視和更新 VPC 的 DNS 屬性。
相關資訊
使用介面 VPC 端點存取 AWS 服務
API Gateway 中 REST API 的自訂網域名稱