【发布时间】:2021-12-28 11:44:47
【问题描述】:
我正在编写这个 S3 存储桶生命周期规则:
lifecycle_rules = [
{
id = "log"
enabled = true
prefix = "log/"
tags = {
"rule" = "log"
"autoclean" = "true"
}
expiration = {
days = 365
}
}
]
下面提供了存储桶的 ASCII 模拟图: 日志每天动态写入此存储桶中。一些在文件夹 logs/ 中,一些在子文件夹 failed_logs/ 中,还有一些在存储桶的根文件夹中。
BUCKET/
|
nonlogfile.exe
log_file_that_i_DONT_wanna_delete.log
logs/
|
file1 (Created 2021-01-01)
file2 (Created 2021-01-02)
failed_logs/
|
file3 (Created 2021-01-03)
file4 (Created 2021-01-04)
我的目标是在 365 天后使 log/ 文件夹(及其子文件夹 failed_logs 中的每个文件)过期。
`file1` would expire at 2022-01-01
`file2` would expire at 2022-01-02
`file3` would expire at 2022-01-03
`file4` would expire at 2022-01-04
而
nonlogfile.exe
log_file_that_i_DONT_wanna_delete.log
永不过期。
Terraform 的 aws_s3_bucket documentation 声明:
lifecycle_rule对象支持以下内容:
prefix- (可选)对象键前缀,标识规则适用的一个或多个对象。
tags- (可选)指定对象标签键和值。
- 我不明白
prefix属性 - 我的文件没有标记
如何根据它们在存储桶上的位置,按上述说明定位它们?
【问题讨论】:
-
你是说你使用的前缀不起作用?
-
我是说我无法理解这个属性应该做什么。什么是对象键前缀?它适用于文件夹吗?比如会添加
prefix = 'log'目标日志文件夹中的所有文件以及日志文件夹所有子文件夹中的所有文件? -
前缀
log不会递归地应用于目录中的所有文件,它将寻找一个名为log的文件并且只应用于该文件。但是,log/的前缀值将递归地应用于该“目录”和“子目录”中的所有文件(我将单词目录放在引号中,因为它们实际上不是目录,它们是前缀)。log/是正确的前缀,假设日志目录位于存储桶的根目录 -
谢谢克里斯。这非常有帮助,如果您想将此作为答案发布,我会接受。
标签: amazon-web-services amazon-s3 terraform terraform-provider-aws amazon-s3-bucket