Terraform如何过滤locals指定key以跳过对应Google存储桶资源创建
你可以通过在for_each参数中加入过滤逻辑实现需求,无需修改原有locals.buckets的定义:
实现原理
使用Terraform的for表达式遍历原始桶配置,过滤掉不需要创建的develop、production两个key对应的条目后再传给for_each使用即可。
完整代码示例
locals { buckets = { sandbox1 = "sandbox1-bucket", sandbox2 = "sandbox2-bucket", develop = "develop-bucket", production = "production-bucket" } # 可自定义需要跳过创建的桶key,后续调整直接修改该列表即可 skipped_bucket_keys = ["develop", "production"] } resource "google_storage_bucket" "gcs_buckets" { for_each = { for bucket_key, bucket_name in local.buckets : bucket_key => bucket_name if !contains(local.skipped_bucket_keys, bucket_key) } name = each.value location = "US" force_destroy = true lifecycle_rule { condition { age = 30 } action { type = "Delete" } } }
简化写法(不需要单独定义跳过列表时可以用)
如果不需要后续灵活调整跳过的桶,也可以直接把判断条件写死在for_each里:
for_each = { for k, v in local.buckets : k => v if k != "develop" && k != "production" }
内容的提问来源于stack exchange,提问作者jagannath shetagar
相关产品推荐
相关产品推荐

