【发布时间】:2022-11-29 22:01:16
【问题描述】:
我有一个 terraform 模块来为用户创建一些具有指定权限的存储桶,现在我需要为一些桶指定一些生命周期规则,我需要在两个变量之间进行映射,如下所示:
变量.tf
variable "buckets" {
description = "List of buckets"
type = list(string)
default = []
}
variable "bucket_deletion_rules" {
description = "Ad-hoc Bucket deletion rules"
type = set(object({}))
default = [{}]
}
桶.tf
resource "google_storage_bucket" "data_bucket" {
for_each = toset(var.buckets)
name = each.key
project = var.project
location = var.region
uniform_bucket_level_access = true
versioning {
enabled = false
}
dynamic "lifecycle_rule" {
for_each = var.bucket_deletion_rules
content {
action {
type = "Delete"
}
condition {
age = lifecycle_rule.value
}
}
}
}
上面的代码不能正常工作!这个想法是像这样定义变量:
buckets = [
"bucket-mhmd-test1",
"bucket-mhmd-test2",
"bucket-mhmd-test3"
]
bucket_deletion_rules = [
{
"bucket-mhmd-test1" = 50
"bucket-mhmd-test2" = 10
}
]
我试图在动态中放置一个嵌套的 for_each,但我无法将存储桶名称与存储桶删除规则进行比较。那么现在我如何定义变量并在这两个变量之间进行均衡以将规则应用于所需的桶?
【问题讨论】:
-
错误是什么?
-
@MarkoE 没有错误,terraform 不关心生命周期并创建存储桶。
标签: google-cloud-platform terraform google-cloud-storage terraform-provider-gcp gcs