上传到AWS S3限制

时间:2014-11-13 16:07:50

标签: php amazon-s3

我正在使用Amazon S3AWS SDK for PHP。上传文件是否有文件大小限制?是否有同步文件上传限制?

当我尝试为我的存储桶一次发送20个200MB的文件时,它给了我很多这些错误:

  

RequestTimeTooSkewedException:AWS错误代码:RequestTimeTooSkewed,   状态代码:403,AWS请求ID:0CE24AEDE4162AC9,AWS错误类型:   客户端,AWS错误消息:请求时间与之间的差异   目前的时间太长了。

     

RequestTimeoutException:AWS错误代码:RequestTimeout,状态代码:   400,AWS请求ID:913367E51F2BC5AD,AWS错误类型:客户端,AWS   错误消息:未读取与服务器的套接字连接   或写入超时期限内。空闲连接将是   闭合。

或问题出现在我的代码或PHP中?

3 个答案:

答案 0 :(得分:1)

截至目前,尺寸限制为5 TB,您的200 MB完全在最大尺寸范围内。

问题是您的本地机箱的系统时钟不同步。与NTP服务器同步或手动设置,问题就会消失。

对于第二个错误,您可能指定的文件大小大于实际大小。如果您的文件大小为200MB,则可能会在API中传递大于200MB的值。

答案 1 :(得分:1)

您的网络连接似乎不够快,无法一次性上传大小合适的文件。由于helloV提到的不同步时钟,可能会发生RequestTimeTooSkewedException个错误。但是,如果上载时间过长,请求签名的时间和请求完成的时间可能会超过15分钟,这也会导致此错误。我怀疑这可能会发生,因为第二个错误RequestTimeoutException很可能发生,因为你与S3的连接太慢了。

您需要更好的连接,或者应该考虑使用分段上传API。有帮助:http://docs.aws.amazon.com/aws-sdk-php/guide/latest/service-s3.html#uploading-large-files-using-multipart-uploads

答案 2 :(得分:0)

这是出错吗?

<Error><Code>RequestTimeTooSkewed</Code><Message>The difference between the requ
est time and the current time is too large.</Message><RequestTime>Wed, 08 Apr 20
15 11:50:58 GMT</RequestTime><ServerTime>2015-04-07T11:51:03Z</ServerTime><MaxAl
lowedSkewMilliseconds>900000</MaxAllowedSkewMilliseconds><RequestId>255BFB2CF336
1F0D</RequestId><HostId>DlpwnpVVH9aQku8qD8sAaO6tFCBlrfr9P2Sl3jbBd7FKXbzsJ1SJAwqR
OsNf+2qdSSKElK3mbus=</HostId></Error>

错误中你可以看到请求时间和服务器时间不同,它必须是相同的。所以请检查您当地的电脑时间和日期。