Получить все файлы (или имена файлов) из корзины s3 на определенную дату

Получить все файлы (или имена файлов) из корзины s3 на определенную дату

Мне нужно получить все файлы за вчерашний день из корзины s3. Я знаю, как это сделать в CLI, когда знаю имя файла: #aws s3 cp s3:{Path}/{FileName} {diretoryToCopyTo}

но как мне сделать это для файлов определенной даты? Просто получить список имен файлов для определенной даты тоже будет достаточно, из любого метода, не обязательно CLI.

Подвох:В корзине несколько миллионов файлов, поэтому я также ищу экономически эффективный способ.

решение1

Если имя файла содержит дату, вы можете использоватьвключить и исключить фильтры: aws s3 cp s3:{path}/ {directoryToCopyTo} --exclude "*" --include "*2019-09-09*"

Если дата есть только в метаданных файла, то в настоящее время нет метода фильтрации по дате на стороне сервера. Есть обсуждение на github, гдеwillstruebingимеет метод, использующий s3api:

вот способ сделать это с помощью s3apiи --queryфункции. Это проверено на OSX: aws s3api list-objects --bucket "bucket-name" --query 'Contents[?LastModified>=2016-05-20][].{Key: Key}'затем вы можете отфильтровать с помощью jq или grep, чтобы выполнить обработку с другими функциями s3api. Редактировать: не уверен, почему они не отображаются, но вам нужно использовать обратные кавычки, чтобы окружить дату, которую вы запрашиваете

...но это не уменьшает количество вызовов API, поскольку фильтрация выполняется на стороне клиента.

Связанный контент