terraform - 可选元素的动态块
问题描述
我在变量上有动态块。
dynamic "settings" {
for_each = var.settings
content {
id = lookup(settings.value, "id", null)
...
}
}
但是从调用模块来看,它不一定settings
总是存在,有时它只是被传递null
。
settings = null
但是,当这种情况发生时,我会在计划时得到关注。
var.settings is null
Cannot use a null value in for_each.
所以基本上,我只想在settings
is not时动态生成块null
。我怎样才能最好地解决这个问题?
解决方案
在这种情况下,您通常不希望分配一个list
或map
类型变量null
来指定一个未定义的值。您可能希望使用空构造函数[]
forlist
和{}
for map
。这将为您提供您想要的行为并促进干净的代码。
如果您真的想分配null
给非string
或number
类型,那么您可以使用具有空合并模式的合并函数(某些语言为此提供运算符;例如?:
在 JS 中):
for_each = coalesce(var.settings, [])
这会给你你想要的行为。请注意,它基本上添加了另一层以使用空构造函数作为备份/默认值,这是答案开头建议的最佳实践模式。
推荐阅读
- asynchronous - 如何解决 celery.backends.rpc.BacklogLimitExceeded 错误
- mysql - 如何在 CodeShip Basic 的测试管道中为 Laravel 应用程序运行自定义 mysql 脚本?
- sql - 在视图 SQL-ORACLE 中创建子查询
- javascript - window.location.state.buttonEnabled 总是无法通过 ReactJS 检查 undefined
- javascript - Google Apps 脚本中的硬换行符(带有 Google 表单字段的 Google Docs 在项目符号列表中创建新项目符号)
- python - Pytorch 预训练模型无法识别我的图像
- node.js - Firebase Cloud Functions - 设置服务帐户
- mysql - 错误 121 - 写入或更新时重复密钥
- c# - 查询语法不适用于 linq 中的多个对象
- css - 如何隐藏垫日历中的顶部按钮