amazon-s3 - 在 NiFi FetchS3Object 中是否可以读取具有特定前缀的所有对象?
问题描述
我正在使用 NiFi 的 FetchS3Object 从 S3 存储桶中读取数据。在设置上,您可以指定要检索的对象的键。是否可以检索提供前缀而不是键的所有对象?
这是我的结构示例:
bucket-name
|--folder1
|----file1
|----file2
|--folder2
|----file1
|----file2
例如,我想读取folder1
.Using S3 SDK 中的所有文件,我列出了所有folder1
带有前缀的对象,然后获取具有特定前缀的任何单个对象。
我想到的一种可能的解决方案是开发一个自定义处理器来做我想做的事。
我不能使用 ListS3 处理器,因为当我从外部收到事件(流文件)时,我需要触发从 S3 的提取。列出来自 S3 的处理器等待事件
解决方案
为此,您需要在 NiFi 节点上安装 aws cli,然后您可以使用 ExecuteProcesss 脚本来运行如下命令:
aws s3api list-objects --bucket $BUCKET --prefix $PREFIX_IF_YOU_HAVE_IT --query "Contents[?contains(Key, '$VALUE_FROM_PREVIOS_PROCESSOR')]" | jq ".[0] .Key"
我建议使用前缀来减少扫描存储桶所需的时间。jq 在这里用于提取带有找到文件前缀的 json 值。您可能需要稍微更改命令,但它会给您一个方向。
推荐阅读
- list - F#关于打字的问题,float*float类型与'float'类型不匹配
- android-studio - 构建失败并出现异常。颤动的Gradle问题
- tensorflow - 如何将运行时信息传递给 Tensorflow 2 图形函数?
- oracle - 在同一会话状态下更改变量值
- python - Docker 中的 Elasticsearch:elasticsearch.exceptions.ConnectionError:ConnectionError - Python
- javascript - Deno Bundle 的混淆和压缩
- alert - Splunk 警报计划
- typescript - 打字稿:如何在对象中选择类型?
- java - 如何实现 SpringRetry
- python - 从 Python 中的日志文件中提取特定的 JSON