Nifi ListS3处理器未返回存储在S3中的文件的完整路径

时间:2017-02-01 21:19:06

标签: amazon-s3 apache-nifi

我正在使用NSOutlineView处理器从ListS3获取文件并将其传输到S3处理器。从那里我使用RouteOnAttribute作为Route to Property name并根据我正在收听的文件分配属性。

我能够看到我想要的所有文件但是无法对它们做任何事情,因为我的另一个处理器需要这些文件的Routing Strategy。我使用的是一个python脚本,它将full path作为cmd行参数。

如何从file path

中提取文件的完整绝对路径

1 个答案:

答案 0 :(得分:2)

您可以使用一系列NiFi处理器在本地列出,下载和保存S3文件,如下所示:

  1. ListS3 - 要获取对可以过滤的S3对象的引用。 ListS3的输出仅包含对象的引用,而不包含属性中的内容本身:

    • s3.bucket - 广告素材的名称,例如my-bucket
    • filename - 对象的键,如path/to/file.txt
  2. FetchS3Object - 使用上面的ListS3中的存储桶和密钥从S3下载对象内容。

  3. PutFile - 在本地存储文件。指定要放置文件的Directory属性/path/to/directory。 S3中的 filename 属性将包含来自S3键的相对路径,因此默认情况下会将这些路径添加到Directory
  4. 然后,您可以使用NiFi表达式语言为您的Python脚本组装本地路径:

    /path/to/directory/${filename}