AWS S3 Java SDK не копирует файл в папку - PullRequest
0 голосов
/ 07 января 2019

Java 8 здесь. У меня S3 bucket (myapp-bucket) со следующей структурой папок:

/artwork
    /upload
    /staging

Вот как выглядит папка myapp-bucket/artwork:

enter image description here

У меня есть программное обеспечение, которое загружает файлы изображений в папку /upload, а затем другое приложение, которое я пишу, должно обработать это изображение и скопировать его в папку /staging. Код, который я должен выполнить для этой копии S3, выглядит следующим образом:

CopyObjectRequest copyObjectRequest = new CopyObjectRequest(
  bucketName,
  objectKey,
  destinationBucket,
  destinationKey
);

log.info(
  "copying object from s3://{}/{} to s3://{}/{}",
  bucketName,
  objectKey,
  destinationBucket,
  destinationKey
);

// Constructed via 
AmazonS3 amazonS3 = AmazonS3ClientBuilder.standard().withRegion(Regions.US_EAST_1).build();
amazonS3.copyObject(copyObjectRequest);

Когда это запускается, я вижу следующий вывод журнала, который я вижу:

[main] DEBUG com.me.myapp.ImageProcessor - copying object from s3://myapp-bucket/artwork/upload/rlj_amp244001_270.jpeg to s3://myapp-bucket/artwork/staging

Но конечное состояние папки myapp-bucket/artwork выглядит следующим образом:

enter image description here

Похоже, вместо копирования myapp-bucket/artwork/upload/<theImageFile> в каталог myapp-bucket/artwork/staging/ создается новый файл непосредственно в /artwork с именем staging и вероятным копированием двоичного содержимого. изображения в этот промежуточный файл. Куда я иду наперекосяк ?! Я просто хочу закончить с myapp-bucket/artwork/staging/<theImageFile> - заранее спасибо!

1 Ответ

0 голосов
/ 07 января 2019

S3 не имеет папок / каталогов - это просто сахар над плоским хранилищем. Так что ваш destinationKey должен выглядеть как artwork/staging/rlj_amp244001_270.jpeg

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...