概要

CloudFront を使用して問題をトラブルシューティングする方法を理解することで、オペレーターや SRE は、ウェブアプリケーションのさまざまな部分 (CloudFront、エッジ機能、オリジン) で発生する可能性のあるエラーを迅速に修正できます。これらのエラーには、圧倒されたオリジンが 5xx エラーを返す、CloudFront がオリジンに接続できない、コードで未処理の例外が発生して Lambda @Edge の実行に失敗したことがある、などがあります。

ユーザーからオリジンへのリクエストのトレース

CloudFront は、処理するリクエストごとに固有のリクエスト ID を生成します。リクエストがアプリケーションスタックを流れるときに、その ID を使用してリクエストをトレースすることをお勧めします。

CloudFront を使用したエラーのトラブルシューティング

モニタリングシステム (CloudWatch アラームなど) が 4xx または 5xx エラーによる応答の増加を検出した場合、エラーの種類と発生箇所を詳しく調べて修正する必要があります。

そのためには、CloudFront のアクセスログをレコードでフィルタリングしてエラーコードを生成し、x-edge-result-type、 x-edge-response-result-type x-edge-detailed-result-type のログフィールドを確認して、問題をよりよく理解してください。 アクセスログの分析は、ログをどこに保存するかによって異なります。非常に簡単な方法は、標準の SQL クエリで Athena を使用して S3 に保存されているログをクエリすることです。例として、次の SQL クエリは、最初の 100 レコードに制限された特定の日付範囲の 5xx エラーのログをフィルタリングします。

クラウドフロントログから* ASカウントを選択
ここで、日付「2022-06-09」と日付「2022-06-10」の間の「ステータス >= 500」と「日付」
LIMIT 100;


場合によっては、WAF または CloudFront のログを参照して追加のトラブルシューティング情報を入手してください。たとえば、AWS WAF ログは、特定のリクエストがブロックされた理由を説明できます。もう 1 つの例は、CloudWatch Logs のエッジ関数ログをチェックして、5xx になった実行エラーを理解することです。最後に、CloudFront がエラーをキャッシュする方法を理解して、CloudFront キャッシュからエラーレスポンスが返されるかどうかを知ることをお勧めします。

CloudFront を使用したレイテンシーのトラブルシューティング

モニタリングシステム (オリジンレイテンシーの CloudWatch アラームやキャッシュヒット率メトリックスなど ) が応答レイテンシーの増加を検出した場合、それを修正するためにレイテンシーのボトルネックがどこにあるのかを把握する必要があります。そのためには、CloudFront のアクセスログのレイテンシーフィールドを分析することを検討してください。次の表について考えます:

  • 1 バイト目までの時間:CloudFront とビューワー間の最初のバイトのレイテンシー。標準ログとリアルタイムログで確認できます
  • 所要時間:CloudFront とビューワー間のラストバイトレイテンシー (標準ログとリアルタイムログで確認可能)
  • origin-fbl: CloudFront とオリジン間のファーストバイトのレイテンシー。リアルタイムログで確認できます
  • origin-lbl: CloudFront とオリジン間のラストバイトレイテンシー。リアルタイムログで確認可能

これらのフィールドは、URL や国などの関連するディメンションの 1 つで SQL クエリをグループ化することで分析できます。これにより、レイテンシーの問題を絞り込むことができます。さらに、レスポンスヘッダーポリシーで設定すると、CloudFront のサーバータイミングヘッダーを使用してクライアント側でも同じ情報を確認できます。以下のサーバータイミングヘッダーは、私のリクエストがマルセイユのMRS52-P1 popのキャッシュヒットで、ダウンストリームの最初のバイトレイテンシーが64ミリ秒だったことを説明しています。CloudFront によって生成された Age ヘッダーに注目してください。このヘッダーには、このコンテンツが 61 秒後にオリジンからフェッチまたは更新されたことが説明されています。

CloudWatch RUM を使用したウェブパフォーマンスのトラブルシューティング

CloudWatch RUM では、ウェブページに javascript タグを組み込むことで、クライアント側でアプリケーションをモニタリングできます。javascriptは、接続ステップ(DNSルックアップ、TCP接続など)の内訳やGoogleのコアウェブバイタル(LCP、FIDなど)の内訳を含むページの読み込み時間などのデータをブラウザAPIから収集し、ダッシュボード用にCloudWatch RUMに送信します。ブラウザの種類、ユーザーの国、特定のページ ID などの特定のディメンションでフィルタリングすることで、アプリケーションのパフォーマンスを分析できます。

AWS サポートへの支援の依頼

エラーやレイテンシーの問題をさらにトラブルシューティングするために AWS サポートの支援が必要なシナリオでは、遅いリクエストやエラーの原因となるリクエストに対応する CloudFront リクエスト ID のリストを含むサポートへのチケットを開いてください。提供されたリクエスト ID により、サポートエンジニアは内部ログを詳しく調べて問題をより深く理解し、修正方法に関する推奨事項を提示できます。

Amazon CloudWatch のリアルユーザーモニタリング

リソース

このページはお役に立ちましたか?