簡體   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