カスタムオリジン (EC2 インスタンスまたはロードバランサー) からはアプリケーションを使用できますが、CloudFront では失敗します。なぜですか?
最終更新日: 2022 年 1 月 11 日
解決方法
トラブルシューティングするには、次の手順を試してください。
エラーレスポンスを識別する
ブラウザのデベロッパーツールのネットワークのタブを確認して、CloudFront から返された HTTP レスポンスヘッダーを判断します。または、cURL などのユーティリティを使用します。
HTTP 502 ステータスコード (Bad Gateway) レスポンスを受け取っている場合、問題の原因は CloudFront とオリジンの間の SSL 接続にある可能性があります。トラブルシューティングの手順については、「HTTP 502 ステータスコード (Bad Gateway)」を参照してください。
HTTP 504 ステータスコード (Gateway Timeout) レスポンスを受け取っている場合、問題の原因はセキュリティグループまたはファイアウォールのアクセス設定にある可能性があります。トラブルシューティングの手順については、HTTP 504 ステータスコード (Gateway Timeout)」を参照してください。
リクエストヘッダー、クッキー、またはクエリ文字列に基づいて転送を確認する
アプリケーションが特定のリクエストヘッダー、クッキー、またはクエリ文字列を必要としている場合は、ディストリビューションのキャッシュ動作を更新して必要なパラメータをオリジンに転送します。CloudFront はデフォルト設定で必須パラメータを転送しない可能性があります。
詳細については、Cookie に基づくコンテンツのキャッシュ、クエリ文字列パラメータに基づくコンテンツのキャッシュ、および リクエストヘッダーに基づくコンテンツのキャッシュを参照してください。
許可されている HTTP メソッドを確認する
デフォルトでは、CloudFront は GET および HEAD HTTP メソッドのみを許可しています。オリジンサーバーでアプリケーションを実行していて CloudFront を介してアプリケーションにアクセスしている場合は、アプリケーションの呼び出しに必要な HTTP メソッドを確認します。これらの HTTP メソッドはディストリビューションでも許可されている必要があります。例えば、フォームを送信するためにアプリケーションを実行している場合は、ディストリビューションで POST メソッドを許可する必要がある場合があります。ディストリビューションで許可される HTTP メソッドを変更する方法に関する指示については、許可される HTTP メソッドを参照してください。
クライアントと CloudFront の間の SSL の問題を解決する
SSL の問題で CloudFront を介してウェブサイトまたはアプリケーションにアクセスできない場合は、「CloudFront が HTTPS 経由でドメイン名を提供しないのはなぜですか?」を参照してください。
恒常的なリダイレクトの問題を解決する
CloudFront を介してウェブサイトまたはアプリケーションをロードしようとしたときに恒常的にリダイレクトされる場合は、CloudFront のオリジン設定を確認します。さらに、オリジンサーバーのリダイレクトポリシーを確認します。
一般的なワークフローでは、クライアントは CloudFront に接続し、次に CloudFront はオリジンサーバーに接続します。ワークフローを成功させるには、ディストリビューションのオリジンプロトコルポリシーとオリジンサーバーのリダイレクトポリシーが互いに互換性がある必要があります。
たとえば、オリジンサーバーがすべての HTTP リクエストを HTTPS にリダイレクトし、ディストリビューションのオリジンプロトコルポリシーが HTTP に設定されている場合、リクエストはループで送信されます。このシナリオでは、クライアントが http://d12345.cloudfront.net/example.image をリクエストすると、CloudFront は HTTP 経由でコンテンツを取得するリクエストをオリジンサーバーに行います。リクエストはオリジンサーバーに到達し、オリジンサーバーはリクエストを HTTP から HTTPS にリダイレクトします。リクエストは HTTPS を使用して CloudFront にルーティングされ、その後 CloudFront が HTTP を使用してオリジンにリクエストを再度送信し、リクエストループを再開します。
恒常的なリダイレクトを解決するには、次のいずれかの設定を使用します。
- HTTPS のみを使用するように CloudFront ディストリビューションのオリジンプロトコルポリシーを変更します。これには、カスタムオリジンサーバーに有効な SSL 証明書がインストールされている必要があります。
- オリジンサーバーに有効な SSL 証明書がインストールされていない場合は、リダイレクトポリシーを削除できます。その後、HTTP リクエストを受け付けるようにオリジンサーバーを設定できます。
警告: 通信はプレーンテキストで行われるため、HTTP リクエストを機密情報に使用することは推奨されません。