通过 AWS CLI 将文件上传到 S3 时出现“管道损坏”

Mar*_*ean 6 command-line-interface amazon-s3 amazon-web-services

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

\n\n

I\xe2\x80\x99m 发出的命令是:

\n\n
aws s3 cp . s3://yourfightsite-vod/videos/output/m4v --recursive --acl private\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
\n

上传失败:./54cffd1ad106d.m4v 到 s3://yourfightsite-vod/videos/output/m4v/54cffd1ad106d.m4v\n HTTPSConnectionPool(host='yourfightsite-vod.s3.amazonaws.com', port=443):最大重试次数超出网址:/videos/output/m4v/54cffd1ad106d.m4v?partNumber=4&uploadId=oG.0CBqIpsRcxO.ZqLIgOOBi8g9JFOKD8wQrmrNFa6Cx9LvGY9_PXiqaaVm6X3fIzXbCor8QSMEeqCfovtivHNFVyea8UNoxrVTpTEv M3ibGBxF30HGPkrxWuA83k6gj(原因:Errno 32 管道损坏)

\n
\n\n

这是什么意思?什么是 \xe2\x80\x9cbroken pipeline\xe2\x80\x9d 以及如何纠正此问题以便上传成功?

\n

Lit*_*ode 3

\n

什么是 \xe2\x80\x9cbroken pipeline\xe2\x80\x9d 以及如何纠正此问题以使我的上传\n 成功?

\n
\n\n

“管道损坏”意味着您失去了连接。这可能是亚马逊这边的问题,也可能是您这边的问题……谁知道呢……关键是你们之前一直在沟通,但现在却没有。

\n\n

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

\n\n

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

\n

  • 实际上,它看起来可能是 (partNumber=4&).... 但 CLI 实用程序看起来编码很差,并且没有优雅地处理错误!我的回答的要点保持不变......您已失去连接,您应该重试上传(或部分上传)。 (2认同)