带生命周期的空AWS S3存储桶

时间:2019-12-19 13:58:11

标签: amazon-web-services amazon-s3 terraform

我正在创建一个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"
      }
    }
  }
}

即使有了文档,我仍然很难找到我该如何表明我希望每个月在该存储桶中删除该文件。

1 个答案:

答案 0 :(得分:2)

您尚未包含有效期政策。

您通常会将对象配置为在创建对象后N天过期。您无法创建实现“在月底清空此存储桶”的生命周期策略。您可能会设置日期,例如2019年12月31日,届时所有对象都将过期,但是您必须更新该策略以反映后续的过期日期。

这是一个例子:

lifecycle_rule {
    id = "trash"
    prefix= "trash/"
    enabled = true

    expiration {
        days = 30
    }
}

这表示前缀为trash/的对象将在过期30天后过期并排队等待删除。请注意,AWS会定期评估生命周期规则(每天afaik一次),并且会将过期的对象排队以进行删除。移除将在那之后的一段时间进行。从对象过期起,不收取存储费用。

请注意,除了移除之外,还有其他转换可用,例如将对象移动到更便宜的存储层(例如Glacier)。