如何通过匹配文件名成对地从S3中获取文件?

时间:2017-02-17 17:23:30

标签: amazon-s3 apache-nifi

我的S3 bucket上有以下文件。

.
|__ bob.jpg
|__ bob.jpg.gz
|__ sam.jpg
|__ sam.jpg.gz
|__ joe.jpg
|__ joe.jpg.gz

我有一个FetchS3处理器来获取文件。但是,现在它获取所有文件,我想要做的是根据名称成对获取文件。例如,在一次通过中,我需要bob*个文件,然后是sam*个文件,最后是joe*个文件。

由于我将每对文件都放入我的python脚本中,我cannot allow就是这样:

python myscript.py -file1="bob.jpg" -file2="sam.jpg"

我正在寻找的是获取正确对中的文件,以便在每次传递时我的python脚本将被调用如下:

python myscript.py -file1="bob.jpg" -file2="bob.jpg.gz"

python myscript.py -file1="sam.jpg" -file2="sam.jpg.gz"

python myscript.py -file1="joe.jpg" -file2="joe.jpg.gz"

我正在考虑使用UpdateProcessor来定义jpg文件,如果存在,则会自动假设同一个文件名必须存在jpg.gz文件。

同样,这个想法说起来容易做起来难,而且我到处都没有。

1 个答案:

答案 0 :(得分:1)

我创建了一个template,您应该可以从中找到所需的内容。我假设命名策略是不变的(即joe.jpg将始终转换为joe.jpg.gz)。

此模板使用ListFile从目录中仅读取 “源”文件(无.gz),然后更新属性以获得image_filenamegzip_filename,并将它们传递给ExecuteStreamCommand处理器,该处理器将属性作为命令的参数引用(在本例中为echo)。

可能有一种更简洁的方法可以做到这一点,但我还没有完成ListFile / FetchFile个处理器的大量工作。

Template screenshot