繁体   English   中英

如何使用AWS Ruby SDK从具有特定名称的各种子文件夹的S3文件夹中删除超过n天的所有对象

[英]How to delete all objects from a S3 folder of various sub folder with Specific name which are older than n days using AWS Ruby SDK

我需要删除 S3 文件夹中超过 5 天的前缀为 application.log 的文件。

该文件位于log-bucket/main-shell/apps/app-main-shell-55f79d74fc-4sx6c/helpkit

有没有办法使用 AWS Ruby SDK 递归地列出和删除文件?

您可以使用 RUBY SDK 设置带有前缀的 AWS3 生命周期,而不是编写自己的代码。 在第 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

如果要对单个键前缀下的对象执行 1 次清理,可以对对象集合使用批处理操作。

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

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

这将列出具有给定键前缀的对象,然后为每页结果发出批量删除。 具有给定前缀的对象越多,api 调用就越多。 每 1k 个要删除的对象应该是 2 个请求(1x 列表,1x 批量删除)。

请注意,这是一个破坏性操作。 在发出批量删除之前,请确保您的密钥前缀是正确的。

如果您想经常这样做,那么我将使用存储桶生命周期配置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM