我正在尝试使用 NiFi表达式语言中包含文件路径的环境变量。当我只为文件名提供环境变量${MY_VAR}
时,它没有得到解决。
但是如果在NiFi EL
之前有空格或其他字符,则会对其进行评估,但这会产生无效的文件名。如何在没有任何额外字符的情况下解决此问题。
因此,根据观察,当整个内容只是EL
时,它不会被评估,否则就是。
PS:我正在尝试在 Truststore Filename 字段中提供默认StandardSSLContextService
答案 0 :(得分:5)
您遇到Apache NiFi中的错误。正如Bryan所指出的,信任库位置字段并不是为了支持表达式语言。问题源于StandardSSLContextService:183
处的自定义文件验证程序中调用.evaluateExpressionAttributes()
方法的行不正确,尽管上面几行注释解释了此自定义验证程序的完整原因是因为默认支持EL。
我运行了一个远程调试器,并且能够使用环境变量${TRUSTSTORE_LOCATION}
评估TRUSTSTORE_LOCATION
(必须在启动NiFi之前设置它,因为VariableRegistry.ENVIRONMENT_SYSTEM_REGISTRY
仅由{{{}创建在RunNiFi:270
中调用的1}}。我能够正确地将环境变量评估为文件路径,然后将其连接到当前运行目录(NotificationServiceManager
),而不是被视为绝对/相对路径,因为属性描述符不知道这是EL评估的结果。
我已提交NIFI-4274来记录此错误。解决方法是在NiFi中使用硬编码的信任库位置,并在文件系统上使用符号链接指向实际文件位置,如果您在配置时不知道它。