Код: Выделить всё
@Slf4j
public class S3TosClientImpl
implements ITosClient {
private S3Client client;
private S3TransferManager transferManager;
private ExecutorService threadPool;
public void test() {
this.client =
S3Client.builder()
.region(Region.of("region"))
.credentialsProvider(
StaticCredentialsProvider.create(
AwsBasicCredentials.create("ak", "sk")))
.forcePathStyle(false)
.endpointOverride(URI.create("https://test_bucket.endpoint"))
.build();
S3AsyncClient asyncClient =
S3AsyncClient.builder()
.region(Region.of("region"))
.credentialsProvider(
StaticCredentialsProvider.create(
AwsBasicCredentials.create("ak", "sk")))
.forcePathStyle(false)
.endpointOverride(URI.create("https://test_bucket.endpoint"))
.multipartConfiguration(
MultipartConfiguration.builder()
.minimumPartSizeInBytes((long) (5 * 1024 * 1024))
.build())
.build();
this.transferManager = S3TransferManager.builder().s3Client(asyncClient).build();
this.threadPool = Executors.newFixedThreadPool(10);
GetObjectRequest req =
GetObjectRequest.builder()
.bucket("test_bucket")
.key("test_object")
.build();
ResponseInputStream resp = this.client.getObject(req);
PutObjectRequest putObjReq =
PutObjectRequest.builder()
.bucket("test_bucket")
.key("test_object")
.build();
AsyncRequestBody reqBody =
AsyncRequestBody.fromInputStream(
resp, resp.response().contentLength(), this.threadPool);
this.transferManager
.upload(
UploadRequest.builder()
.putObjectRequest(putObjReq)
.requestBody(reqBody)
.build())
.completionFuture()
.join();
}
}
Подробнее здесь: https://stackoverflow.com/questions/796 ... tent-sha25