ListGoogleDrive

文档中心 › 组件索引 › ListGoogleDrive

ListGoogleDrive Processor

类型全限定名:cn.org.acal.lynxus.processors.gcp.drive.ListGoogleDrive

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

描述

执行 Google Drive 文件夹中具体文件(忽略快捷方式)的列表。

标签

googledrivestorage

属性

下表中,加粗的属性为必填项;其余为可选项。表格同时标注默认值、是否支持表达式语言,以及是否为敏感属性(值会被加密)。

名称默认值可选值描述
GCP Credentials Provider Service控制器服务 API:
GCPCredentialsService
cn.org.acal.lynxus-lynxus-gcp-services-api-nar-2.11.8
用于获取 Google Cloud Platform 凭据的Controller Service。
Folder ID从中拉取文件列表的文件夹 ID。请参阅其他详细信息以设置对 Google 云端硬盘的访问并获取文件夹 ID。警告:对文件夹的未授权访问将被视为文件夹为空。这将导致处理器不创建输出 FlowFile。不会提供额外的错误消息。
支持表达式语言:是(仅使用环境/系统变量求值)
Search Recursivelytrue
  • true
  • false
当为 'true' 时,将包含具体子文件夹中的文件列表(忽略快捷方式)。否则,仅返回以定义的 'Folder ID' 作为直接父级的文件。警告:如果子文件夹过多(500+),列表操作可能会失败。
Minimum File Age0 sec文件必须达到的最低年龄才能被考虑; 任何比这更年轻的文件都将被忽略。
Listing Strategytimestamps
  • 跟踪时间戳 — 此策略跟踪已列取实体的最新时间戳以确定新/更新的实体。由于它只跟踪少量时间戳,因此可以高效管理列取状态。但是,任何新添加或更新的实体如果时间戳早于跟踪的最新时间戳,则无法被此策略拾取。例如,当带有旧时间戳的文件被复制或移动到目标目录且未更新其最后修改时间戳时,就可能发生这种情况。在列取运行时同时写入多个子目录时也可能遗漏文件。
  • 跟踪实体 — 此策略跟踪最新 '实体跟踪时间窗口' 内所有已列取实体的信息以确定新/更新的实体。此策略可以拾取具有旧时间戳的实体,这些实体可能在 '跟踪时间戳' 策略中被遗漏。即使在列取运行时同时写入多个子目录时也能正常工作。但是需要额外的 DistributedMapCache 控制器服务,并且使用更多的 JVM 堆内存。有关其工作方式的更多详细信息,请参阅 '实体跟踪时间窗口' 属性的描述。
  • 时间窗口 — 此策略使用滑动时间窗口。窗口从上一个窗口结束的地方开始,到 '当前时间' 结束。一个周期将列取修改时间落在时间窗口内的文件。即使在列取运行时同时写入多个子目录时也能正常工作。重要提示:此策略仅在托管 Lynxus 的系统和托管文件的系统上的时间都准确时才能正常工作。
  • 不跟踪 — 此策略在没有任何跟踪的情况下列取实体。每次执行此处理器时,同一实体都会被列取。建议更改默认的运行计划值。与持久化状态相关的任何属性都将被忽略。
指定如何确定新的/更新的实体。 有关详细信息,请参阅每个策略的说明。
Entity Tracking State Cache控制器服务 API:
DistributedMapCacheClient
cn.org.acal.lynxus-lynxus-standard-services-api-nar-2.11.8
已列出的实体存储在指定的缓存中, 以便该处理器能够在 Lynxus 重启或主节点变更后恢复列举。 'Tracking Entities' 策略需要跟踪最近 'Tracking Time Window' 内所有已列出实体的信息。 为支持大量实体,该策略使用 DistributedMapCache 而非托管状态。 缓存键格式为 'ListedEntities::{processorId}(::{nodeId})'。 如果按节点跟踪已列出的实体,则会添加可选的 '::{nodeId}' 部分以分别管理状态。 例如,集群范围缓存键 = 'ListedEntities::8dda2321-0164-1000-50fa-3042fe7d6a7b', 单节点缓存键 = 'ListedEntities::8dda2321-0164-1000-50fa-3042fe7d6a7b::lynxus-node3'。 存储的缓存内容是经过 Gzip 压缩的 JSON 字符串。 当目标列举配置发生变化时,缓存键将被删除。 由 'Tracking Entities' 策略使用。
Entity Tracking Time Window3 hours指定该处理器应跟踪已列出实体的时长。 'Tracking Entities' 策略可以选取时间戳位于指定时间窗口内的任何实体。 例如,若设为 '30 minutes',则该处理器运行时,最近 30 分钟内带有时间戳的任何实体都将成为列举目标。 当满足以下任一条件时,已列出的实体被视为 'new/updated' 并发出一个 FlowFile: 1. 不存在于已列出的实体中, 2. 时间戳比缓存的实体更新, 3. 大小与缓存的实体不同。 如果某个缓存实体的时间戳早于指定的时间窗口,该实体将从缓存的已列出实体中移除。 由 'Tracking Entities' 策略使用。
支持表达式语言:是(仅使用环境/系统变量求值)
Entity Tracking Initial Listing Targetall
  • 跟踪时间窗口 — 在首次列取活动中忽略时间戳早于指定 '跟踪时间窗口' 的实体。
  • 所有可用 — 不考虑实体时间戳,在首次列取活动中将列取所有现有实体。
