Amazon S3 からの「Your socket connection to the server was not read from or written to within the timeout period (サーバーへのソケット接続の読み取りまたは書き込みがタイムアウト期間内に実行されませんでした)」エラーは、どのようにトラブルシューティングすればよいですか?

最終更新日: 2021 年 1 月 5 日

AWS コマンドラインインターフェイス (AWS CLI)、もしくは AWS SDK を使用して、Amazon Simple Storage Service (Amazon S3) にファイルをアップロードしようとしています。しかし、エラーが発生します。どうすればこの問題を解決できますか?

簡単な説明

AWS CLI または AWS SDK を使用して Amazon S3 にファイルをアップロードすると、次のエラーが表示されることがあります。

Your socket connection to the server was not read from or written to within the timeout period. Idle connections will be closed. (Service: Amazon S3; Status Code: 400; Error Code: RequestTimeout)
注: AWS CLI コマンドの実行時にエラーが発生した場合は、 AWS CLI の最新バージョンを使用していることを確認してください

クライアントと Amazon S3 サーバー間での接続が 20 秒以上の間アイドル状態を維持した場合、Amazon S3 は接続を終了します。その結果、400 RequestTimeout エラーが発生します。この問題を解決するには、以下を確認してください。

  • "Content-Length" ヘッダーで設定されたバイト数が、実際のファイルサイズより小さいこと。
  • 高レイテンシー、パケット損失、輻輳(過密なトラフィック)などの問題。

解決方法

"Content-Length" ヘッダーで設定されたバイト数が、実際のファイルサイズより小さいこと

HTTP リクエストを受信した場合、Amazon S3 では、Content-Length header で指定されたデータ量を受信することを想定します。この想定したデータ量を S3 が受信せず、接続が 20 秒間以上アイドル状態に置かれると、その接続は終了します。

そのため、Amazon S3 に送信されるファイルサイズを確認してください。ファイルは、Content-Length ヘッダーで指定されたファイルサイズに合わせる必要があります。そうしないと、400 RequestTimeout エラーが発生します。

高レイテンシー、パケット損失、輻輳 (過密なトラフィック) などの問題

パケットが低速あるいは貧弱なネットワーク接続のために失われると、S3 は、想定されたバイト数が受信されるまで待ち状態になります。接続がアイドル状態のまま 20 秒間以上経過すると、接続が S3 により終了され、400 RequestTimeout エラーが返されます。この原因でエラーが引き起こされているかを確認するには、パケットキャプチャを実行し、失われたパケットがあるかをチェックします。


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


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