Apache NiFi 使用我自己的 ID 创建进程组

Apache NiFi Create Process Group with my own ID

背景

根据 NiFi API 文档,id 是创建进程组请求中的可选字段:

POST /process-groups/{id}/process-groups
{
  "revision": {
    "version" : 0
  },
  "id" : "8a698dd8-7947-43fd-8bdd-2d4f26ee3329",
  "component": {
    "name": "my-process-group-foo"
  }
}

这将创建一个新的进程组作为 {id} 进程组的子进程。我假设通过传入 GUID 作为请求正文的一部分,将使用我传入的 GUID 创建生成的进程组。

通过测试,虽然我已经意识到创建的进程组由 NiFi 分配了一个 id 并且不使用我传入的 id

上述示例的响应(精简)

{
  "revision": {
    "version": 1,
  },
  "id": "7d47183d-0173-1000-ffff-fffff6dceb50",
  "component": {
    "id": "7d47183d-0173-1000-ffff-fffff6dceb50",
    "parentGroupId": "348a629f-0173-1000-a243-b2203c5b8272",
    "name": "my-process-group-foo"
  }
}

我没有使用我要求的 ID 创建进程组,而是为其分配了一个全新的 ID。

如果我尝试将 id 添加到 component 对象中,我会收到 400 错误 Process group ID cannot be specified.

问题

有没有办法使用我指定的 id 创建进程组?

我目前正在尝试弄清楚当我在多个集群(不同的数据中心)上有相同的进程 运行 时如何从 NiFi Registry 更新版本化进程。我最初的想法是,如果我可以在所有集群上创建具有相同 id 的进程组,然后我可以让我的 CI/CD 管道创建一个版本更新请求,确信相同的 id 在所有集群上。

参考资料

https://nifi.apache.org/docs/nifi-docs/rest-api/index.html

简短的回答是不,你不能指定 UUID,它总是由 NiFi 分配。我相信该字段被标记为可选,因为您可以提供它而不会产生错误,但它会被忽略 - 例如当您上传模板或其他流程定义时。