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

如何修复OPA规则中值比较的代码解析错误问题?

OPA规则中实现值比较的正确方式

错误原因

Rego不支持传统编程语言中if-else块内直接赋值的语法,你写的if { msg := ... } else { msg := ... }不符合Rego的语法规范,因此触发解析错误。

正确实现方式

方式一:使用三元表达式(Rego 1.10+支持)

这种方式最简洁,直接通过三元逻辑给msg赋值:

package example

vm_name = input.planned_values.root_module.resources[0].values.name
vm_name_length = count(vm_name)

msg := if vm_name_length == 13 then "OK" else "Not ok"

方式二:使用Rego规则匹配

这是Rego的传统写法,通过定义带条件的规则来实现逻辑分支:

package example

vm_name = input.planned_values.root_module.resources[0].values.name
vm_name_length = count(vm_name)

msg := "OK" {
    vm_name_length == 13
}

msg := "Not ok" {
    vm_name_length != 13
}

验证执行

执行你原来的命令即可得到正确结果:

./opa eval -i tfplan.json -d test1.rego "data.example"

输出会包含msg字段,根据vm_name_length的值返回对应的"OK"或"Not ok"。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 17:01:15