仅当字符串 var 是特定的 2 个值(stg 或 prod)时,我才会使用动态块。此代码不起作用:
dynamic "log" {
for_each = var.environment == "stg" || var.environment == "prod" ? [1] : [0]
content {
category = "AppServiceAntivirusScanAuditLogs"
enabled = true
}
}
Run Code Online (Sandbox Code Playgroud)
所以当环境是“stg”或“prod”时我想要这个块,但当它是其他任何东西时我不想要它。这可以运行,但逻辑不起作用。
我过去使用布尔变量做过类似的事情,这已经有效,但当我肯定可以以某种方式评估这些字符串时,我不愿意添加另一个变量?
还尝试将逻辑移至“enabled =”字段,该字段有效,但由于我遇到的问题的性质,我需要在块级别执行此操作。
Mat*_*ard 10
您的三元条件是正确的,但返回值不正确。当为可选嵌套块编码三元时,“falsey”返回值必须为空。这可以是空集、列表、对象或映射类型。该类型确实需要与您的“真实”返回值一致。在您的情况下,您要返回list“true”值的类型,因此我们需要list为“falsey”值返回一个空类型:
dynamic "log" {
for_each = var.environment == "stg" || var.environment == "prod" ? [1] : []
content {
category = "AppServiceAntivirusScanAuditLogs"
enabled = true
}
}
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,空值的迭代次数为零,这是“falsey”条件返回的所需行为。作为旁注,我个人的偏好是返回["this"]可选嵌套块三元数的“真实”条件,以与 Terraform 中围绕非特定块命名约定的推荐实践保持一致。
| 归档时间: |
|
| 查看次数: |
8600 次 |
| 最近记录: |