帮你快速理解、总结文档立即下载

Amazon S3 数据源

最近更新时间:2026-09-28 11:00:00
我的收藏

概述

Amazon S3(Simple Storage Service)是 AWS 提供的对象存储服务,适用于存放任意类型的数据文件。DataBuddy 数据接入支持将 Amazon S3 作为来源端,读取其中的文件做离线同步。本文介绍 Amazon S3 数据源的连接配置、能力支持范围、任务配置参数与常见问题。

支持的能力

能力
支持情况
说明
数据源版本
不涉及
托管服务,REST API 仅有唯一版本,创建数据源时无需选择版本
离线同步(读 / 写)
✓ / -
支持读取桶内文件作为离线同步任务的源端;DataBuddy 数据源仅支持接入读取,不支持写入
实时同步(读 / 写)
- / -
不支持以 Amazon S3 作为实时同步任务的数据端
直连分析(读 / 写)
- / -
不支持通过直连分析查询 Amazon S3
认证方式
Access Key ID / Secret Access Key
仅支持静态密钥,不支持临时安全凭据(Session Token)与 IAM Role 认证
支持的文件格式
TXT / CSV / JSON / Parquet / ORC
支持的压缩格式
none / deflate / gzip / bzip2 / lz4 / snappy
任务级配置项,详见 任务参数说明
完整数据源能力对照参见 支持的数据源与读取能力。

支持的文件格式

格式
说明
文本文件,需声明字段名与字段类型
逗号分隔文件,支持自定义字段分隔符
按 key 解析为字段,嵌套结构按 JSON 字符串整体保留
列式存储格式,自动解析文件自带 schema
优化行列存储格式,自动解析文件自带 schema

使用限制

