2017-10-04 57 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實例與多個線程共享相同的實例。

它不會引起任何問題,因爲它是線程安全的對象,問題也解決了。