![](/img/trans.png)
[英]How to list all files in an s3 folder using AWS-SDK gem in ruby on rails
[英]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.