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 設計のベストプラクティス)