當我嘗試調用 Amazon API Gateway REST API 時,我收到 403「缺少驗證權杖」錯誤訊息。
簡短說明
基於以下原因,API 閘道 REST API 端點傳回缺少身分驗證權杖錯誤:
若要對 API Gateway 的其他 403 錯誤進行疑難排解,請參閱如何對來自 API Gateway 的 HTTP 403 錯誤進行疑難排解?
解決方法
確認 API Gateway 資源路徑中存在已設定的作業和資源
依照使用 API Gateway 主控台設定方法中的說明進行操作。如需詳細資訊,請參閱設定 API 資源。
**重要事項:**為使變更生效,您必須部署 API。
對於具有 Proxy 資源整合,且請求會傳送至根資源的 API,請確認根資源下是否已設定了作業。
確認 API Gateway 回應未經修改,或者後端整合未傳送回應
確定未在 API 中修改閘道回應。此外,確定錯誤不是來自整合後端。檢查 API Gateway 執行日誌和後端日誌。
開啟 IAM 驗證時,請確認已簽署 API 請求
如需詳細資訊,請參閱適用於 API 請求的 AWS 簽章版本 4 和 AWS API 請求簽章的元素。
確認您已向 REST API 端點傳送正確的 HTTP 作業請求
從 Web 瀏覽器中測試 REST API 端點,以自動傳送 GET HTTP 作業請求。
若要測試 POST HTTP 操作請求,請使用不同的 HTTP 用戶端。例如在 Postman 網站上使用 Postman,或者在 curl 網站上使用 curl。
使用 POST HTTP 方法請求的 curl 命令範例
curl -X POST API URL -d request body
使用 JSON 標頭傳送請求的範例
curl --location -X POST 'https://1234WXYZ.execute-api.your-aws-region.amazonaws.com/stage/lambda_proxy' --header 'Content-Type: application/json' --data-raw '{"x":"y"}'
使用 AWS V4 簽章驗證傳送 curl POST 請求的範例
curl -X POST "ENDPOINT" -d data --user AWS_ACCESS_KEY:AWS_SECRET_KEY --aws-sigv4 "aws:amz:AWS_REGION:AWS_SERVICE"
curl -X POST "https://1234WXYZ.execute-api.us-east-1.amazonaws.com/stage/lambda_proxy" -d '{"x":"y"}' --user ABCD:1234 --aws-sigv4 "aws:amz:your-aws-region:execute-api"
相關資訊
如何啟用 API Gateway REST API 的 IAM 身分驗證?