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

OPA build后.manifest的file_rego_versions字段丢失如何保留?

如何在OPA Build后保留.manifest中的file_rego_versions字段?

我想要在应用中支持多版本Rego策略,查阅OPA官方文档得知.manifest文件的file_rego_versions字段可实现该功能,但将包含该字段的.manifest放入policies目录执行opa build命令后,生成的bundle包中file_rego_versions字段被移除。以下是具体操作步骤及问题复现过程:

操作步骤

  1. 创建policies目录及access_policy.rego文件,内容如下:
package example

default validate_policy = false

validate_policy {
        input.policyType == "onap.test.opa"
        input.policyVersion >= 1
        input.taskLogic != null
        input.address.zip >= 12345
        input.address.apt.doornum >= 101
        input.phone.number >= 1000000
}
  1. 在policies目录下创建.manifest文件,内容如下:
{
  "revision":"2",
  "roots":["example"],
  "rego_version": 0,
  "file_rego_versions": {
    "/access_policy.rego": 0
  }
}
  1. 执行以下命令构建bundle并查看结果:
cd policies;       
opa build -b . -o /tmp/bundle.tar.gz;
cd /tmp;
tar -axf bundle.tar.gz /.manifest -O

执行后得到的.manifest内容丢失了file_rego_versions字段:

{"revision":"2","roots":["example"],"rego_version":0}

解决方法

要在构建后的bundle中保留file_rego_versions字段,需注意以下两点:

  1. 使用支持该字段的OPA版本
    file_rego_versions是OPA bundle规范中较新引入的字段,需确保使用的OPA版本不低于v0.40.0(该版本正式支持此字段)。可以通过opa version命令检查当前版本,若版本过低则升级至最新稳定版。

  2. 修正文件路径格式
    .manifest中file_rego_versions的文件路径需为相对于bundle根目录的相对路径,而非绝对路径。将原配置中的"/access_policy.rego"改为"access_policy.rego",修正后的.manifest内容如下:

{
  "revision":"2",
  "roots":["example"],
  "rego_version": 0,
  "file_rego_versions": {
    "access_policy.rego": 0
  }
}

修正后重新执行opa build命令,即可在生成的bundle的.manifest中保留file_rego_versions字段。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 00:10:57