【问题标题】:"Broken pipe" when uploading files to S3 via AWS CLI通过 AWS CLI 将文件上传到 S3 时出现“断管”
【发布时间】:2015-04-04 08:45:57
【问题描述】:

我的机器上有一个 M4V 文件目录(每个文件大约 1 GB),我想上传到我的 S3 存储桶。我决定尝试 AWS CLI,这样我就可以执行一个命令,让我的计算机完成其余的工作,但它似乎不起作用。

我发出的命令是:

aws s3 cp . s3://yourfightsite-vod/videos/output/m4v --recursive --acl private

但运行此命令会返回如下输出:

上传失败:./54cffd1ad106d.m4v 到 s3://yourfightsite-vod/videos/output/m4v/54cffd1ad106d.m4v HTTPSConnectionPool(主机= 'yourfightsite-vod.s3.amazonaws.com',端口= 443):最大重试网址为超出:/videos/output/m4v/54cffd1ad106d.m4v?partNumber=4&uploadId=oG.0CBqIpsRcxO.ZqLIgOOBi8g9JFOKD8wQrmrNFa6Cx9LvGY9_PXiqaaVm6X3fIzXbCor8QSMEeqCfovtivHNFVyea8UNoxrVTpTEvM3ibGBxF30HGPkrxWuA83k6gj(致: Errno 32 断管)

这是什么意思?什么是“损坏的管道”,我该如何解决这个问题才能让我的上传成功?

【问题讨论】:

  • s3 之前添加--debug,将该输出粘贴到您的问题中。

标签: amazon-web-services amazon-s3 command-line-interface


【解决方案1】:

什么是“破损的管道”,我该如何纠正这个问题,以便上传 成功了吗?

“Broken Pipe”表示您已失去连接。这可能是亚马逊方面的问题,也可能是您方面的问题......谁知道......关键是你在沟通,而现在你不是。

最佳解决方案是使用分段上传。在他们自己的文档中,Amazon 建议您对超过 100MB 的大文件使用 multi-part uploads。看起来 CLI 工具可能已经在使用它了。

解决方案的后半部分是让您的代码优雅地捕捉和处理此类错误(即重试几次,然后敲响警钟)。

【讨论】:

  • 我不确定这与我正在使用的 CLI 实用程序有关,如问题中所述。据我了解,CLI应该分多个部分上传大对象。
  • 实际上,它看起来可能是 (partNumber=4&).... 但看起来 CLI 实用程序的编码很差,并且没有优雅地处理错误!我的回答的要点保持不变....您已失去连接,您应该重试该上传(或部分上传)。
【解决方案2】:

只是分享我的经验! 我知道这有点晚了,但昨天我发现自己面临着同样的问题,即使整整一年运行相同的配置也没有任何问题。 有些文件会在其他文件没有上传的地方上传。没有图案... 使用 --debug 选项,对于那些错过上传的文件,会有关于错误区域的警告。所以,我在我的 s3cmd 配置中更改了区域并且它被修复了!

【讨论】:

  • 这对我有用,谢谢
【解决方案3】:

在我的情况下,它是 AWS 存储桶 URL 中的换行符 (\n)。

【讨论】:

    【解决方案4】:

    我在使用 aws cli 时遇到了这个问题,并且访问密钥不再附加到任何用户。为了解决这个问题,我只是用有效的凭据替换了访问凭据。

    【讨论】:

      猜你喜欢
      • 2019-02-20
      • 1970-01-01
      • 2016-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-26
      • 2020-05-07
      • 2018-01-21
      相关资源
      最近更新 更多