S3生命周期策略配置:如何匹配所有.trash目录前缀
解决S3生命周期策略前缀匹配问题
核心问题:S3前缀不支持通配符
S3的生命周期策略前缀是固定字符串前缀匹配,不支持*、?这类通配符。你使用*/.trash/作为前缀时,星号会被当作普通字符处理,只会匹配对象键以*/.trash/开头的对象,而你的对象键是file1/.trash/...这类,完全不匹配,所以规则无法生效。
正确的配置方案
根据你的场景,有三种可行的配置方式:
为每个路径单独创建规则
针对每个.trash路径分别设置前缀,比如:- 前缀
file1/.trash/ - 前缀
file2/.trash/ - 前缀
file3/.trash/
每个规则对应一个路径,这样可以精准匹配对应目录下的所有对象,和你之前单个规则生效的逻辑一致。
- 前缀
统一对象存储路径(可选)
如果可以调整对象的存储结构,把所有.trash目录统一放到一个父前缀下,比如:trash/file1/trash/file2/trash/file3/
这样只需要设置一个前缀trash/,就能覆盖所有目标对象,减少规则数量。
使用标签匹配替代前缀
给所有.trash目录下的对象添加统一标签(比如category: trash),然后创建生命周期规则时选择基于标签匹配,只要对象带有该标签,无论存储在哪个路径下,都会被规则应用。这种方式更灵活,不需要依赖固定路径。
补充:前缀的规范写法
注意存储桶名MYBUCKET不属于前缀的一部分,前缀是对象键的开头部分。你之前使用的/file1/.trash虽然能生效,但规范写法应该去掉开头的斜杠,写成file1/.trash/(结尾带斜杠可以确保匹配该目录下的所有对象,而非单个名为file1/.trash的对象)。
内容的提问来源于stack exchange,提问作者Alexander Bermúdez Castañeda
相关产品推荐
相关产品推荐

