Terraform空和非空块映射变量



我想使用Terraform制作后端服务。我使用resource_typegoogle_compute_backend_service

现在,我有两个由gcloud命令创建的后端服务。一个使用cdn_policy块,另一个不使用cdn_policy块。

第一个后端服务tfstate类似于

...
"cdn_policy": [
{
"cache_key_policy": [],
"signed_url_cache_max_age_sec": 3600
}
]
...

第二个后端服务类似

"cdn_policy": []

如何为他们两个创建地形脚本作品?因此,terraform脚本可以为包含cdn_policy及其块映射的后端服务运行,也可以为不包含cdn_policy的后端服务执行。

在我的想法中,我可以创建2个地形脚本。第一个用于cdn_policy,第二个不用于cdn_policy。但是,我认为这不是最好的做法。

如果我放cdn_policy = [],它将导致错误An argument named "cdn_policy" is not expected here

您可以使用动态块根据输入变量中的对象列表创建一组块:动态块

resource "google_compute_backend_service" "service" {
...
dynamic "cdn_policy" {
for_each = var.cdn_policy
content {
cache_key_policy             = cdn_policy.value.cache_key_policy
signed_url_cache_max_age_sec = cdn_policy.value.signed_url_cache_max_age_sec
}
}
}

最新更新