如何疑難排解與 Lambda 整合的 API Gateway 端點狀態碼 500 的「內部伺服器」錯誤?

上次更新日期:2022 年 10 月 19 日

我向我的 Amazon API Gateway API 端點傳送了 HTTP 請求,該端點與 AWS Lambda 整合 (例如 /lambda-resource GET)。我收到狀態碼 500 回應,出現以下錯誤:{"message": "Internal server error"}

我要如何疑難排解此錯誤?

簡短描述

此錯誤可能是由於:

  • Lambda 函數許可
  • 限流問題
  • HTTP 狀態碼對應不正確或遺漏
  • 未處理的錯誤

解決方案

在開始之前,請按照以下步驟開啟 Amazon CloudWatch Logs,以便疑難排解 API Gateway 錯誤

注意:針對 Log level (日誌層級),請選擇 INFO 以產生所有請求的執行日誌。

Lambda 函數許可

如果 API Gateway 沒有叫用 Lambda 函數的許可,就會發生 “Invalid permissions on Lambda function” (Lambda 函數的無效許可) 錯誤。若要解決此問題,請參閱如何解決 API Gateway REST API 中的 "Invalid permissions on Lambda function" (Lambda 函數的無效許可) 錯誤?

注意:如果您使用其他服務,例如 AWS CloudFormation 來部署 API Gateway 資源,請確定您擁有 AWS::Lambda::Permission 資源的許可。

限流問題

如果後端服務因為大量要求而受到限制,則 API Gateway API 可能會傳回「內部伺服器錯誤」。您可以啟用指數退避和重試機制,然後再試一次請求。如果問題仍然存在,請檢查您的 API Gateway 配額限制。如果超出服務配額限制,您可以要求提高配額

由於 Lambda 函數限流問題,您也可能會收到 "Rate exceeded" (速率超出)和 429 "TooManyRequestsException" (過多請求) 錯誤。如需詳細資訊,請參閱如何對具有 "Rate exceeded" (速率超出) 和 429 "TooManyRequestsException" (過多請求) 錯誤的 Lambda 函數限流進行疑難排解?

您也可以要求增加 Lambda 函數的並行限制,這樣函數就不會受到限制。如需指示,請參閱如何為我的 Lambda 函數請求增加並行限制?

HTTP 狀態碼對應不正確或遺漏

HTTP 狀態碼對應不正確或遺漏也可能導致 500 錯誤,類似以下錯誤:

"Execution failed due to configuration error: Output mapping refers to an invalid method response: 2xx/4xx/5xx" (由於配置錯誤導致執行失敗:輸出對應參考無效的方法回應:2xx/4xx/5xx)。

若要解決此錯誤,請確定從後端傳回的狀態碼存在 API 方法回應,並且已正確對應

未處理的錯誤

Lambda 中未處理的錯誤表示函數由於函數程式碼中的錯誤而逾時。若要防止此錯誤,請確定 Lambda 函數程式碼是等冪的

您也可以使用偵錯工具 AWS X-Ray,取得有關函數程式碼不同部分需要多長時間才能完成的詳細資訊。

如需詳細資訊,請參閱 Amazon API Gateway 和 AWS Lambda 中的錯誤處理模式


此文章是否有幫助?


您是否需要帳單或技術支援?