AWS S3存储桶清理但保存一定数量的文件夹

时间:2018-10-30 01:18:04

标签: amazon-web-services amazon-s3

因此,当前在S3存储桶中,我存储了从webpack输出的javascript捆绑文件。这是一个示例文件夹结构

- s3_bucket_name
  - javascript_bundle
     - 2018_10_11
     - 2018_10_09
     - 2018_10_08
     - 2018_10_07
     - 2018_10_06
     - 2018_10_05

所以我想清理文件夹,只保存5个文件夹。 (文件夹名称为部署日期)我无法按日期进行清理,因为我们可能会长时间不部署。 因此,我无法使用生命周期方法。

例如,如果我将到期日期设置为30天,如果我们没有部署30天,S3将自动删除所有文件夹,然后所有javascript文件都将被删除并且该站点将无法正常工作。 / p>

是否可以使用AWS CLI完成此操作?

要求是

  1. 按日期删除文件夹
  2. 至少保留5个文件夹

例如,给定以下文件夹,我们要删除30天以上的文件夹,同时保留至少5个文件夹

- 2018_10_11
- 2018_09_09
- 2018_08_08
- 2018_07_07
- 2018_06_06
- 2018_05_05

唯一将被删除的是2018_05_05

我没有看到通过aws s3 rm命令执行此操作的任何选项。

1 个答案:

答案 0 :(得分:1)

您可以指定要删除的文件夹,但是AWS CLI中没有选项来指定您不想想要删除的文件夹。

最好通过编写脚本(例如在Python中)来解决此要求,该脚本可以检索存储桶内容列表,然后应用一些逻辑来删除对象。

在Python中,使用boto3list_objects_v2()可以返回CommonPrefixes的列表,该列表实际上是文件夹列表。然后,您可以确定应保留哪些文件夹,然后删除所有其他路径中的对象。