1

我正在使用 S3 存储桶来存储我的 Web 应用程序日志文件。现在我需要知道是否有任何可用选项,仅保留最新的 20 个文件,无论它们何时创建。我不能使用 S3 自动到期选项,因为我总是需要存储桶中的最新 20 个文件。

4

2 回答 2

1

选项1:-

a) 使用 S3 通知服务并为 S3 中的每个 Put 对象触发 lambda


b)使用 python boto sdk 列出存储桶中的对象并将值(键,修改日期)存储在 list 中。


c) 按日期/时间对列表进行排序并删除旧记录数据第 21 条数据。

选项2:-

a) 在通知服务中配置 SQS 并为每个 put 对象触发 lambda。


b) 根据您的要求安排 lambda 服务。


c) 使用 python boto sdk 列出存储桶中的对象并将值(键,修改日期)存储在 list 中。


d) 按日期/时间对列表进行排序并删除旧记录数据第 21 条数据。

根据您的要求,您需要选择选项 1(或)选项 2。

如果您在 S3 存储桶中的文件写入/读取/下载是时间密集型操作,请选择选项 1
如果您的文件写入/读取/下载不是时间密集型操作,请选择选项 2。

于 2017-08-21T12:02:27.300 回答
1

我希望这个答案能解决你的问题

aws s3 ls s3://your-bucket/ --recursive | sort -k1 | sort -k2 | head -n -30 | awk '{$1=$2=$3=""; print $0}' | sed 's/^[ \t]*//' | while read -r line ; do  
echo "Removing \"${line}\"";                                                                      
    aws s3 rm "s3://your-bucket/${line}";              
done

更多详情:https ://stackoverflow.com/a/49373909/16885246

于 2021-09-12T09:44:09.487 回答