限制项
说明
链路方向
当前仅支持作为来源端读取,不支持作为目标端写入
认证方式
仅支持 Access Key ID / Secret Access Key(静态密钥),不支持临时安全凭据(Session Token)与 IAM Role 认证
传输协议
强制 HTTPS,不提供 HTTP 选项;Endpoint 填写 http:// 或缺省协议时会自动校正为 https://
增量语义
增量以文件为粒度,不感知文件内的行级新增、更新、删除,也不感知文件删除
文件定位
文件路径须包含桶名(s3a://bucket_name/path/),不支持对象目录树浏览与文件采样预览
存储类型
归档存储、深度归档存储类型的对象需先解冻后才能读取
Schema 一致性
同一任务读取的所有文件视为同一张逻辑表,须适配同一套 schema;schema 不一致的记录进入脏数据处理链路

前提条件

获取访问密钥

在 AWS 控制台 IAM 中创建用户并生成 Access Key ID 与 Secret Access Key,为该用户授予目标桶的 s3:GetObject 与 s3:ListBucket 权限。建议使用 IAM 子用户密钥并遵循最小权限原则,仅授予任务所需桶与前缀的读取权限,避免使用根账号密钥。

网络与环境准备

确认 DataBuddy 执行资源与 Amazon S3 的服务端点之间网络连通;跨公网读取时请评估链路稳定性与流量成本。
待读取对象的存储类型为标准存储;归档存储与深度归档存储需先完成解冻。

创建数据源的步骤

1. 登录 DataBuddy 控制台。
2. 在顶部切换到目标地域和 Workspace。
3. 进入 数据集成 > 数据源管理(或 平台管理 > 数据源管理)。
4. 点击 添加数据源,选择 Amazon S3。
5. 填写连接配置与认证信息,详见 数据源配置。
6. 点击 连通性测试(参见 数据源连通性测试)。
7. 测试通过后点击保存或保存 & 创建任务。

支持的配置列表及详细说明

数据源配置

以下为数据源级配置,作用于引用该连接的所有任务。
参数
说明
是否必填
默认值
数据源名称
数据源在工作空间内的唯一标识
是
—
描述
数据源的用途说明,便于团队协作识别
否
—
Endpoint
S3 服务端点,如 https://s3.us-east-1.amazonaws.com;必须为 https:// 前缀,输入 http:// 或缺省协议时自动校正;支持填写 S3 兼容存储的端点
是
—
Region
桶所在地域,如 us-east-1;由 Endpoint 自动推断并回填,允许手工修改
是
由 Endpoint 推断
Access Key ID
AWS 访问密钥 ID
是
—
Secret Access Key
AWS 访问密钥,加密存储,保存后不再展示明文
是
—
凭据托管
开启后从凭据管理系统获取密钥,需凭据处于生效状态
否
关闭
存储桶 Bucket
默认存储桶;任务级文件路径可指定其他桶,需同一凭据具备对应权限
是
—
数据源权限
项目共享 / 仅个人和管理员
是
项目共享
网络方式
公网 / 私网,复用现有网络通道与资源组
是
公网
编辑数据源时,除数据源名称与所属项目外均可编辑,密钥字段需重新输入。

任务配置

以下为任务级配置,仅作用于当前任务的 S3 读取节点。配置链路:选择连接 → 同步范围 → 同步方式 → 文件路径 → 文件类型 → 格式参数 → 字段配置 → 高级参数。

同步范围

模式
行为
全量
同步文件路径下的所有文件,无状态、可重复运行
增量
同步文件路径下「上周期计划调度时间 ~ 本周期计划调度时间」之间更新的文件,按对象的最后修改时间(Last Modified)比对
可选值:全量 / 增量,默认 全量。
增量的生效约束:
同步范围仅对目录形式的文件路径生效;路径指向具体文件时不生效,按该文件同步。
调试运行时,增量退化为同步路径下的所有文件。
时间口径以 S3 对象的最后修改时间为准,统一按 UTC 比对后换算到调度时区。
说明:
增量以文件为粒度,不感知文件内的行级变更,也不感知文件删除。若文件被覆盖重写,该文件会整体重新同步,可能产生重复数据,建议配合按日期分区的目录结构使用。

增量时间窗口配置

选择增量同步后,可在文件路径下配置增量时间窗口:
参数
说明
是否必填
默认值
增量开始时间
时间窗口起点,仅筛选最后修改时间 ≥ 该时间的文件
是
上周期计划调度时间
增量结束时间
时间窗口终点,仅筛选最后修改时间 < 该时间的文件
是
本周期计划调度时间
支持填写调度时间参数,格式为 ${yyyyMMddHHmmss} 或 ${yyyy-MM-dd HH:mm:ss}。
缺省取值即为「上周期计划调度时间 ~ 本周期计划调度时间」,无需手工填写。
时间与 S3 对象的最后修改时间(Last Modified)比对时,统一按 UTC 口径换算。

同步方式

模式
行为
数据同步
解析结构化文件内容,按字段映射写入目标端,需配置文件类型与格式参数
文件传输
不解析文件内容,整体搬迁文件,可用于非结构化数据
可选值:数据同步 / 文件传输,默认 数据同步。选择文件传输时,格式参数与字段配置不再展示。

任务参数说明

参数
说明
是否必填
默认值
数据连接
已配置的 Amazon S3 数据源,展示连接名称与 Endpoint、桶摘要
是
—
文件路径
须包含桶名,如 s3a://bucket_name/path/;支持 * 通配符;支持递归读取子目录
是
—
文件类型
TXT / CSV / JSON / ORC / PARQUET
是
TXT
字段分隔符
仅 TXT、CSV 在数据同步模式下可见;不支持 ${}
条件必填
,
行分隔符
仅 TXT、CSV 在数据同步模式下可见;最多配置 3 个;不填时按运行环境默认(Linux \\n,Windows \\r\\n);不支持 ${}
否
—
编码
utf8 / gbk
是
utf8
压缩格式
none / deflate / gzip / bzip2 / lz4 / snappy
是
none
Quote character
无配置 / 双引号 " / 单引号 ',将引号内内容作为完整值读取
否
无配置
跳过表头
是否跳过文件首行;勾选后可从首行表头自动生成字段名
是
否
空值转换
读取时将指定字符串转为 NULL;不支持 ${}
否
—
说明:
文件路径中使用通配符会在列举对象时带来额外的性能与内存开销,建议优先使用精确的分区目录路径,或将大目录按分区拆分为多个任务。
字段分隔符不支持 ${},因为 ${a} 会被识别为调度参数。

最佳实践

实践
建议
密钥最小化
使用 IAM 子用户密钥,仅授予目标桶与前缀的 s3:GetObject、s3:ListBucket 权限
目录规划
按日期分区组织目录,配合增量同步缩小每次扫描范围
路径写法
优先使用精确的分区目录路径,减少通配符使用;大规模目录(十万级以上文件)按分区拆分为多个任务
格式校验
通过调试运行验证分隔符、编码、表头、Quote character 等参数是否符合预期
空分区处理
周期调度中出现空分区目录时,配置 ignoreDirEmpty=TRUE、ignoreFileNotFound=TRUE 跳过
网络打通
确保执行资源与 S3 端点网络连通,跨公网场景评估链路稳定性与流量成本

常见问题

Q:认证失败(Access Denied)?

A:检查 Access Key ID 与 Secret Access Key 是否正确,并确认该密钥具备目标桶的 s3:GetObject、s3:ListBucket 权限;同时确认 Region 与桶实际所在地域一致。

Q:读取不到文件?

A:依次确认:文件路径是否包含桶名(s3a://bucket_name/...)、前缀是否匹配对象 Key、文件是否被压缩且压缩格式选择正确、对象的存储类型是否为尚未解冻的归档存储。

Q:任务报「路径下无文件」或「文件不存在」?

A:周期调度中源端目录暂时为空属常见情况。在该任务的 S3 读取节点高级参数中添加 ignoreDirEmpty=TRUE、ignoreFileNotFound=TRUE 即可跳过;文件传输模式下需同步空文件时追加 transEmpFile=TRUE。

Q:增量同步后目标端出现重复数据?

A:增量以文件为粒度筛选,文件被覆盖重写后会整体重新同步。建议源端按日期分区写入、不做原地覆盖,并在目标端按分区做幂等处理。

Q:源端删除的文件,目标端为什么没有被删除?

A:增量同步不感知文件删除,源端删除不会触发目标端删除。如需同步删除,请在目标端自行维护清理逻辑。

Q:读取性能不佳或任务内存溢出?

A:优先检查文件路径是否使用了通配符、单目录下文件数是否过多,建议改为精确分区路径并将大目录拆分为多个任务;同时避免配置多个行分隔符与不必要的 Quote character。

相关文档