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

上次更新日期:2022 年 11 月 11日

我按照說明為 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
abcd3456ef API 1 開發 (無) https://abcd3456ef.execute-api.us-east-1.amazonaws.com/dev https://api.example.com
wxyz1234ab API 2 測試 命令 https://wxyz1234ab.execute-api.us-east-1.amazonaws.com/test https://api.example.com/orders
mnop5678qr API 3 prod 客戶 https://mnop5678qr.execute-api.us-east-1.amazonaws.com/prod https://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 映射中的路徑「命令」。