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 のステータスコードは、Lambda サービスクォータ (以前は制限と呼ばれていました) が原因で CloudFront がスロットリングされていることを示します。

エラーの原因とトラブルシューティングの方法については、以降のセクションを参照してください。

解決方法

Lambda@Edge 関数が 500 エラーを返す

500 実行エラーは、CloudFront が Lambda から応答を受け取らなかった場合に発生します。これは、関数に未処理の例外がある場合、コードにエラーがある場青、またはサポートされていない実行環境である場合に発生します。

Lambda@Edge によって生成された 500 エラーを解決するには、Lambda 関数の ログステートメントを追加してコードをデバッグする必要があります。詳細については、「Four Steps for Debugging your Content Delivery on AWS」(AWS でコンテンツデリバリをデバッグするための 4 つのステップ) の「I – Execution Errors」(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 のクォータ」を参照してください。

**注:**CloudFront が Lambda 関数を実行したときに作成されたログファイルを確認するには、正しいリージョンの CloudWatch ログファイルを確認する必要があります。


関連情報

Lambda@Edge design best practices (Lambda@Edge 設計のベストプラクティス)

AWS公式
AWS公式更新しました 2年前
コメントはありません