HTTP 400 ステータスコード (Bad Request) - Amazon CloudFront

HTTP 400 ステータスコード (Bad Request)

CloudFront は、ペイロードまたはパラメータのコンテンツが欠落していたり、適正でないなど、クライアントがリクエストで無効なデータを送信すると、400 bad request エラーを返します。これは、一般的なクライアントエラーである場合もあります。

Amazon S3 オリジンが 400 エラーを返す場合

CloudFront ディストリビューションで Amazon S3 オリジンを使用している場合、ディストリビューションが HTTP ステータス コード 400 Bad Request と次のようなメッセージのエラー応答を送信することがあります。

The authorization header is malformed; the region '<AWS Region>' is wrong; expecting '<AWS Region>'

次に例を示します。

認可ヘッダーの形式が正しくありません。リージョン 'us-east-1' が間違っています。'us-west-2' を予期しています。

この問題は、次のシナリオで発生する可能性があります。

  1. CloudFront ディストリビューションのオリジンが Amazon S3 バケットである。

  2. S3 バケットを 1 つの AWS リージョンから別のリージョンに移動した。つまり、S3 バケットを削除し、後ほど同じバケット名で新しい S3 バケットを作成したが、元の S3 バケットがあった AWS リージョンとはちがうリージョンで作成したということです。

このエラーを修正するには、S3 バケットを現在の AWS リージョンで検索するように CloudFront ディストリビューションを更新します。

CloudFront ディストリビューションを更新するには
  1. AWS Management Console にサインインし、https://console.aws.amazon.com/cloudfront/v4/home で CloudFront コンソールを開きます。

  2. このエラーを生成するディストリビューションを選択します。

  3. [Origin and Origin Groups (オリジンおよびオリジングループ)] を選択します。

  4. 移動した S3 バケットのオリジンを見つけます。このオリジンの横にあるチェックボックスをオンにして、[編集] を選択します。

  5. [Yes, Edit (はい、編集します)] を選択します。[Yes, Edit (はい、編集します)] を選択する前に、設定を変更する必要はありません。

これらのステップを完了すると、CloudFront によりディストリビューションが再デプロイされます。ディストリビューションのデプロイ中は、[最終変更日] 列にステータスが [デプロイ中] と表示されます。デプロイの完了後、しばらくすると、AuthorizationHeaderMalformed エラーレスポンスを受信しなくなるはずです。

Application Load Balancer オリジンが 400 エラーを返す場合

CloudFront ディストリビューションで Application Load Balancer オリジンを使用している場合、400 エラーが返される原因の可能性は以下のとおりです。

  • クライアントが HTTP 仕様を満たさない誤った形式のリクエストを送信した。

  • リクエストヘッダーのサイズが、リクエスト行あたり 16 K、単一のヘッダーあたり 16 K、またはリクエストヘッダー全体で 64 K を超えている。

  • クライアントが、リクエスト本文全体を送信する前に接続を閉じた。