我正在学习 OPA 和 rego。 我正在尝试编写一个简单的策略,并通过 VSCode 插件对其进行评估。
文件夹结构:
learning.rego
package learning
test {
a := "test"
a == "test"
}
input.json
{}
当我从命令面板中选择“OPA:评估选择”选项时,出现以下错误。
{
"errors": [
{
"message": "expected body but got *ast.Package"
}
],
"metrics": {
"timer_rego_load_bundles_ns": 919639,
"timer_rego_module_compile_ns": 481890,
"timer_rego_module_parse_ns": 55722,
"timer_rego_query_parse_ns": 22773
}
}
但是相同的策略在 rego playground 中按预期工作,并按预期评估为“true”。我在这里错过了什么?
答案 0 :(得分:0)
尝试运行“Evaluate Package”而不是“Evaluate Selection”,它应该可以工作。
VSCode 的 Open Policy Agent 扩展提供了三种评估 Rego 代码的方法:
这似乎就是您想要的。这会将选定的 Rego 代码解析为一个完整的包。它期望选择以包声明开头(例如 package learning
)。如果您选择整个 Rego 包并运行“Evaluate Packages”,它应该可以工作。
此选项评估 Rego 包的部分,因此它期望选择以正文开头(例如您的 test
定义)。如果您只选择 test
及其定义,它应该可以工作。
最后一个选项是 bit more complex。本质上,它不是评估策略,而是返回满足策略的条件。这对于为外部数据存储构建查询或与复杂数据交互非常有用。