Скопируйте данные из AWS S3 Bucket локально на основе даты файла - PullRequest
0 голосов
/ 31 января 2019

Я хочу скопировать последний CSV-файл с добавленной датой из корзины AWS S3 на локальный диск.

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

1 Ответ

0 голосов
/ 31 января 2019

Загрузить последний объект по дате изменения

Если вы хотите получить только тот файл, который последний раз сохранялся в Amazon S3, вы можете использовать:

aws s3 cp s3://my-bucket/`aws s3api list-objects-v2 --bucket my-bucket --query 'sort_by(Contents, &LastModified)[-1].Key' --output text` .

Эта команда выполняет следующие действия:

  • Внутренняя команда aws s3api list-objects-v2 выводит список сегментов по дате (в обратном порядке), а затем возвращает ключ (имя файла) объекта, который был последний раз изменен
  • Внешняя команда aws s3 cp загружает этот объект в локальный каталог

Загрузка последнего объекта на основе имени файла

Если ваши имена файлов имеют вид:

some_file_20190130.csv
some_file_20190131.csv
some_file_20190201.csv

затем вы можете перечислить по префиксу и скопировать последний:

aws s3 cp s3://my-bucket/`aws s3api list-objects-v2 --bucket my-bucket --prefix some_file_ --query 'sort_by(Contents, &Key)[-1].Key' --output text` .

Эта команда выполняет следующие действия:

  • внутренние aws s3api list-objects-v2 списки командв блоке отображаются только файлы с заданным префиксом some_file_, сортировка по ключу (обратное), затем возвращает ключ (имя файла) объекта, который находится в конце сортировки
  • внешний aws s3 cp команда загружает этот объект в локальный каталог
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...