我希望设置S3桶的生命周期规则,以便在生成桶中的每个文件7天后被删除。
如果我将生命周期规则设置如下(下面是terraform代码,类似于控制台设置,所以我只是在这里使用它),那么从今天起7天后,桶"test“中的所有文件会被删除还是每个文件会在不同的日期被删除,因为它们是在不同的日期创建的?我希望他们在不同的日期被删除,而不是在一起。
顺便说一句,我想我不需要配置:永久删除以前的版本,因为我的s3没有启用版本。如果我错了,请纠正我。
resource "aws_s3_bucket" "s3" {
bucket = "test"
lifecycle_rule {
id = "remove_after_7d"
enabled = true
expiration {
days = 7
}
}
}发布于 2018-03-07 05:01:30
对象将在其单独创建后7天被移除--而不是在您创建规则之后的7天。例如,如果一个桶中的所有对象都至少有7天的历史,那么它们都应该在创建规则后的大约24小时内消失。
请注意,时间不是很精确,因为删除过程是在后台完成的,因此对象通常会比您预期的长几个小时,如果您假设对象在桶中停留的时间恰好是7×24小时的话。在第一次创建策略之后,对象可能需要一两天才能消失。但是,一旦策略已经对所有对象进行了全面评估,S3将在过期对象到达时停止对过期对象的存储计费,即使删除过程还没有实际删除它们。
对于非版本化的存储桶,您是正确的--没有要删除的先前版本。不过,使用版本化的存储桶通常是个好主意,因为它消除了由于任何原因(比如应用程序中的bug )而无意中删除或覆盖对象的数据丢失风险。
发布于 2019-02-06 11:53:43
如我所知,上面的配置将删除桶创建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)。
https://stackoverflow.com/questions/49143125
复制相似问题