【问题标题】:Deleting S3 objects with arbitrary tag-value删除具有任意标签值的 S3 对象
【发布时间】:2021-10-19 16:29:18
【问题描述】:

我天真地用一个通用键标记了 S3 对象,但使用了任意值(每批一个 UUID),认为返回并删除每个具有指定标记的对象会“足够简单”。

到目前为止,我的测试表明,如果我指定一个基于仅键(无值)过滤的生命周期规则,那么它仅匹配也具有键且无值的对象,而不是而不是用该键匹配所有对象无论价值如何

我目前正在等待午夜 UTC,以确保问题不在 Terraform 和 Amazon S3 之间。但是如果有一种已知的方法来指定apply rule to all objects with tag-key K,那将非常有帮助;迄今为止我发现的文档还不是很清楚。

为了完整起见,需要一点 terraform:

resource "aws_s3_bucket" "my_s3_bucket" {
  ...
  lifecycle_rule {
    id = "Tagged current version expiration"
    prefix = "my_prefix/"

    tags = {
      recyclable = ""
    }

    enabled = var.tagged_current_version_expiration_enabled

    noncurrent_version_expiration {
      days = var.tagged_noncurrent_version_expiration_days
    }
    
    expiration {
      days = var.tagged_current_version_expiration_days
    }
  }
  ...
}

【问题讨论】:

    标签: amazon-s3 terraform terraform-provider-aws s3-lifecycle-policy s3-object-tagging


    【解决方案1】:

    恐怕the lifecycle rules documentation 在这一点上很清楚,您必须为您创建的每个 UUID 编写规则。

    生命周期规则适用于同时具有这两个标签的对象 指定的。 Amazon S3 执行逻辑 AND。请注意以下几点:

    每个标签必须完全匹配键和值。

    该规则适用于具有所有标签的对象子集 规则中规定的。如果对象指定了附加标签,则 规则仍然适用。

    必须完全匹配 key 和 value 似乎表明你不能在这里使用任何通配符。

    【讨论】:

    • 我通常会同意,除了在标记对象和指定生命周期规则时,为键指定“值”是可选的。如果非值规则唯一匹配的是非值对象标签,那么为什么要支持它呢?它相当于“空字符串是唯一值”,而 S3 可能只需要一个值而不失一般性。并不是说你不正确,只是说如何解释可选标签值的想法并不明显。
    • 我希望看到生命周期规则和 S3 批处理作业支持通配符标记匹配。 IMO 将大大增强 S3 标签的功能。
    猜你喜欢
    • 1970-01-01
    • 2018-02-22
    • 1970-01-01
    • 1970-01-01
    • 2016-09-19
    • 1970-01-01
    • 2021-11-17
    • 1970-01-01
    • 2021-09-19
    相关资源
    最近更新 更多