跳至內容

如何對與 Lambda 整合之 API Gateway 端點的問題進行疑難排解?

2 分的閱讀內容
0

我想將 Amazon API Gateway 端點與 AWS Lambda 整合,但收到錯誤訊息。

解決方法

對您收到的錯誤訊息執行以下疑難排解步驟。

在開始之前,請開啟 Amazon CloudWatch Logs 來疑難排解 API Gateway 錯誤。在日誌層級,選擇 INFO 以產生所有請求的執行日誌。

API Gateway 沒有 Lambda 函式權限

當 API Gateway 沒有調用 Lambda 函式的權限時,就會發生 Lambda 函式的權限無效錯誤。若要此問題,請參閱如何解決 API Gateway REST API 的「Lambda 函式的權限無效」錯誤?

**注意:**如果您使用其他服務來部署 API Gateway 資源 (例如 AWS CloudFormation),請將權限授予 AWS::Lambda::Permission 資源。

出現限流狀況

如果因為出現大量請求而使後端服務遭到限流,則 API Gateway API 可能會傳回內部伺服器錯誤。請啟動指數退避和重試機制,然後再次傳送請求。如果問題仍然存在,請檢查您的 API Gateway 配額。如果您超過服務配額,則請求增加 Lambda 函式並行配額,以避免該函數受到限流。

由於 Lambda 函式限流問題,您也可能會收到「超過速率」和「429 TooManyRequestsException 錯誤。如需詳細資訊,請參閱如何對 Lambda 函式「超過速率」和「TooManyRequestsException」限流錯誤進行疑難排解?

狀態代碼對應不正確或缺失

當 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 服務例外狀況 (例如 Lambda 函式逾時),那麼您會收到 Lambda.Unknown 錯誤。若要防止 Lambda 函式逾時,請使您的 Lambda 函式代碼具有冪等性

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

Lambda 整合端點逾時問題

對於所有整合類型,API 閘道整合逾時預設配額限制為 29 秒。如果您的 Lambda 函式需要超過 29 秒才能傳回回應,則請求將失敗,並出現 504 端點請求逾時錯誤。

請確認您的 Lambda 函式在 29 秒內傳回回應。如果您的 Lambda 函式無法在 29 秒內傳回回應,請提交整合逾時限制的配額增加

**注意:**您可以將區域 API 和私有 API 的整合逾時時間延長至超過 29 秒。但是,增加整合逾時可能需要減少 AWS 帳戶的區域級限流配額。

Lambda 函式輸出 JSON 格式不正確

如果整合 Lambda 函式的輸出不符合 REST API 指定的 JSON 格式,那麼您會收到 Proxy 格式錯誤的錯誤。確定對來自 Lambda 函式 (用於 Proxy 整合) 和 Lambda 授權方的輸出使用正確的 JSON 格式。

Proxy 整合的 Lambda 函式範例:

{

"isBase64Encoded": true|false,

"statusCode": httpStatusCode,

"headers": { "headerName": "headerValue", ... },

"multiValueHeaders": { "headerName": ["headerValue", "headerValue2", ...], ... },

"body": "..."

}

相關資訊

如何對 API Gateway HTTP 調用錯誤進行疑難排解?