我有一个python脚本,它接受命令行参数来解密文件.要执行的python命令如下所示:
python decrypt.py -f "file_to_decrypt.enc" -k "private_key_file.txt"
我正在尝试使用GetFile
处理器来挑选这些文件,NiFi
因为我可以在日志中看到文件名.
另一方面,我有一个ExecuteProcess
进程设置来运行如上所述的python脚本.但是,我需要将文件名传递ExecuteProcess
给Python脚本才能工作.所以我的问题是,我怎么管这些文件从GetFile
过程到ExecuteProcess process
的Apache NiFi
?
您可以使用ExecuteStreamCommand
处理器代替ExecuteProcess
.该处理器接受传入的flowfile并且可以访问属性和内容,而ExecuteProcess
是一个源处理器,并且不接受传入flowfiles.
我不知道你是否需要GetFile
(获取文件的内容); 试着ListFile
和RouteOnAttribute
你想要的两个文件名进行筛选.将两个成功的列表合并到一个流文件中MergeContent
,然后使用${filename}
属性和表达式语言用和填充命令参数.x.enc
y.txt
更新
ListFile
,UpdateAttribute
,RouteOnAttribute
,MergeContent
,和ExecuteStreamCommand
执行的命令行Python解密(由嘲笑echo
)注意,这使用了一种表达语言功能,该功能ifElse()
目前在NiFi中,master
但尚未发布.它是1.2.0版本的一部分,但如果你构建master
,你现在可以使用它.
我仍然认为EncryptContent
或特别ExecuteScript
是更紧凑,但这是有效的.