Очистка корзины AWS S3, но сохранение определенного количества папок - PullRequest
0 голосов
/ 30 октября 2018

Итак, в настоящее время внутри корзины S3 я храню файл комплекта javascript, выведенный из веб-пакета. Вот пример структуры папок

- s3_bucket_name
  - javascript_bundle
     - 2018_10_11
     - 2018_10_09
     - 2018_10_08
     - 2018_10_07
     - 2018_10_06
     - 2018_10_05

Итак, я хочу очистить папки и сохранить только 5 папок. (имя папки - дата развертывания). Я не могу выполнить очистку по дате, поскольку возможно, что мы не сможем развернуть в течение длительного времени. Из-за этого я не могу использовать методы жизненного цикла.

Например, если я установлю срок действия 30 дней, S3 автоматически удалит все папки, если мы не развернем в течение 30 дней, тогда весь файл javascript будет удален, а сайт не будет работать.

Есть ли способ сделать это с помощью AWS CLI?

Требования

  1. Удалить папку по дате
  2. Храните минимум 5 папок

Например, с учетом следующих папок и мы хотим удалить папки старше 30 дней, сохраняя при этом не менее 5 папок

- 2018_10_11
- 2018_09_09
- 2018_08_08
- 2018_07_07
- 2018_06_06
- 2018_05_05

Единственное, что будет удалено, это 2018_05_05.

Я не вижу вариантов сделать это с помощью команды aws s3 rm.

1 Ответ

0 голосов
/ 30 октября 2018

Вы можете указать, какие папки удалять, но в AWS CLI нет возможности указать, какие папки вы не хотите удалить.

Это требование лучше всего решить, написав скрипт (например, на Python), который может получить список содержимого Bucket, а затем применить некоторую логику, к которой должны быть удалены объекты.

В Python, используя boto3, list_objects_v2(), можно вернуть список CommonPrefixes, который фактически является списком папок. Затем вы можете определить, какие папки следует сохранить, а затем удалить объекты по всем другим путям.

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