FetchS3Object

文档中心 › 组件索引 › FetchS3Object

FetchS3Object Processor

类型全限定名:cn.org.acal.lynxus.processors.aws.s3.FetchS3Object

所属 Bundle:cn.org.acal.lynxus:lynxus-aws-nar:2.11.8

描述

检索 S3 对象的内容并将其写入 FlowFile 的内容

标签

AmazonS3AWSGetFetch

使用场景

从 S3 获取特定文件

"Bucket" 属性应设置为包含该文件的 S3 存储桶的名称。通常这被定义为传入 FlowFile 上的一个属性, 因此此属性设置为 `${s3.bucket}`。
"Object Key" 属性表示要获取的文件的完全限定文件名。通常使用 FlowFile 的 `filename` 属性,因此此属性 设置为 `${filename}`。
必须设置 "Region" 属性以指示 Bucket 所在的 S3 区域。如果要构建的流程将在其他地方重用,最好通过将其设置为类似 `#{S3_REGION}` 的值来参数化 此属性。

"AWS Credentials Provider service" 属性应指定一个 AWSCredentialsProviderControllerService 实例,以便为访问该文件提供凭据。

多处理器协同场景

检索 S3 存储桶中的所有文件

s3stateretrievefetchallstream

配置 ListS3:

"Bucket" 属性应设置为文件所在 S3 存储桶的名称。如果要构建的流程将在其他地方重用,最好通过将其设置为类似 `#{S3_SOURCE_BUCKET}` 的值来参数化     此属性。
必须设置 "Region" 属性以指示 Bucket 所在的 S3 区域。如果要构建的流程将在其他地方重用,最好通过将其设置为类似 `#{S3_SOURCE_REGION}` 的值来参数化     此属性。

"AWS Credentials Provider service" 属性应指定一个 AWSCredentialsProviderControllerService 实例,以便为访问存储桶提供凭据。

然后将此处理器的 'success' Relationship 连接到 FetchS3Object。

配置 FetchS3Object:

"Bucket" = "${s3.bucket}"
"Object Key" = "${filename}"

"AWS Credentials Provider service" 属性应指定一个 AWSCredentialsProviderControllerService 实例,以便为访问存储桶提供凭据。

必须将 "Region" 属性设置为与 ListS3 处理器的 "Region" 属性相同的值。

仅从 S3 检索符合某些指定条件的文件

s3stateretrievefilterselectfetchcriteria

配置 ListS3:

"Bucket" 属性应设置为文件所在 S3 存储桶的名称。如果要构建的流程将在其他地方重用,最好通过将其设置为类似 `#{S3_SOURCE_BUCKET}` 的值来参数化     此属性。
必须设置 "Region" 属性以指示 Bucket 所在的 S3 区域。如果要构建的流程将在其他地方重用,最好通过将其设置为类似 `#{S3_SOURCE_REGION}` 的值来参数化     此属性。

"AWS Credentials Provider service" 属性应指定一个 AWSCredentialsProviderControllerService 实例,以便为访问存储桶提供凭据。

然后将此处理器的 'success' Relationship 连接到 RouteOnAttribute。

配置 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 处理器。

配置 FetchS3Object:

"Bucket" = "${s3.bucket}"
"Object Key" = "${filename}"

"AWS Credentials Provider service" 属性应指定一个 AWSCredentialsProviderControllerService 实例,以便为访问存储桶提供凭据。

必须将 "Region" 属性设置为与 ListS3 处理器的 "Region" 属性相同的值。

在 S3 存储桶中新文件到达时检索

说明:这种从 S3 检索文件的方法比使用 ListS3 更高效且更具成本效益。这是 AWS 推荐的模式。 但是,它确实要求将 S3 存储桶配置为在新文件到达时将通知放入 SQS 队列。有关更多信息,请参阅 https://docs.aws.amazon.com/AmazonS3/latest/userguide/ways-to-add-notification-config-to-bucket.html

