【问题标题】:aws s3 ls The read operation timed outaws s3 ls 读取操作超时
【发布时间】:2019-08-02 06:53:29
【问题描述】:

我尝试使用以下命令从 AWS S3 存储桶中获取大量文件:

aws s3 ls --human-readable --recursive my-directory

这个目录包含上万个文件,所以有时,在长时间的停顿之后,我得到这个错误:

('The read operation timed out',)

我已尝试使用不同值的参数--page-size,但没有帮助。我该如何解决这个错误?

【问题讨论】:

  • 我看到两个潜在原因 = 1) forums.aws.amazon.com/thread.jspa?threadID=161807 - 来自系统级问题(Linux 内核)和 2) 不是新版本的 cli 工具。
  • 谢谢,Rinat。我的版本是 aws-cli/1.10.41 Python/2.7.11+ Linux/4.4.0-28-generic botocore/1.4.31,在 Ubuntu 16.04 上。
  • 同样的事情发生在我身上(这就是我在这里的原因)。我只需要再运行几次就可以了。我并不是说这就是解决方案,但也许这只是暂时的故障。
  • 我也面临同样的问题,谁能回答你是如何设法显示巨大的对象列表的?
  • 如果您还没有尝试过一些想法:1) 我不想重复,但这个问题已经过时了,从那时起已经发布了几个 CLI 版本。尝试更新它; 2) 您可以尝试使用 cli 超时,例如 --cli-connect-timeout--no-cli-read-timeout--no-cli-connect-timeout,看看会发生什么

标签: amazon-s3


【解决方案1】:

您可以编写一个脚本来循环 S3 存储桶的同步,直到传输完成。脚本如下所示:

while:
do
aws s3 sync s3://bucket/path-to-files
done

如果文件传输失败,这将重试,基本上会一次又一次地继续下载,直到传输完成。

【讨论】:

    【解决方案2】:

    aws cli 似乎有很多改进。现在当我在s3中运行17000+个文件的cmd时,只用了不到30秒,如下图:

     % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
    100  1372  100  1318  100    54   2404     98 --:--:-- --:--:-- --:--:--  2409
       17579
    

    【讨论】:

      【解决方案3】:

      在分布式系统中读取大量数据是不明智的。它是服务器上和客户端上的一个块。

      如果您对数据的存储方式有一定的了解,请尝试并行运行它们,然后再追加到单个文件中。

      例如,

      aws s3 ls s3://bucket/year/month --recursive

      希望对你有帮助。

      【讨论】:

        猜你喜欢
        • 2017-09-27
        • 1970-01-01
        • 1970-01-01
        • 2017-11-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-26
        • 1970-01-01
        • 2014-04-09
        相关资源
        最近更新 更多