Amazon CloudFront を使用してコンテンツを配信しています。ユーザーが「リクエストを満たすことができませんでした」または「アクセスが拒否されました」というメッセージを含む HTTP 403 エラーを受け取っています。
解決策
ドメイン名がディストリビューションの代替ドメイン名 (CNAME) に関連付けられていない
ドメインネームシステム (DNS) を作成しても、CloudFront ディストリビューション設定に CNAME を追加しないと、CloudFront は 403 エラーを返します。これは、CNAME が DNS レベルで CloudFront にリダイレクトされた場合でも発生します。
デフォルトの CloudFront URL の代わりに CNAME を使用するには、代替ドメイン名の追加の手順に従ってください。
詳細については、代替ドメイン名 (CNAME) の追加によるカスタム URL の使用を参照してください。
CloudFront の地理的制限がディストリビューションで設定されました
CloudFront の地理的制限により、特定の国のユーザーがコンテンツにアクセスできない場合があります。地理的制限が原因でエラーが発生した場合、403 レスポンスには次のようなメッセージが含まれます。 「Amazon CloudFront ディストリビューションは、お客様の国からのアクセスをブロックするように設定されています。」 また、レスポンスヘッダ Server: CloudFront が存在します。対応する CloudFront アクセスログエントリには、[x-edge-detailed-result-type] の値として [ClientGeoBlocked] が含まれています。
詳細については、コンテンツの地理的配信の制限を参照してください。
AWS WAF は CloudFront ディストリビューション上で設定されており、リクエストをブロックしています
[AWS WAF] を使用して転送されたリクエストを監視していて、リクエストされたコンテンツが指定された条件に一致しない場合、コンテンツは WAF によってブロックされます。403 エラーが表示されます。この場合、エラーには次のようなメッセージが含まれます。 「リクエストはブロックされました。現在、このアプリまたはウェブサイトのサーバーに接続できません。」 サーバーのレスポンスヘッダーには、値として [CloudFront] が含まれています。対応するアクセスログエントリには、[x-edge-detailed-result-type の値として [Error] があります。
リクエストがブロックされた理由が AWS WAF でない場合は、同じエラーメッセージと Cloudfront のレスポンスヘッダー値が表示されることがあります。 リクエストが AWS WAF によってブロックされていることを確認し、それをブロックしたルールを特定するには、ブロックされたリクエストの AWS WAF ログを確認します。または、関連する WebACL の AWS WAF CloudFront メトリクスを確認します。次に、WebACL をチェックして、ブロックされているルールを確認します。詳細については、AWS WAF 保護のテストとチューニングを参照してください。
Amazon S3 オリジンが 403 エラーを返しています
Amazon Simple Storage Service (Amazon S3) をオリジン設定として使用している場合、トラブルシューティングについては以下を参照してください。
CloudFront ディストリビューションのオリジンとして S3 ウェブサイトエンドポイントを使用しています。403 アクセス拒否エラーが表示されるのはなぜですか?
CloudFront ディストリビューションのオリジンとして S3 REST API エンドポイントを使用しています。403 アクセス拒否エラーが表示されるのはなぜですか?
カスタムオリジンが 403 エラーを返しています
カスタムオリジンのアプリケーションファイアウォールやその他の理由により、403 エラーがオリジンから返されることがあります。レスポンスに [CloudFront] という値のない Server ヘッダーが含まれている場合、エラーはカスタムオリジンから返される可能性があります。
エラーがカスタムオリジンから返されたかどうかを判断するには、オリジンの HTTP アクセスログを確認します。
オリジンの HTTP アクセスログを確認できない場合は、以下のトラブルシューティング方法を使用してください。
- CloudFront のアクセスログを確認します。ブロックされたリクエストの [time-taken] フィールドが、[time-taken] フィールドの平均よりも大幅に少ない場合、応答はオリジンからのものではない可能性があります。[time-taken] フィールドの値が小さい場合は、応答がエッジロケーションから送信されたことを示します。
- オリジンに直接リクエストしてください。CloudFront を経由せずにエラーを再現できる場合は、オリジンが 403 エラーを返している可能性があります。
エラーは、署名付き URL または署名付き Cookie の設定が原因です
CloudFront の動作設定で [閲覧者アクセスを制限する] を有効にしている場合、署名付きの Cookie や URL を使用せずに行われたリクエストは 403 エラーになります。
署名付き Cookie と署名付き URL の設定の詳細については、署名付き URL と署名付き Cookie によるプライベートコンテンツの提供を参照してください。
トラブルシューティングの手順については、CloudFront の署名付き URL または署名付き Cookie に関連する問題をトラブルシューティングするにはどうすればよいですか? を参照してください。
ビューアプロトコルポリシー付きディストリビューションが HTTP と HTTPS 用に設定されていません
ビューアプロトコルポリシーが [HTTPS のみ] に設定されているディストリビューションにHTTP リクエストが送信された場合、リクエストは 403 エラーを返す可能性があります。
詳細については、ビューアーと CloudFront 間の通信に HTTPS を要求するを参照してください。