Это должно сработать:
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, поэтому не было бы возможности сделать это еще более дешевым.