Как удалить все объекты из папки S3 различных подпапок с именем Specifi c, которые старше n дней, с использованием AWS Ruby SDK - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть требование удалить файлы с префиксом application.log, которые старше 5 дней в папке S3.

Файл присутствует внутри log-bucket/main-shell/apps/app-main-shell-55f79d74fc-4sx6c/helpkit.

Есть ли способ, где мы можем рекурсивно перечислять и удалять файлы, используя AWS Ruby SDK?

Ответы [ 2 ]

0 голосов
/ 18 февраля 2020

Если вы хотите выполнить однократную очистку объектов под одним префиксом ключа, вы можете использовать пакетные операции над коллекцией объектов.

s3 = Aws::S3::Resource.new()

s3.bucket('bucket-name').objects(prefix: 'some/key/prefix/').batch_delete!

При этом будут перечислены объекты с заданным префикс ключа, а затем выполнить пакетное удаление для каждой страницы результатов. Чем больше объектов с данным префиксом, тем больше вызовов API. Для удаления 1k объектов должно быть 2 запроса (1x список, 1x пакетное удаление).

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

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

0 голосов
/ 18 февраля 2020

Вместо написания собственного кода вы можете настроить жизненный цикл AWS3 с префиксом, используя RUBY SDK. В жизненном цикле, указанном после 5-го дня, удалите данные из определенного пути.

Ниже приведены справочные ссылки для настройки цикла S3 и Ruby SDK.

https://docs.aws.amazon.com/sdkforruby/api/Aws/S3/BucketLifecycle.html

https://docs.aws.amazon.com/AmazonS3/latest/dev/lifecycle-configuration-examples.html

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