【问题标题】:Terraform & S3 lifecycle: How to expire specific objects?Terraform 和 S3 生命周期:如何使特定对象过期?
【发布时间】: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


【解决方案1】:

S3 结构说明

前缀属性只是您的 s3 对象的路径减去存储桶名称。如果您有以下 S3“目录”s3://ec-integration-files/logs/,则前缀值将只是 logs/

该属性被命名为 prefix 而不是 path,因为虽然 s3 在技术上看起来像一个目录树结构,但它是平面存储。但是,管理控制台将对象显示为好像它们存储在目录结构中一样,并且它使用前缀来执行此操作。

另外一点澄清,您可以在根(或任何深度)有两个对象,分别命名为logslogs/。其中一个将在管理控制台中显示为目录,另一个显示为文件对象,但它们实际上只是两个名称不同的对象

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-06
    • 2020-07-28
    • 1970-01-01
    • 1970-01-01
    • 2021-05-23
    • 2020-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多