Переместить все версии данного файла в корзине S3 из одной папки в другую папку

#java #amazon-web-services #amazon-s3

#java #amazon-web-services #amazon-s3

Вопрос:

Я настроил корзину S3 с включенным управлением версиями.

Один внешний процесс записывает файлы json (каждый файл json соответствует одному объекту Student) в корзину S3.

Я определил структуру папок корзины S3 следующим образом:

  s3://student-data/new/ <-- THIS WILL CONTAIN ALL THE UNPROCESSED JSON FILES
 s3://student-data/processed/ <-- THIS WILL CONTAIN ALL THE PROCESSED JSON FILES.
 

Теперь у меня есть Cron, который запускается периодически, один раз в каждые 6 часов.

Новые файлы JSON записываются в new папку внешним процессом.

Я бы хотел, чтобы Cron обрабатывал все файлы JSON с соответствующими версиями в new папке, а после завершения обработки переместил все файлы со всеми существующими версиями из new папки в processed папку.

Здесь я могу получить текущую версию для файла json, записанного в new папку, и переместить его в processed постобработку папки.

Но я не понимаю, как я могу переместить файл со всеми его версиями из new в processed , чтобы в будущем мне не приходилось обрабатывать одну и ту же версию файла дважды.

Ответ №1:

Объекты в Amazon S3 не могут быть «перемещены». Скорее всего, их нужно скопировать в новый ключ, а затем исходный объект следует удалить.

Этот процесс будет сложнее с несколькими версиями объекта. Вам нужно будет скопировать и удалить каждую версию по отдельности, от самой старой до самой новой, чтобы создать новые версии в целевом пути. Невозможно обработать все версии объекта одновременно.

Управление версиями обычно используется для сохранения перезаписанных данных. Возможно, вы захотите рассмотреть, требуется ли управление версиями в вашей ситуации, поскольку это значительно усложняет процесс.