我想设置S3存储桶的生命周期规则,以便存储桶中的每个文件在生成后7天被删除。
如果我按如下方式设置生命周期规则(以下是terraform代码,类似于控制台设置,所以我只是在这里使用它),将桶中的所有文件" test"从今天起7天后删除,或者在不同的日期删除每个文件,因为它们是在不同的日期创建的?我希望它们在不同日期删除,而不是一起删除。
BTW,我想我不需要配置:永久删除以前的版本,因为我的s3没有启用版本。如果我错了,请纠正我。
resource "aws_s3_bucket" "s3" {
bucket = "test"
lifecycle_rule {
id = "remove_after_7d"
enabled = true
expiration {
days = 7
}
}
}
答案 0 :(得分:3)
对象将在创建个体后7天内删除 - 而不是在创建规则后7天。例如,如果存储桶中的所有对象都至少有7天的历史,那么在创建规则后大约24小时内它们都应该消失。
请注意,时间不准确,因为删除过程是在后台完成的,因此对象通常会比您预期的要长几个小时,如果您认为7×24小时是对象保留多长时间在桶里。首次创建策略后,对象可能需要一两天才能消失。但是,一旦针对所有对象对策略进行了全面评估,S3将在到期时间到达时停止向您收取过期对象的存储费用,即使删除过程尚未实际删除它们。
对于非版本化存储桶,您是正确的 - 没有以前的版本要删除。但是,使用版本化的存储桶通常是一个好主意,因为它可以消除因无意中删除或覆盖对象而导致数据丢失的风险,无论出于何种原因(例如应用程序中的错误)。
答案 1 :(得分:-1)
据我所知,以上配置将在创建存储区7天后删除存储区。如果要在创建对象的特定日期后删除特定文件,则必须将路径提到为前缀。例如。删除存储桶日志文件夹中的log.txt:
resource "aws_s3_bucket" "bucket"
{
bucket = "<<bucket_name>>"
acl = "private"
lifecycle_rule {
id = "log"
enabled = true
prefix = "log/log.txt"
expiration {
days = 7
}
} }
但是我在更新现有存储桶时遇到问题(错误409)。