2017-10-04 260 views
2

我正在使用此代码上传S3上的目录。使用Java上传目录时的Amazon S3 SdkClientException

TransferManager transferManager = new TransferManager(s3client); 
MultipleFileUpload uploaded = transferManager.uploadDirectory(BUCKET_NAME, "DirectoryName", new File(uploadDirectory), true); 

在上传指南到Amazon S3桶我得到以下异常

com.amazonaws.SdkClientException: Upload canceled 
    at com.amazonaws.services.s3.transfer.internal.UploadMonitor.call(UploadMonitor.java:159) 
    at com.amazonaws.services.s3.transfer.internal.UploadMonitor.call(UploadMonitor.java:47) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 

此异常一般发生大约10次在100尝试

注意 - 上面的代码执行在多线程环境相同s3client对象

非常感谢!

+0

你正在使用什么版本的s3Bucket –

+0

请在stacktrace中添加打印出的异常原因。它可能会失败,因为命中次数超过限制:)我希望我会建议你使用以上版本1.10或更高版本 –

+0

@VikrantKashyap这是我所有的stacktrace。我们可以限制的地方,因为我没有给过任何地方。 –

回答

1

上述问题的解决方案我在做R时遇到了& D在Java Amazon Sdk中。如果您使用相同的AmazonS3Client,则不必为每个线程创建不同的TransferManager实例与多个线程共享相同的实例。

它不会引起任何问题,因为它是线程安全的对象,问题也解决了。