配置 GetSQS:

必须将 "Queue URL" 设置为 SQS 队列的适当 URL。建议使用诸如 `#{SQS_QUEUE_URL}` 之类的值将此属性参数化。
必须设置 "Region" 属性以指示队列所在的 SQS 区域。最好通过将其设置为类似 `#{SQS_REGION}` 的值来参数化此属性。

"AWS Credentials Provider service" 属性应指定一个 AWSCredentialsProviderControllerService 实例,以便为访问存储桶提供凭据。

'success' 关系连接到 EvaluateJsonPath。

配置 EvaluateJsonPath:

"Destination" = "flowfile-attribute"
"s3.bucket" = "$.Records[0].s3.bucket.name"
"filename" = "$.Records[0].s3.object.key"

'success' 关系连接到 FetchS3Object。

配置 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 属性与环境/系统变量求值)
Regionus-west-2
  • Africa (Cape Town) — AWS Region Code : af-south-1
  • Asia Pacific (Hong Kong) — AWS Region Code : ap-east-1
  • Asia Pacific (Hyderabad) — AWS Region Code : ap-south-2
  • Asia Pacific (Jakarta) — AWS Region Code : ap-southeast-3
  • Asia Pacific (Malaysia) — AWS Region Code : ap-southeast-5
  • Asia Pacific (Melbourne) — AWS Region Code : ap-southeast-4
  • Asia Pacific (Mumbai) — AWS Region Code : ap-south-1
  • Asia Pacific (New Zealand) — AWS Region Code : ap-southeast-6
  • Asia Pacific (Osaka) — AWS Region Code : ap-northeast-3
  • Asia Pacific (Seoul) — AWS Region Code : ap-northeast-2
  • Asia Pacific (Singapore) — AWS Region Code : ap-southeast-1
  • Asia Pacific (Sydney) — AWS Region Code : ap-southeast-2
  • Asia Pacific (Taipei) — AWS Region Code : ap-east-2
  • Asia Pacific (Thailand) — AWS Region Code : ap-southeast-7
  • Asia Pacific (Tokyo) — AWS Region Code : ap-northeast-1
  • AWS European Sovereign Cloud (Germany) — AWS Region Code : eusc-de-east-1
  • aws global region — AWS Region Code : aws-global
  • AWS GovCloud (US-East) — AWS Region Code : us-gov-east-1
  • AWS GovCloud (US-West) — AWS Region Code : us-gov-west-1
  • aws-cn global region — AWS Region Code : aws-cn-global
  • aws-iso global region — AWS Region Code : aws-iso-global
  • aws-iso-b global region — AWS Region Code : aws-iso-b-global
  • aws-iso-e global region — AWS Region Code : aws-iso-e-global
  • aws-iso-f global region — AWS Region Code : aws-iso-f-global
  • aws-us-gov global region — AWS Region Code : aws-us-gov-global
  • Canada (Central) — AWS Region Code : ca-central-1
  • Canada West (Calgary) — AWS Region Code : ca-west-1
  • China (Beijing) — AWS Region Code : cn-north-1
  • China (Ningxia) — AWS Region Code : cn-northwest-1
  • EU ISOE West — AWS Region Code : eu-isoe-west-1
  • Europe (Frankfurt) — AWS Region Code : eu-central-1
  • Europe (Ireland) — AWS Region Code : eu-west-1
  • Europe (London) — AWS Region Code : eu-west-2
  • Europe (Milan) — AWS Region Code : eu-south-1
  • Europe (Paris) — AWS Region Code : eu-west-3
  • Europe (Spain) — AWS Region Code : eu-south-2
  • Europe (Stockholm) — AWS Region Code : eu-north-1
  • Europe (Zurich) — AWS Region Code : eu-central-2
  • Israel (Tel Aviv) — AWS Region Code : il-central-1
  • Mexico (Central) — AWS Region Code : mx-central-1
  • Middle East (Bahrain) — AWS Region Code : me-south-1
  • Middle East (UAE) — AWS Region Code : me-central-1
  • South America (Sao Paulo) — AWS Region Code : sa-east-1
  • US East (N. Virginia) — AWS Region Code : us-east-1
  • US East (Ohio) — AWS Region Code : us-east-2
  • US ISO East — AWS Region Code : us-iso-east-1
  • US ISO WEST — AWS Region Code : us-iso-west-1
  • US ISOB East (Ohio) — AWS Region Code : us-isob-east-1
  • US ISOB West — AWS Region Code : us-isob-west-1
  • US ISOF EAST — AWS Region Code : us-isof-east-1
  • US ISOF SOUTH — AWS Region Code : us-isof-south-1
  • US West (N. California) — AWS Region Code : us-west-1
  • US West (Oregon) — AWS Region Code : us-west-2
  • Use Custom Region — 用户定义的区域,可以是非 AWS 区域,和/或来自表达式语言(Expression Language)
