如何對 CloudFront 中因 Lambda@Edge 函數引起的 500、502 和 503 錯誤進行疑難排解?

1 分的閱讀內容
0

我將 AWS Lambda@Edge 函數與 Amazon CloudFront 分發進行關聯。現在我收到了 500、502 或 503 錯誤。我該如何對此錯誤進行疑難排解?

簡短描述

Lambda@Edge 500、502 和 503 錯誤表示以下情況:

  • HTTP 500 狀態碼表示 Lambda 函數傳回執行錯誤。

  • HTTP 502 狀態碼表示 Lambda 函數回應的格式不正確或包含無效的內容。

  • HTTP 503 狀態碼表示 CloudFront 因為 Lambda 服務配額 (先前稱為限制) 而遭到限流。

請參閱以下章節以了解錯誤的原因以及如何對其進行疑難排解。

解決方案

Lambda@Edge 函數傳回 500 錯誤

當 CloudFront 未從 Lambda 取得回應時,就會產生 500 執行錯誤。發生這種情況是因為函數中有未處理的例外情況、程式碼中存在錯誤,或者是不支援的執行環境。

若要解決 Lambda@Edge 產生的 500 錯誤,您必須新增 Lambda 函數的日誌記錄陳述式來進行程式碼偵錯。若要進一步了解,請參閱在 AWS 上進行內容交付偵錯的四個步驟,並檢閱 I – 執行錯誤下的資訊。這些日誌記錄陳述式會將訊息寫入監控 CloudFront 函數執行情況的 CloudWatch 日誌檔案中。您可以在 CloudWatch 日誌檔案中檢閱這些陳述式,以確認函數是否正常運作。

如需詳細資訊,請參閱 Node.js 中的 Lambda 函數錯誤Python 中的 Lambda 函數錯誤

Lambda@Edge 函數傳回 502 錯誤

函數執行後,CloudFront 會收到來自 Lambda 的回應。如果回應的物件結構不符合 Lambda@Edge 事件結構,就會傳回 502 錯誤。如果回應包含無效的標頭或其他無效欄位,也會傳回 502 錯誤。

若要解決 Lambda@Edge 產生的 502 錯誤,請檢查 Lambda@Edge 函數中是否有以下常見問題:

  • 傳回的 JSON 物件
  • 缺少必要欄位
  • 回應具有無效的物件
  • 不允許的新增或更新,或有唯讀標頭
  • 超過本文大小上限
  • 字元或值無效

如需詳細資訊,請參閱 測試和偵錯 Lambda@Edge 函數邊緣函數的限制

Lambda@Edge 函數傳回 503 錯誤

Lambda 服務會對每個區域的執行進行限流,如果超出配額,就會傳回 503 錯誤。

若要解決 503 錯誤,請檢查 Lambda@Edge CloudWatch 指標和日誌檔案中是否有以下常見問題:

  • 以每個區域為基礎的並行執行
  • 已達函數配額

如需詳細資訊,請參閱 Lambda@Edge 配額

注意: 您必須檢閱正確區域中的 CloudWatch 日誌檔案,以查看 CloudFront 執行 Lambda 函數時建立的日誌檔案。


相關資訊

Lambda@Edge 設計最佳實務

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