You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform处理含缺失属性的对象时如何判断是否存在assign=true项

错误原因

原代码使用[*].assign批量提取属性时,只要任意一个对象不存在assign属性,就会在属性提取阶段直接抛出错误,即使外层套try也无法捕获该异常。

修复方案

改用for表达式逐个处理每个对象,单独用try处理单个对象的属性读取逻辑,缺失assign属性时默认返回false即可:

output "atLeastOneAssign" {
  value = anytrue([
    for obj in values(merge(local.assignments.users, local.assignments.groups)) :
    try(obj.assign, false)
  ])
}

逻辑说明

  1. 遍历合并后的所有用户、组权限对象
  2. 对单个对象尝试读取assign属性,属性不存在时返回默认值false
  3. 所有处理后的布尔值传入anytrue,判断是否存在至少一个为true的assign属性

你也可以用can函数实现等价效果,写法如下:

output "atLeastOneAssign" {
  value = anytrue([
    for obj in values(merge(local.assignments.users, local.assignments.groups)) :
    can(obj.assign) ? obj.assign : false
  ])
}

内容的提问来源于stack exchange,提问作者FrankS77

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 09:15:00