指定应如何处理初始列举。 由 'Tracking Entities' 策略使用。
Record Writer控制器服务 API:
RecordSetWriterFactory
cn.org.acal.lynxus-lynxus-standard-services-api-nar-2.11.8
指定用于创建列表的记录写入器。如果未指定,将为每个列出的实体创建一个 FlowFile。如果指定了记录写入器,所有实体将写入单个 FlowFile,而不是将属性添加到各个 FlowFile。
Google Drive API ScopeDRIVE_SCOPES
  • Drive Scopes — 使用 Drive 专用范围。推荐用于大多数设置,包括具有全域委派(domain-wide delegation)的服务账号。
  • Cloud Platform — 使用更广泛的云平台范围。 将工作负载联合身份验证与服务帐户模拟结合使用时是必需的。
指定访问 Google Drive 时请求的 OAuth2 范围。'Drive Scopes' 使用特定于 Drive 的范围,推荐用于大多数设置,包括具有域范围委派的服务账户。'Cloud Platform' 使用更广泛的 cloud-platform 范围,在使用具有服务账户模拟的工作负载身份联合时需要此范围。
Proxy Configuration Service控制器服务 API:
ProxyConfigurationService
cn.org.acal.lynxus-lynxus-standard-services-api-nar-2.11.8
指定代理配置 Controller Service 来代理网络请求。
Connect Timeout20 sec连接 Google 云端硬盘服务的最长等待时间。
支持表达式语言:是(仅使用环境/系统变量求值)
Read Timeout60 secGoogle 云端硬盘服务响应的最长等待时间。
支持表达式语言:是(仅使用环境/系统变量求值)

关系 (Relationships)

名称描述自动终止
success所有收到的 FlowFiles 都会成功路由否

写入的 FlowFile 属性

名称描述
drive.id文件的 ID
filename文件的名称
mime.type文件的 MIME 类型
drive.size文件的大小。当文件大小不可用时设置为 0(例如外部存储的文件)。
drive.size.available指示文件大小是否已知/可用
drive.timestamp文件的最后修改时间或创建时间(取较大者)。这是因为文件上传到 Google Drive 时会保留原始修改日期。'创建时间'取上传发生的时间。但上传的文件之后仍可被修改。
drive.created.time文件的创建时间
drive.modified.time文件的最后修改时间
drive.path文件目录从基础目录开始的路径。路径包含 URL 编码的文件夹名称,因为 Google Drive 允许文件名中包含特殊字符,包括 '/'(斜杠)和 '\'(反斜杠)。URL 编码的文件夹名称以 '/' 分隔。
drive.owner文件的所有者
drive.last.modifying.user文件的最后修改用户
drive.web.view.link文件的网页查看链接
drive.web.content.link文件的网页内容链接
drive.parent.folder.id文件父文件夹的 ID
drive.parent.folder.name文件父文件夹的名称
drive.listed.folder.id被列出的基础文件夹的 ID
drive.listed.folder.name被列出的基础文件夹的名称
drive.shared.drive.id共享驱动器的 ID(如果文件位于共享驱动器上)
drive.shared.drive.name共享驱动器的名称(如果文件位于共享驱动器上)

状态管理

作用域描述
CLUSTER处理器存储必要的数据,以便能够跟踪已列出的文件。 What exactly needs to be stored depends on the 'Listing Strategy'. State is stored across the cluster so that this Processor can be run on Primary Node only and if a new Primary Node is selected, the new node can pick up where the previous node left off, without duplicating the data.

受限 (Restricted)

该组件不受限。

输入要求

该组件不允许有传入连接。

详细说明

ListGoogleDrive

从 Lynxus 访问 Google Drive

该 Processor 使用 Google Cloud 凭据进行认证,以访问 Google Drive。 为这些 Processor 准备 Google Cloud 和 Google Drive 账户需要以下步骤:

  1. 在 Google Cloud 中启用 Google Drive API
  2. 授予 Google Drive 文件夹的访问权限
    • 在 Google Cloud Console 中,进入 IAM & Admin -> Service Accounts。
    • 记下将要使用的服务账号的邮箱。
    • 在 Google Drive 中找到要列出的文件夹。
    • 右键点击文件夹 -> Share。
    • 输入服务账号的邮箱。
  3. 找到 Folder ID
    • 在 Google Drive 中找到要列出的文件夹并进入。浏览器中的 URL 末尾会包含 ID。例如,如果 URL 是 https://drive.google.com/drive/folders/1trTraPVCnX5_TNwO8d9P_bz278xWOmGm, 那么 Folder ID 就是 1trTraPVCnX5_TNwO8d9P_bz278xWOmGm
  4. 在 'Folder ID' 属性中设置 Folder ID