我正在使用此代码在S3上上传目录。
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)
此异常通常在100次尝试中发生约10次
注意 - 上面的代码在具有相同
的多线程环境中执行s3client
对象
非常感谢!
答案 0 :(得分:3)
我在Java Amazon Sdk中进行R& D时遇到的上述问题的解决方案。如果您使用相同的TransferManager
,则不是为每个线程创建不同的AmazonS3Client
实例,而是共享具有多个线程的相同实例。
它不会导致任何问题,因为它是线程安全对象,问题也解决了。