какой самый быстрый и экономичный способ перемещения объектов из одной папки s3 в другую папку в том же ведре - PullRequest
0 голосов
/ 26 мая 2020

У меня есть корзина example с демонстрационной папкой, содержащей подпапки и файлы в ней. BucketStructure:

example/demo/*.jpeg #.jpeg files 
example/demo/sub-folder1
example/demo/sub-folder2

Моя цель - переместить все файлы .jpeg из папки demo/, за исключением .jpeg файлов из sub-folder1 и sub-folder2 в новую папку /example/archive-jpeg/.

Обращение за помощью, чтобы получить самый быстрый и экономичный способ использования aws -cli: используя awscli v2

  1. список всех .jpeg объектов в папке /demo и
  2. перемещение их в /archive-jpeg папку
  3. удаление .jpeg из /demo папки после архивации

Спасибо!

1 Ответ

3 голосов
/ 26 мая 2020

Это должно сработать:

aws s3 mv s3://bucket/demo/  s3://bucket/target-folder/ --recursive --exclude "*" --include "*.jpeg" --exclude "*/*"

Лог c:

  • aws s3 mv --recursive сообщает ему перемещать все объекты
  • --exclude "*" указывает ему исключить все перемещаемые объекты
  • --include "*.jpeg" указывает ему включать объекты, заканчивающиеся на .jpeg
  • --exclude "*/*" указывает ему исключить что-либо в подкаталоги (например, sub-folder1/ и sub-folder2/)

См .: AWS CLI: Использование фильтров исключения и включения

Как для самый быстрый и рентабельный , поскольку вы указали, что хотите сделать это через AWS CLI, других вариантов нет.

Если хотите чтобы сделать это без AWS CLI, то более быстрым способом перемещения объектов будет написание кода, который выполняется параллельно для отправки отдельных вызовов API копирования и удаления в Amazon S3. (В S3 нет команды «переместить» - CLI AWS фактически копирует объекты, а затем удаляет исходные объекты.)

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

Что касается рентабельно , объекты необходимо копировать и удалять, что приведет к вызовам API в Amazon S3 по цене $0.005 per 1000 requests. Я не думаю, что вы могли бы избежать этих вызовов API, поэтому не было бы возможности сделать это еще более дешевым.

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