【发布时间】:2020-04-12 03:22:12
【问题描述】:
我正在创建一个将上传许多文件的 AWS S3 存储桶。
由于我不希望这些文件永远存在,我想每个月清空存储桶。
我正在使用 Terraform 来执行此操作。
我有以下文档https://www.terraform.io/docs/providers/aws/r/s3_bucket.html
以及以下 Terraform 配置:
resource "aws_s3_bucket" "garbage" {
bucket = "garbage-${terraform.workspace}"
acl = "private"
lifecycle {
prevent_destroy = false
}
lifecycle {
prevent_destroy = false
}
lifecycle_rule {
id = tmp
prefix= "tmp/"
enabled = true
expiration {
days = 1
}
}
server_side_encryption_configuration {
rule {
apply_server_side_encryption_by_default {
sse_algorithm = "AES256"
}
}
}
}
即使有文档,我也很难找到如何表明我希望每个月都删除此存储桶中的文件。
【问题讨论】:
-
您没有包含
expiration政策。另外,我不知道您可以使用生命周期策略清空存储桶。您通常会将对象配置为在创建后 30 天过期。您可能会设置一个日期,例如2019 年 12 月 31 日,但您必须在每个新月初更新该政策。 -
您可以指定对象在被删除或转换(例如到 Glacier)之前的生存时间。这不是在设定日期类型的事情上清空存储桶,但它实现了同样的事情 - 不会将每个对象保留超过 x 天。 @RobertReynolds 您是否尝试过使用
lifecycle_rule参数?如果你这样做了,你会得到什么错误?如果您没有收到错误消息,您看到的行为与您的预期有何不同? -
我不知道在 lifecyle_rule 中放入什么来实现您所说的:“在设定日期类型的事情上,但它实现了同样的事情 - 不将每个对象保留超过 x 天。”
-
@ydaestcoR 我已经编辑了我的帖子以添加 lifecylce_rule,我不确定它会做什么并且很难测试,据我了解它会删除 tmp 文件夹中的文件权利?
-
根据您添加的规则,前缀为 tmp/ 的对象将在 1 天后过期并排队等待删除。请注意,AWS 会定期评估生命周期规则(afaik 每天一次)并将过期对象排队等待删除。移除将在此之后的一段时间内进行。从到期之日起,您无需支付存储费用。
标签: amazon-web-services amazon-s3 terraform