在地形中,有没有一种方法可以为单个AWS S3存储桶提供多个生命周期配置块



我正在使用模块通过terraform创建一个AWS S3 bucket。这个模块创建了一个bucket,其中包含我公司要求的许多默认策略/配置。除此之外,它还使用aws_s3_bucket_lifecycle_configuration设置了一些生命周期规则。

我不想使用这些规则,它们可以通过上述模块的输入禁用。但问题是,当我尝试添加自定义生命周期配置时,每次都会得到不同的结果。有时我的规则会被应用,而在其他情况下,它们不在配置中
甚至文件上也写着:

注意:S3 Buckets只支持单个生命周期配置。将多个aws_s3_bucket_lifecycle_configuration资源声明到同一个s3 bucket将导致配置上的永久差异。

解决这个问题的方法是什么?

我无法将enable_private_bucket设置为false,但这是模块中配置资源的代码。

resource "aws_s3_bucket_lifecycle_configuration" "pca_private_bucket_infrequent_access" {
count  = var.enable_private_bucket ? 1 : 0
bucket = aws_s3_bucket.pca_private_bucket[0].id
}

您需要使用v3样式,但这似乎是唯一的方法。

以下是我如何使用dynamic块设置它,其中我有额外的生命周期规则

resource "aws_s3_bucket" "cache" {
bucket        = local.cache_bucket_name
force_destroy = false
tags = {
Name = "${var.vpc_name} cache"
}
lifecycle_rule {
id                                     = "${local.cache_bucket_name} lifecycle rule"
abort_incomplete_multipart_upload_days = 1
enabled                                = true
noncurrent_version_expiration {
days = 1
}
transition {
days          = 1
storage_class = "INTELLIGENT_TIERING"
}
}
dynamic "lifecycle_rule" {
for_each = var.cache_expiration_rules
content {
id      = "${lifecycle_rule.value["prefix"]} expiration in ${lifecycle_rule.value["days"]} days"
enabled = true
prefix  = lifecycle_rule.value["prefix"]
expiration {
days = lifecycle_rule.value["days"]
}
}
}
lifecycle {
prevent_destroy = true
}
}

相关内容

  • 没有找到相关文章

最新更新