Объект копирования AWS Java SDK 2 S3
В SDK версии 1 сделать запрос на копирование было просто:
new CopyObjectRequest(sourceBucket, sourceKey, destinationBucket, destinationKey)
В SDK версии 2 Builder
за CopyObjectRequest
не имеет четкого способа установить источник против пункта назначения. Существует copySource(copySource)
метод, который принимает полный путь, но не существует очевидного способа установить целевую корзину или ключ назначения или установить исходную корзину и ключ источника нормально (без создания полного пути и работы с кодировкой URL).
Их новые примеры S3 просто не учитывают, как работает новая копия, и их JavaDoc для CopyObjectRequest
не имеет реальной информации для этого.
3 ответа
У них есть хороший пример на Github: https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/javav2/example_code/s3/src/main/java/com/example/s3/CopyObject.java
Теперь он следует шаблону компоновщика, поэтому прочитайте документацию для CopyObjectRequest.Builder для получения более подробной информации.
Вот основной пример:
s3.copyObject(CopyObjectRequest.builder()
.copySource(SOURCE_BUCKET_NAME + "/" + SOURCE_KEY)
.bucket(DESTINATION_BUCKET_NAME)
.key(DESTINATION_KEY)
.build());
По крайней мере, в версии 2.17.165 AWS SDK для Java функция copySource(String) устарела.
Использовать
CopyObjectRequest.builder()
.sourceBucket(SOURCE_BUCKET_NAME)
.sourceKey(SOURCE_KEY)
.destinationBucket(DESTINATION_BUCKET_NAME)
.destinationKey(DESTINATION_KEY)
.build()