使用自定義網域名稱呼叫 API 閘道 REST 或 HTTP API 時,如何針對 403「缺少身分驗證字符」錯誤進行故障排除?

1 分的閱讀內容
0

我按照說明為 Amazon API Gateway REST 或 HTTP API 設定自定網域名稱。當我呼叫 API 時,出現 403「缺少身份驗證字符」錯誤。如何進行疑難排解並解決此錯誤?

簡短描述

如果 URL 路徑不正確,則具有自定義網域名稱的 API 閘道 API 在呼叫 API 時傳回 403「缺少身分驗證字符」錯誤。

**注意:**使用 API 閘道 API 階段 URL 將不會傳回 403「缺少身分驗證字符」錯誤。

解決方案

為 API 閘道 API 設定的自訂網域名稱會使用 API 映射來連接 API 階段,透過自訂網域名稱將流量傳送至 API。API 映射具有 API、階段、自訂網域名稱,以及用於映射的選擇性路徑。如需詳細資訊,請參閱使用 API 映射

在下列範例中,自訂網域「https://api.example.com」API 映射設定如下:

API範例階段Path預設 URL自訂網域 URL
abcd3456efAPI 1開發(無)https://abcd3456ef.execute-api.us-east-1.amazonaws.com/devhttps://api.example.com
wxyz1234abAPI 2測試命令https://wxyz1234ab.execute-api.us-east-1.amazonaws.com/testhttps://api.example.com/orders
mnop5678qrAPI 3prod客戶https://mnop5678qr.execute-api.us-east-1.amazonaws.com/prodhttps://api.example.com/customers

在此範例設定中,使用 URL https://abcd3456ef.execute-api.us-east-1.amazonaws.com/dev/resourceA 向 API 1 發出的要求會成功將流量路由傳送至「資源 A」。這是因為要求是針對階段名稱「dev」的資源發出的。但是,使用 URL https://api.example.com/dev/resourceA 的相同請求傳回 403「缺少身分驗證字符」錯誤。之所以發生這個錯誤,是因為階段「dev」已映射至自訂網域名稱的 (無) 路徑。若要使用自訂網域名稱將要求路由到「資源 A」,請確定 URL 為 https://api.example.com/resourceA。

同樣地,相當於 https://wxyz1234ab.execute-api.us-east-1.amazonaws.com/test/resourceB 的自訂網域名稱 URL 為 https://api.example.com/orders/resourceB。這是因為 API 2 的「測試」階段映射到自定義網域 API 映射中的路徑「命令」。


相關資訊

如何針對 API 閘道的 HTTP 403 錯誤進行疑難排解?

如何解決 API 閘道 REST API 端點 403「缺少身份驗證字符」錯誤?

在 API 閘道中設定區域自訂網域名稱

AWS 官方
AWS 官方已更新 1 年前