亚马逊S3上传文件超时

我有一个800KB的JPG文件。我尝试上传到S3,并不断收到超时错误。你能弄清楚哪里出了问题吗?800KB很小,无法上传。

错误消息:在超时期限内未读取或写入到服务器的套接字连接。空闲连接将关闭。

HTTP状态码:400

AWS错误代码:RequestTimeout

Long contentLength = null;

System.out.println("Uploading a new object to S3 from a file\n");

try {

byte[] contentBytes = IOUtils.toByteArray(is);

contentLength = Long.valueOf(contentBytes.length);

} catch (IOException e) {

System.err.printf("Failed while reading bytes from %s", e.getMessage());

}

ObjectMetadata metadata = new ObjectMetadata();

metadata.setContentLength(contentLength);

s3.putObject(new PutObjectRequest(bucketName, key, is, metadata));

回答:

IOUtils.toByteArray是否有可能正在耗尽您的输入流,以便在进行服务调用时不再需要从中读取任何数据?在这种情况下,stream.reset()将解决此问题。

但是,如果您只是上传文件(而不是任意InputStream),则可以使用采用File的更简单形式的AmazonS3.putObject(),这样就根本不需要计算内容长度。

http://docs.amazonwebservices.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/AmazonS3.html#putObject(java.lang.String,java.lang.String,java.io.File)

这将自动多次重试任何此类网络错误。您可以使用ClientConfiguration对象实例化客户端重试多少次。

http://docs.amazonwebservices.com/AWSJavaSDK/latest/javadoc/com/amazonaws/ClientConfiguration.html#setMaxErrorRetry(int)

以上是 亚马逊S3上传文件超时 的全部内容, 来源链接: utcz.com/qa/424984.html

回到顶部