如何配置AWS实现S3中Exec_日期格式子文件夹到期自动删除
S3自动删除Exec_日期子文件夹、保留根目录的实现方案
你当前S3存储桶中Execution路径下的目录结构如下:
Execution/ Exec_06-06-2022/ file1.json file2.json Exec_07-06-2022/ file3.json file4.json
之前配置前缀为Execution/的生命周期规则会删掉根文件夹,踩坑的根本原因是S3是扁平对象存储,没有原生文件夹概念,控制台显示的Execution根文件夹本质是一个键(Key)为Execution/的0字节占位对象,你之前设置的规则前缀刚好匹配到这个占位对象,到期后就会把它删掉,直接导致控制台看不到根目录。
方案1:收窄生命周期规则匹配前缀(实现成本最低)
直接调整规则的匹配前缀,不要用过于宽泛的Execution/,改成Execution/Exec_就能解决问题:
- 规则只会匹配所有路径以
Execution/Exec_开头的对象,也就是所有Exec_日期戳命名的子文件夹内部的所有文件 - 键为
Execution/的根目录占位对象不会被这个前缀匹配到,会永久保留,不会被误删 - 规则动作直接选择「到期删除对象」,留存天数按你的实际需求设置为X天即可
注意:S3生命周期的过期时间是按对象最后修改时间计算的,如果你需要严格按照文件夹名上的日期戳计算留存期,上传文件到对应日期文件夹时要确保文件最后修改时间和文件夹日期对齐,避免出现文件还没到留存期就被删、或是超期未删的问题。
方案2:标签过滤(适合目录下存在其他非目标文件的场景)
如果后续Execution目录下会存放其他不需要自动删除的文件,怕前缀匹配出现误判,可以用标签做精准过滤:
- 所有上传到
Exec_日期戳子文件夹的文件,统一打上自定义标签,比如lifecycle=auto-delete - 生命周期规则配置两个匹配条件:前缀为
Execution/、对象携带标签lifecycle=auto-delete - 配置X天到期删除动作即可,既不会误删根目录占位对象,也不会影响同路径下其他未打对应标签的文件
验证方法
配置完成后建议先做小范围测试:新建Execution/Exec_test/测试文件夹,上传2个测试文件,临时把规则留存期改成1天,到期后检查即可:只有Exec_test下的文件会被删除,Execution根目录会正常保留。
内容的提问来源于stack exchange,提问作者Rakesh
相关产品推荐
相关产品推荐

