カスタムオリジン (EC2 インスタンスまたはロードバランサー) からはアプリケーションを使用できますが、CloudFront では失敗します。なぜですか?

最終更新日: 2022 年 1 月 11 日

Amazon Elastic Compute Cloud (Amazon EC2) のインスタンス、またはロードバランサーを自分のウェブサイトやアプリケーションのカスタムオリジンとして使用しています。カスタムオリジンに直接接続できますが、Amazon CloudFront から同じコンテンツを取得できず、または CloudFront がエラーを返します。これをトラブルシューティングするにはどうすればよいですか?

解決方法

トラブルシューティングするには、次の手順を試してください。

エラーレスポンスを識別する

ブラウザのデベロッパーツールのネットワークのタブを確認して、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 リクエストを機密情報に使用することは推奨されません。

この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?