AWS S3 Объединение файлов с помощью CLI - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь объединить / объединить содержимое всех файлов, существующих в папке S3 Bucket, в новый файл. Объединение / объединение должно выполняться в порядке возрастания Последнего изменения файла S3.

Я могу сделать это вручную, используя жестко закодированные имена файлов, как показано ниже:

(aws s3 cp s3://bucket1/file1 - && aws s3 cp s3://bucket1/file2 - && aws s3 cp s3://bucket1/file3 - ) | aws s3 cp - s3://bucket1/new-file

Но теперь я хочу изменить команду CLI, чтобы мы могли выполнить это объединение файлов, основываясь на списке как можно большего количества файлов в папке, отсортированных по дате последнего изменения. Поэтому в идеале команда cp должна получить список всех файлов, которые существуют в папке S3, отсортированных по Last Modified, а затем объединить их в новый файл.

Я ценю помощь каждого в этом.

1 Ответ

2 голосов
/ 23 апреля 2020

Дайте вам несколько советов.

Сначала перечислите файлы в порядке, обратном Последнему изменению.

aws s3api list-objects --bucket bucket1 --query "reverse(sort_by(Contents,&LastModified))"

Тогда у вас должно получиться присоединить остальные команды, как вы это сделали

aws s3api list-objects --bucket bucket1 --query "reverse(sort_by(Contents,&LastModified))" |jq -r .[].Key |while read file
do
   echo $file
   # do the cat $file >> new-file
done

aws s3 cp new-file s3://bucket1/new-file
...