服务所在的 AWS 区域
Custom Region自定义区域,例如 AWS 兼容服务提供商的区域
支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值)
AWS Credentials Provider Service控制器服务 API:
AwsCredentialsProviderService
cn.org.acal.lynxus-lynxus-aws-service-api-nar-2.11.8
用于获取AWS凭证提供者的Controller Service
Communications Timeout30 secs
Version要下载的对象的版本
支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值)
SSL Context Service控制器服务 API:
SSLContextProvider
cn.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:
AmazonS3EncryptionService
cn.org.acal.lynxus-lynxus-aws-service-api-nar-2.11.8
指定用于配置请求的加密服务控制器。FetchS3Object:仅在服务器端客户密钥加密的情况下需要配置。
Proxy Configuration Service控制器服务 API:
ProxyConfigurationService
cn.org.acal.lynxus-lynxus-standard-services-api-nar-2.11.8
指定代理配置 Controller Service 来代理网络请求。
Requester Paysfalse
  • true — 表示请求者同意支付与从 S3 存储桶检索对象相关的任何费用。
  • false — 不同意支付从 S3 存储桶检索对象的请求者费用。
如果为 true,表示请求者同意支付与从 S3 存储桶检索对象相关的任何费用。这将把 'x-amz-request-payer' 头设置为 'requester'。
Range Start开始从对象读取的字节位置。空值或零值将从对象开头开始读取。
支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值)
Range Length从对象下载字节数,从范围起始位置开始。空值或超出对象末尾的值将读取到对象末尾。
支持表达式语言:是(使用 FlowFile 属性与环境/系统变量求值)

关系 (Relationships)

名称描述自动终止
failureFlowFiles被路由到故障关系否
successFlowFiles被路由到成功关系否

写入的 FlowFile 属性

名称描述
s3.url可用于访问 S3 对象的 URL
s3.bucketS3 存储桶的名称
path文件的路径
absolute.path文件的路径
filename文件名
hash.value文件的 MD5 校验和
hash.algorithmMD5
mime.type如果 S3 提供内容类型/MIME 类型,则此属性将保存该文件
s3.etag可用于查看文件是否发生更改的 ETag
s3.exception处理器执行期间抛出的异常的类名
s3.additionalDetailsS3 提供了失败操作的详细信息
s3.statusCode失败操作的 HTTP 错误代码(如果有)
s3.errorCode失败操作的 S3 绰号
s3.errorMessage来自失败操作的 S3 异常消息
s3.expirationTime如果文件有过期日期,则将设置此属性,包含自 UTC 时间纪元以来的毫秒数
s3.expirationTimeRuleId规定该对象过期时间的规则 ID
s3.sseAlgorithm对象的服务器端加密算法
s3.versionS3 对象的版本
s3.encryptionStrategy用于存储 S3 对象的加密策略的名称(如果已加密)

状态管理

该组件不存储状态。

受限 (Restricted)

该组件不受限。

输入要求

该组件要求有传入连接。