從 VPC 連線至我的 API Gateway API 時,為什麼會遇到 HTTP 403 禁止錯誤?

2 分的閱讀內容
0

我正在從我的虛擬私有雲端 (VPC) 呼叫 Amazon API Gateway API,但我遇到 HTTP 403 禁止錯誤。為什麼會這樣?

簡短說明

HTTP 403 禁止錯誤最常發生在為與 VPC 相關聯的 API Gateway 介面 VPC 端點啟用私有 DNS 時。在這種情況下,從 VPC 到 API Gateway API 的所有請求都會解析為該個介面 VPC 端點。但是,無法使用 VPC 端點連接到公有 API。

VPC 端點的私有 DNS 名稱格式為 *.execute-api.<REGION>.amazonaws.com。此格式與公有和私有 API 的 API Gateway 預設叫用 URL 相符。例如,公有 API 的預設叫用 URL 為 https://abcd1234.execute-api.us-east-1.amazonaws.com,其中 abcd1234 是 API ID,而 us-east-1 是該 API 的 AWS 區域。

在 VPC 端點上啟用私有 DNS 時,API 的叫用 URL 會被私有 DNS 名稱 *.execute-api.us-east-1.amazonaws.com 覆蓋,其中 * 為 API ID 的預留位置。當從 VPC 內部解析公有 API 的 DNS 查詢時,解析的 DNS 會指向相關聯 VPC 端點的私有 IP,而不是公有 API 的公有 IP。接著,API 呼叫會透過 VPC 端點路由至公有 API,而不是透過網際網路進行路由。由於 VPC 端點只能將流量路由至私有 API,因此導致 HTTP 403 錯誤。

如果您的介面 VPC 端點未啟用私有 DNS,或者 VPC 中沒有端點,請參閱在未啟用私有 DNS 的情況下連線至公有 API 一節。

解決方案

確認已為與您 VPC 相關聯的介面 VPC 端點啟用私有 DNS

檢查您的 VPC,查看是否有介面 VPC 端點可存取私有 API。如果有介面端點,請檢查是否已啟用私有 DNS 設定。如需相關資訊,請參閱 VPC 中的 DNS 屬性

在啟用私有 DNS 的情況下連線至公有 API

如果已啟用私有 DNS,請設定邊緣最佳化自訂網域名稱區域自訂網域名稱,以連線至您的公有 API。

**重要事項:**VPC 中嘗試連線至公有 API 的資源必須具備網際網路連線。此外,當設定區域自訂網域名稱的 DNS 記錄時,您必須使用 A 類型別名記錄。然而,對於邊緣最佳化自訂網域名稱,請使用 A 類型別名記錄或 CNAME 記錄

在未啟用私有 DNS 的情況下連線至公有 API

如果介面 VPC 端點中未啟用私有 DNS,或者您的 Amazon Virtual Private Cloud (Amazon VPC) 組態中沒有端點,請確認是否具備下列情況:

當您的 VPC 具備存取公有 API 的許可時,請使用公有 DNS 連線至您的公有 API。如需相關資訊,請參閱在 API Gateway 中控制和管理 REST API 的存取

(選用) 變更介面 VPC 端點的私有 DNS 設定

使用者可以隨時變更介面 VPC 端點的私有 DNS 設定。變更此設定會影響指向介面 VPC 端點之私有 IP 的 API 階段 URL 的解析。

**注意:**變更私有 DNS 設定會影響使用者從 VPC 連線至私有 API公有 API 的方式。

  1. 在 Amazon VPC 主控台中,開啟端點窗格
  2. 選取介面 VPC 端點。
  3. 選擇動作,然後選擇修改私有 DNS 名稱
  4. 啟用私有 DNS 名稱中,選取或清除為此端點啟用核取方塊。
  5. 選擇修改私有 DNS 名稱

如需相關資訊,請參閱檢視和更新 VPC 的 DNS 屬性


相關資訊

使用介面 VPC 端點存取 AWS 服務

為 REST API 設定自訂網域名稱

VPC 的 DNS 屬性