【问题标题】:Amazon S3/Accelerated bucket upload fails ONLY for slow connection usersAmazon S3/加速存储桶上传失败仅适用于慢速连接用户
【发布时间】:2019-11-25 10:57:40
【问题描述】:

我们让用户能够将视频上传到我们的 Amazon S3 存储桶。它已配备“加速” 选项并使用我们 JS 的多部分上传。但是,我们注意到一些非常令人不安的事情:我们有数千个来自互联网速度很快的国家/地区的成功上传。

但是,几乎所有连接速度较慢的用户(他们都恰好来自互联网不以速度闻名的地方)无法上传。一旦他们开始上传,他们就会在控制台上收到几十个这样的错误,上传就会卡住并失败。

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://our-secret-bucket-xxxxxx.s3-accelerate.amazonaws.com/tyoeu/Abbey%…BAYmLRf4.YqtrWLwkD9uc5wGp0.rpyIV6xqDHxHqNaEsaxQTMAHs3g8DXdL3. (Reason: CORS request did not succeed).

此存储桶的 CORS 设置如下:

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>PUT</AllowedMethod>
    <AllowedMethod>POST</AllowedMethod>
    <AllowedMethod>GET</AllowedMethod>
    <AllowedMethod>HEAD</AllowedMethod>
    <MaxAgeSeconds>43200</MaxAgeSeconds>
    <ExposeHeader>ETag</ExposeHeader>
    <AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>

我们手动帮助上传失败的用户,要求他们上传到 Dropbox 并与我们分享链接 - 但这只是另一个证明有问题 - 如果他们可以通过缓慢的连接上传到 Dropbox,为什么不能他们上传到 AWS/S3 吗?这已经折磨我们的灵魂很长一段时间了,我们无法理解出了什么问题。

当然,我们不是地球上唯一一家允许来自世界各地的人们上传大文件的公司。为什么我们会因连接速度慢的用户而失败?

【问题讨论】:

  • 如果您还没有,我建议您使用 AWS 开票。
  • @Greg 谢谢。也会试试的。
  • @JasonGenX,您是否尝试通过设置较差的网络配置文件来模拟 chrome 上的行为?你能以这种方式重现这个问题吗?如果您执行此操作,您会在网络选项卡中看到什么?
  • 尽量不要使用chrome。 IE 11 或 Edge 或 Firefox。
  • 您是否尝试为您的存储桶启用日志?如果您看到连接和数据从这些地方流向您的存储桶,那么您可能会丢弃 CORS 问题。我读过浏览器有时会混淆 CORS 问题。

标签: amazon-web-services amazon-s3


【解决方案1】:

似乎这可能是请求超时问题,您是否尝试过更改您的aws.config.httpOptions.timeout?这默认为两分钟,但您可以通过将超时设置为零来完全消除超时。更多信息可以在here找到。

已编辑以修复损坏的链接。

【讨论】:

  • 我的朋友做到了。我已经与之前上传有问题的同一批人进行了测试。所有缓慢的互联网连接,一些来自亚洲,一些来自南美——现在他们可以毫无问题地上传了!
【解决方案2】:

请尝试以下步骤

1.创建一个非加速版本的 s3 存储桶并与这些用户一起尝试。如果它有效,那么创建一个程序来复制。我不知道为什么有 Cors。

2.使用Amazon S3 Transfer Acceleration Speed Comparison Tool

  1. 尝试使用以下 s3-accelerate 端点域名之一在启用加速的存储桶中传入和传出数据:

bucketname.s3-accelerate.amazonaws.com – 访问启用加速的存储桶。

bucketname.s3-accelerate.dualstack.amazonaws.com – 通过 IPv6 访问启用加速的存储桶。 Amazon S3 双栈终端节点支持通过 IPv6 和 IPv4 向 S3 存储桶发出请求。 Transfer Acceleration 双栈终端节点仅使用虚拟托管样式类型的终端节点名称。有关更多信息,请参阅开始通过 IPv6 发出请求和使用 Amazon S3 双栈终端节点。 您可以使用 Amazon S3 传输加速速度比较工具来比较 Amazon S3 区域的加速和非加速上传速度。速度比较工具使用分段上传将文件从您的浏览器传输到不同的 Amazon S3 区域,无论是否使用 Transfer Acceleration。

复制自这篇文章 https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html

http://s3-accelerate-speedtest.s3-accelerate.amazonaws.com/en/accelerate-speed-comparsion.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-13
    • 1970-01-01
    • 2020-01-18
    • 2016-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多