terraform - Terraform 空和非空块地图变量
问题描述
我想使用 Terraform 制作后端服务。我使用资源类型google_compute_backend_service
现在,我有 2 个由gcloud
命令创建的后端服务。一个正在使用cdn_policy
块,另一个不使用cdn_policy
.
第一个 backend-services tfstate 就像
...
"cdn_policy": [
{
"cache_key_policy": [],
"signed_url_cache_max_age_sec": 3600
}
]
...
第二个后端服务就像
"cdn_policy": []
如何创建适用于它们的 terraform 脚本?因此,terraform 脚本可以为cdn_policy
包含其块图的后端服务运行,也可以为没有cdn_policy
.
在我的想法中,我可以创建 2 个 terraform 脚本。第一个用于 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
}
}
}
推荐阅读
- python - pandas 序列的唯一 ID
- json - 抓取 AJAX 生成的表格以批量下载 PDF
- bokeh - Bokeh Sphinx 扩展——如何包含来自 CSV 文件的数据?
- kiwi-tcms - 调用 TestRun.update() 时出现 xmlrpc.client.Fault
- java - 回文测试器难度
- java - 使用 sdk 对 AWS S3 存储桶中的对象进行计数时计数不正确
- java - 高效地从 Firebase 数据库获取用户数据
- openssl - 如何使用 openssl 以文本形式从 CA 打印证书
- kalman-filter - 扩展卡尔曼滤波器协方差收敛过快
- javascript - 无法在Vue的下拉列表中设置默认选中项