FetchS3Object Processor
描述
检索 S3 对象的内容并将其写入 FlowFile 的内容
标签
使用场景
从 S3 获取特定文件
"Bucket" 属性应设置为包含该文件的 S3 存储桶的名称。通常这被定义为传入 FlowFile 上的一个属性, 因此此属性设置为 `${s3.bucket}`。
"Object Key" 属性表示要获取的文件的完全限定文件名。通常使用 FlowFile 的 `filename` 属性,因此此属性 设置为 `${filename}`。
必须设置 "Region" 属性以指示 Bucket 所在的 S3 区域。如果要构建的流程将在其他地方重用,最好通过将其设置为类似 `#{S3_REGION}` 的值来参数化 此属性。
"AWS Credentials Provider service" 属性应指定一个 AWSCredentialsProviderControllerService 实例,以便为访问该文件提供凭据。
多处理器协同场景
检索 S3 存储桶中的所有文件
"Bucket" 属性应设置为文件所在 S3 存储桶的名称。如果要构建的流程将在其他地方重用,最好通过将其设置为类似 `#{S3_SOURCE_BUCKET}` 的值来参数化 此属性。
必须设置 "Region" 属性以指示 Bucket 所在的 S3 区域。如果要构建的流程将在其他地方重用,最好通过将其设置为类似 `#{S3_SOURCE_REGION}` 的值来参数化 此属性。
"AWS Credentials Provider service" 属性应指定一个 AWSCredentialsProviderControllerService 实例,以便为访问存储桶提供凭据。
然后将此处理器的 'success' Relationship 连接到 FetchS3Object。
"Bucket" = "${s3.bucket}"
"Object Key" = "${filename}"
"AWS Credentials Provider service" 属性应指定一个 AWSCredentialsProviderControllerService 实例,以便为访问存储桶提供凭据。
必须将 "Region" 属性设置为与 ListS3 处理器的 "Region" 属性相同的值。
仅从 S3 检索符合某些指定条件的文件
"Bucket" 属性应设置为文件所在 S3 存储桶的名称。如果要构建的流程将在其他地方重用,最好通过将其设置为类似 `#{S3_SOURCE_BUCKET}` 的值来参数化 此属性。
必须设置 "Region" 属性以指示 Bucket 所在的 S3 区域。如果要构建的流程将在其他地方重用,最好通过将其设置为类似 `#{S3_SOURCE_REGION}` 的值来参数化 此属性。
"AWS Credentials Provider service" 属性应指定一个 AWSCredentialsProviderControllerService 实例,以便为访问存储桶提供凭据。
然后将此处理器的 'success' Relationship 连接到 RouteOnAttribute。
如果你想将所有条件进行“或”(OR)组合(即只要满足任一条件就应检索该文件), 将 "Routing Strategy" 设置为 "Route to 'matched' if any matches"。
如果你想将所有条件进行“与”(AND)组合(即只有在满足所有条件时才检索该文件), 将 "Routing Strategy" 设置为 "Route to 'matched' if all match"。
对于你想据以过滤的每个条件,添加一个新属性。该属性的名称应描述该条件。 该属性的值应是一个 Expression Language 表达式,当文件满足条件时返回 `true`, 当文件不满足条件时返回 `false`。
你可能考虑据以过滤的一些属性有:
- `filename`(文件的名称)
- `s3.length`(文件中的字节数)
- `s3.tag.<tag name>`(名为 `tag name` 的 s3 标签的值)
- `s3.user.metadata.<key name>`(键名为 `key name` 的用户元数据的值)
例如,要仅获取至少 1 MB 且文件名以 `.zip` 结尾的文件,我们将设置以下属性:
- "Routing Strategy" = "Route to 'matched' if all match"
- "At least 1 MB" = "${s3.length:ge(1000000)}"
- "Ends in .zip" = "${filename:endsWith('.zip')}"
自动终止(Auto-terminate)`unmatched` Relationship。
将 `matched` Relationship 连接到 FetchS3Object 处理器。
"Bucket" = "${s3.bucket}"
"Object Key" = "${filename}"
"AWS Credentials Provider service" 属性应指定一个 AWSCredentialsProviderControllerService 实例,以便为访问存储桶提供凭据。
必须将 "Region" 属性设置为与 ListS3 处理器的 "Region" 属性相同的值。
在 S3 存储桶中新文件到达时检索
必须将 "Queue URL" 设置为 SQS 队列的适当 URL。建议使用诸如 `#{SQS_QUEUE_URL}` 之类的值将此属性参数化。
必须设置 "Region" 属性以指示队列所在的 SQS 区域。最好通过将其设置为类似 `#{SQS_REGION}` 的值来参数化此属性。
"AWS Credentials Provider service" 属性应指定一个 AWSCredentialsProviderControllerService 实例,以便为访问存储桶提供凭据。
'success' 关系连接到 EvaluateJsonPath。
"Destination" = "flowfile-attribute"
"s3.bucket" = "$.Records[0].s3.bucket.name"
"filename" = "$.Records[0].s3.object.key"
'success' 关系连接到 FetchS3Object。
"Bucket" = "${s3.bucket}"
"Object Key" = "${filename}"
必须将 "Region" 属性设置为与 GetSQS 处理器的 "Region" 属性相同的值。
"AWS Credentials Provider service" 属性应指定一个 AWSCredentialsProviderControllerService 实例,以便为访问存储桶提供凭据。
属性
| 名称 | 默认值 | 可选值 | 描述 |
|---|---|---|---|
| Bucket | ${s3.bucket} | 与之交互的 S3 存储桶 支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值) | |
| Object Key | ${filename} | 要使用的 S3 对象密钥。 这类似于传统文件系统的文件名。 支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值) | |
| Region | us-west-2 |
| 服务所在的 AWS 区域 |
| Custom Region | | 自定义区域,例如 AWS 兼容服务提供商的区域 支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值) | |
| AWS Credentials Provider Service | | 控制器服务 API:AwsCredentialsProviderServicecn.org.acal.lynxus-lynxus-aws-service-api-nar-2.11.8 | 用于获取AWS凭证提供者的Controller Service |
| Communications Timeout | 30 secs | ||
| Version | | 要下载的对象的版本 支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值) | |
| SSL Context Service | | 控制器服务 API:SSLContextProvidercn.org.acal.lynxus-lynxus-standard-services-api-nar-2.11.8 | 指定可选的 SSL 上下文服务,如果提供,将用于创建连接 |
| Endpoint Override URL | | 用于替代 AWS 默认端点的端点 URL,包括协议、主机、端口和路径。AWS 库根据 AWS 区域选择端点 URL,但此属性会覆盖所选端点 URL,允许与其他 S3 兼容端点一起使用。 支持表达式语言:是(仅使用环境/系统变量求值) | |
| Encryption Service | | 控制器服务 API:AmazonS3EncryptionServicecn.org.acal.lynxus-lynxus-aws-service-api-nar-2.11.8 | 指定用于配置请求的加密服务控制器。FetchS3Object:仅在服务器端客户密钥加密的情况下需要配置。 |
| Proxy Configuration Service | | 控制器服务 API:ProxyConfigurationServicecn.org.acal.lynxus-lynxus-standard-services-api-nar-2.11.8 | 指定代理配置 Controller Service 来代理网络请求。 |
| Requester Pays | false |
| 如果为 true,表示请求者同意支付与从 S3 存储桶检索对象相关的任何费用。这将把 'x-amz-request-payer' 头设置为 'requester'。 |
| Range Start | | 开始从对象读取的字节位置。空值或零值将从对象开头开始读取。 支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值) | |
| Range Length | | 从对象下载字节数,从范围起始位置开始。空值或超出对象末尾的值将读取到对象末尾。 支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值) |
关系 (Relationships)
| 名称 | 描述 | 自动终止 |
|---|---|---|
failure | FlowFiles被路由到故障关系 | 否 |
success | FlowFiles被路由到成功关系 | 否 |
写入的 FlowFile 属性
| 名称 | 描述 |
|---|---|
s3.url | 可用于访问 S3 对象的 URL |
s3.bucket | S3 存储桶的名称 |
path | 文件的路径 |
absolute.path | 文件的路径 |
filename | 文件名 |
hash.value | 文件的 MD5 校验和 |
hash.algorithm | MD5 |
mime.type | 如果 S3 提供内容类型/MIME 类型,则此属性将保存该文件 |
s3.etag | 可用于查看文件是否发生更改的 ETag |
s3.exception | 处理器执行期间抛出的异常的类名 |
s3.additionalDetails | S3 提供了失败操作的详细信息 |
s3.statusCode | 失败操作的 HTTP 错误代码(如果有) |
s3.errorCode | 失败操作的 S3 绰号 |
s3.errorMessage | 来自失败操作的 S3 异常消息 |
s3.expirationTime | 如果文件有过期日期,则将设置此属性,包含自 UTC 时间纪元以来的毫秒数 |
s3.expirationTimeRuleId | 规定该对象过期时间的规则 ID |
s3.sseAlgorithm | 对象的服务器端加密算法 |
s3.version | S3 对象的版本 |
s3.encryptionStrategy | 用于存储 S3 对象的加密策略的名称(如果已加密) |
状态管理
该组件不存储状态。
受限 (Restricted)
该组件不受限。
输入要求
该组件要求有传入连接。