Nifi:我可以对 Kerberos Principal 和 Kerberos Keytab 使用变量吗?



我有来自三个不同来源的文件进入"PutHDFS"处理器。这三个源都有单独的密钥表,并将转到单独的目录。由于源的名称在文件名中,因此我能够创建一个名为"source_name"的变量,我可以使用它来制作一个目录,如下所示:

/my/hdfs/directory/${source_name}/reports

我想对 KerberosPrincipal 和 Kerberos Keytab 做类似的事情,如下所示:

Kerberos Principal: ${source_name}@acme.com

Kerberos Keytab:/home/nifi/keytabs/${source_name}.keytab

但是,Nifi 正在从字面上读取这些值,我收到错误,指出它"无法验证 ${source_name}@acme.com">

Nifi 文档说这些字段支持表达式语言,但在 Nifi 本身(版本 1.7)中,它说这些字段仅支持"仅变量注册表"。尽管进行了广泛的搜索,我仍然无法确定"仅变量注册表"是什么意思。我是否被迫对 kerberos 值进行硬编码?

表达式语言允许引用来自多个不同来源的值,它的工作原理是层次结构,如下所述:

https://nifi.apache.org/docs/nifi-docs/html/user-guide.html#Using_Custom_Properties

当它显示"仅变量注册表"时,表示该属性的表达式语言语句无法访问传入流文件中的值。

造成这种情况的主要原因通常是因为这些值需要以每个流文件无法完成的方式使用。例如,HDFS 处理器需要在处理器启动时执行 kerberos 登录,然后定期续订票证。对无限数量的传入流文件值执行此操作会变得难以管理。

更新:

这可能是表达式语言可以访问的值层次结构的更好描述:

https://github.com/apache/nifi/blob/master/nifi-api/src/main/java/org/apache/nifi/expression/ExpressionLanguageScope.java#L20-L38

相关内容

  • 没有找到相关文章

最新更新