高負荷時に S3 バケットからのデータ要求へのアクセスが拒否されました

高負荷時に S3 バケットからのデータ要求へのアクセスが拒否されました

502 エラーが発生した場合に、s3 バケットから静的ファイルを取得しようとしています。

リクエスト用に nginx を設定した方法は次のとおりです。

error_page 502 = @static;
location / {
  index index.php;
  try_files $uri $uri/ /index.php;
# return 502;
  proxy_intercept_errors on;
}

location @static{
  rewrite ^/name/(.*) ^/bucket_name/$1 break;
  proxy_pass http://s3.amazonaws.com;
}

nginx が大きな負荷を処理できない場合、502 エラーが送信されます。

ここで、「return 502」ステートメントのコメントを解除し、try_files ステートメントをコメントすると、すべてが正常になり、データは s3 バケットによって正しく提供されます。

しかし、上記のコードの場合、loader.io を使用して Web サイトの負荷を増やすと (502 エラーが生成されることを確認しました)、ブラウザーは 403 エラー (403 Forbidden) を受け取ります。

そしてブラウザにはこのようなメッセージが表示されます。

<Error>
  <Code>AccessDenied</Code>
  <Message>Access Denied</Message>
  <RequestId>some_string</RequestId>
  <HostId>
    something
  </HostId>

また、「return 502」のコメントを解除し、「try_files statement」をコメント化して負荷を増やすと、s3 は引き続きファイルを正しく提供します。

負荷が高いために 403 エラーが表示されるのに、手動で 502 を返すとそのようなエラーが発生しないのはなぜでしょうか。また、負荷が高い場合 (502 エラー) に S3 バケットからデータを取得する他の代替スタイルはありますか。また、手動で送信される 502 エラーと負荷が高いために送信される 502 エラーは同じですか。

関連情報