AWS S3API перемещает файлы из папки в другую в том же сегменте - PullRequest
0 голосов
/ 10 мая 2018

Мне нужно выполнить команду вроде:

aws s3api copy-object --copy-source bucket-1 --key * .txt --bucket Ковш-1 / папка /

У меня есть много TXT-файлов в корне сегмента, и я хочу переместить их в папку в том же сегменте.

Большое спасибо.

1 Ответ

0 голосов
/ 11 мая 2018

Вы можете использовать высокоуровневый s3 api:

aws s3 mv s3://bucket/object.txt s3://bucket/folder/object.txt

Однако вам потребуется указать полное имя объекта - подстановочные знаки не работают.

Вы можете использовать сценарий для перебора содержимого сегмента с помощью команды Linux cut для извлечения имени объекта перед выполнением операции aws s3 mv для каждого имени объекта.Сохраните ниже как script.sh:

   #!/bin/bash
   IFS=$'\n'
   while read LINE; do
     OBJECT=`echo $LINE | cut -d ' ' -f 5`
     aws s3 mv s3://bucket/$OBJECT s3://bucket/folder/
   done < objects.txt

Выше читается каждая строка из файла objects.txt, cuts строка только в поле ключа объекта (так называемое имя файла), а затем передает это полек команде aws s3 mv.

Затем вы запустите это так:

   chmod +x script.sh // remember to make the script executable
   aws s3 ls s3://bucket/ > objects.txt
   ./script.sh

Обратите внимание, что если у вас есть сотни текстовых файлов, это может привести к удушению в вашем S3 ведро,Если у вас есть столько файлов, я бы посоветовал вам добавить небольшую задержку в цикл while выше, чтобы гарантировать, что вы отправляете менее 100 запросов в секунду.

Задержка в 20 мс будет означать, что вы отправляете 50 запросов на S3 в секунду.В этом случае полное выполнение может занять несколько секунд, но это должно быть приемлемо, учитывая, что это однократная операция.

РЕДАКТИРОВАТЬ Внимание!Возможно, вы захотите добавить проверку в цикл while, чтобы убедиться, что имя файла заканчивается на .txt перед выполнением mv.Это обеспечит перемещение только текстовых файлов.

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