Lambda@Edge 関数を Amazon CloudFront ディストリビューションに関連付けると、502 エラーや 503 エラーが発生するため、トラブルシューティングしたいと考えています。
解決策
Lambda @Edge 関数が 502 エラーを返す
Lambda@Edge 関数が返す応答の形式が正しくないか、Lambda@Edge 関数に有効ではない内容が含まれている場合、"502" エラーが発生します。応答のオブジェクト構造は、Lambda@Edge イベント構造と整合する必要があります。
"502" エラーを解決するには、次の手順を実行します。
- Lambda @Edge 関数が有効な JSON オブジェクトを返すことを確認します。
- 応答には、イベントタイプに応じたすべての必須フィールドが含まれていることを確認します。
- 応答内のオブジェクトが有効であり、想定される構造に準拠していることを確認します。
- エッジ関数により、許容されない HTTP ヘッダーが追加されたかどうかを確認します。
- 読み取り専用ヘッダーを削除します。
- Lambda@Edge 関数のリクエスト本文サイズが、1 MB (オリジンリクエストイベント) または 40 KB (ビューワーリクエストイベント) を超過していないことを確認します。
- 応答フィールドに、無効な文字や値が含まれていないか確認します。
詳細については、「Lambda@Edge 関数のテストとデバッグ」と「Lambda@Edge の制限事項」を参照してください。
Lambda@Edge 関数が 503 エラーを返す
関数コードに未処理の例外またはエラーが含まれる場合、"503" エラーが発生します。
この問題を解決するには、Lambda@Edge 関数にロギングステートメント (例: console.log())) を追加して Amazon CloudWatch Logs に書き込みを行います。CloudFront が関数を実行する AWS リージョンの CloudWatch ログを確認します。
詳細については、「AWS でのコンテンツ配信をデバッグするための 4 ステップ」および「Lambda の実行に関するトラブルシューティング」を参照してください。
Lambda@Edge のクォータを超過すると、Lambda は関数の実行をブロックします。Lambda@Edge CloudWatch メトリクスを参照し、各 AWS リージョンでの同時実行数超過や、関数の数量超過が発生していないか確認します。