S3
本页指导您设置 S3 目标连接器。
先决条件
-
允许来自 Airbyte 到您的 AWS S3/Minio S3 集群的连接(如果它们位于不同的 VPC 中)。
-
具有凭证、Role ARN 或配置了主机(EC2、EKS)的实例配置文件的 S3 存储桶,具有读/写权限。
-
这些字段始终是必需的
- S3 存储桶名称
- S3 存储桶路径
- S3 存储桶区域
-
如果您使用 STS Assume Role,则必须提供
- Role ARN
-
如果您使用 AWS 凭证,则必须提供
- 访问密钥 ID
- 秘密访问密钥
-
如果您使用实例配置文件,您可以省略访问密钥 ID、秘密访问密钥和 Role ARN。
-
设置指南
步骤 1:设置 S3
登录到您的 AWS 账户。
准备将用作目标的 S3 存储桶,请参阅此处以创建 S3 存储桶。
注意:如果 S3 集群未配置为使用 TLS,则与 Amazon S3 的连接将无声地恢复为未加密的连接。Airbyte 建议所有连接都配置为使用 TLS/SSL,因为支持 AWS 的共享责任模型
创建存储桶策略
- 打开IAM 控制台。
- 在 IAM 仪表板中,选择策略,然后单击创建策略。
- 选择JSON 选项卡,然后将以下 JSON 粘贴到策略编辑器中(请务必替换您的存储桶名称)
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject",
"s3:PutObjectAcl",
"s3:ListBucket",
"s3:ListBucketMultipartUploads",
"s3:AbortMultipartUpload",
"s3:GetBucketLocation"
],
"Resource": [
"arn:aws:s3:::YOUR_BUCKET_NAME/*",
"arn:aws:s3:::YOUR_BUCKET_NAME"
]
}
]
}
目前,仅对象级权限不足以成功验证连接。请确保包含提供的示例中的存储桶级权限。
- 为您的策略指定一个描述性名称,然后单击创建策略。
身份验证选项 1:使用 IAM 角色(最安全)
使用 IAM 角色成员进行 S3 身份验证必须由 Airbyte 团队的成员启用。如果您想使用此功能,请联系销售团队以获取更多信息。
- 在 IAM 仪表板中,单击角色,然后创建角色。
- 选择适当的信任实体并附加您创建的策略。
- 设置角色的信任关系。例如,对于AWS 账户受信任实体,请使用实例上的默认 AWS 账户(它将用于承担角色)。要使用外部 ID,请将其设置为环境变量,如
export AWS_ASSUME_ROLE_EXTERNAL_ID="{your-external-id}"。编辑信任关系策略以反映这一点
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::{your-aws-account-id}:user/{your-username}"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "{your-external-id}"
}
}
}
]
}
- 选择AWS 账户受信任实体类型。
- 设置角色的信任关系。这允许 Airbyte 实例的 AWS 账户承担此角色。您还需要指定外部 ID,这是一个受信任服务(Airbyte)和受信任角色(您正在创建的角色)都知道的密钥。此 ID 用于防止“困惑的代理”问题。外部 ID 应为您的 Airbyte 工作区 ID,可以在您的工作区页面的 URL 中找到。编辑信任关系策略以包含外部 ID
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::094410056844:user/delegated_access_user"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "{your-airbyte-workspace-id}"
}
}
}
]
}
- 完成角色创建并记下 Role ARN。
- 选择直接附加权限,然后找到并选中您的新策略。单击下一步,然后单击添加权限。
身份验证选项 2:使用 IAM 用户
使用现有或创建新的访问密钥 ID 和秘密访问密钥。
- 在 IAM 仪表板中,单击用户。选择现有 IAM 用户或通过单击添加用户创建新用户。
- 如果您正在使用现有IAM 用户,请单击添加权限下拉菜单并选择添加权限。如果您正在创建新用户,您将在选择名称后被带到权限屏幕。
- 选择直接附加权限,然后找到并选中您的新策略。单击下一步,然后单击添加权限。
- 成功创建用户后,选择安全凭证选项卡并单击创建访问密钥。系统将提示您选择用例并为您的访问密钥添加可选标签。单击创建访问密钥以生成密钥。
步骤 2:在 Airbyte 中设置 S3 目标连接器
对于 Airbyte Cloud
- 登录到您的 Airbyte Cloud 账户。
- 在左侧导航栏中,单击目标。在右上角,单击+ 新目标。
- 在目标设置页面,从“目标类型”下拉菜单中选择S3,并为该连接器输入名称。
- 配置字段
- 访问密钥 ID
- 秘密访问密钥
- 与上述密钥 ID 对应的密钥。
- Role ARN
- 请参阅此处了解如何创建角色。
- S3 存储桶名称
- 请参阅此处以创建 S3 存储桶。
- S3 存储桶路径
- 要将数据同步到的 bucket 下的子目录。注意:默认值为
airbyte-data。
- 要将数据同步到的 bucket 下的子目录。注意:默认值为
- S3 存储桶区域:
- 有关所有区域代码,请参阅 此处。
- S3 路径格式
- 在 S3 Bucket 路径下存储数据的附加字符串格式。默认值为
${NAMESPACE}/${STREAM_NAME}/${YEAR}_${MONTH}_${DAY}_${EPOCH}_。
- 在 S3 Bucket 路径下存储数据的附加字符串格式。默认值为
- S3 端点
- 如果使用 AWS S3,请留空;如果使用 Minio S3,请填写 S3 URL。
- S3 文件名模式
- 该模式允许您设置 S3 暂存文件(s)的文件名格式,当前支持以下占位符组合:
{date}、{date:yyyy_MM}、{timestamp}、{timestamp:millis}、{timestamp:micros}、{part_number}、{sync_id}、{format_extension}。请勿使用空格和不支持的占位符,因为它们将无法识别。
- 该模式允许您设置 S3 暂存文件(s)的文件名格式,当前支持以下占位符组合:
- 点击
设置目标地址。
对于 Airbyte 开源版
-
转到本地 Airbyte 页面。
-
在左侧导航栏中,单击目标。在右上角,单击+ 新目标。
-
在目标设置页面,从“目标类型”下拉菜单中选择S3,并为该连接器输入名称。
-
配置字段
- 访问密钥 ID
- 请参阅此处了解如何生成访问密钥。
- 有关如何创建实例配置文件,请参阅 此处。
- 我们建议创建一个 Airbyte 专用用户。该用户需要具有对暂存 bucket 中的对象进行读写权限。
- 如果未提供访问密钥和密钥访问密钥,则身份验证将依赖于使用 STS Assume Role 的 Role ARN 或实例配置文件。
- 秘密访问密钥
- 与上述密钥 ID 对应的密钥。
- 确保运行 Airbyte 的机器可以访问您的 S3 bucket。
- 这取决于您的网络设置。
- 您可以查看 AWS S3 文档,其中包含有关如何正确配置 S3 访问权限的教程 此处。
- 如果使用实例配置文件身份验证,请确保该角色具有对 bucket 进行读/写权限。
- 验证 Airbyte 是否能够连接到您的 S3 bucket 的最简单方法是使用 UI 中的检查连接工具。
- S3 存储桶名称
- 请参阅此处以创建 S3 存储桶。
- S3 存储桶路径
- 要在上述 bucket 下同步数据的子目录。
- S3 存储桶区域
- 有关所有区域代码,请参阅 此处。
- S3 路径格式
- 在 S3 Bucket 路径下存储数据的附加字符串格式。默认值为
${NAMESPACE}/${STREAM_NAME}/${YEAR}_${MONTH}_${DAY}_${EPOCH}_。
- 在 S3 Bucket 路径下存储数据的附加字符串格式。默认值为
- S3 端点
- 如果使用 AWS S3,请留空;如果使用 Minio S3,请填写 S3 URL。
- S3 文件名模式
- 该模式允许您设置 S3 暂存文件(s)的文件名格式,当前支持以下占位符组合:
{date}、{date:yyyy_MM}、{timestamp}、{timestamp:millis}、{timestamp:micros}、{part_number}、{sync_id}、{format_extension}。 - 请勿使用空格和不支持的占位符,因为它们将无法识别。
- 该模式允许您设置 S3 暂存文件(s)的文件名格式,当前支持以下占位符组合:
- 访问密钥 ID
-
点击
设置目标地址。
使用默认 S3 路径格式 ${NAMESPACE}/${STREAM_NAME}/${YEAR}_${MONTH}_${DAY}_${EPOCH}_ 的完整输出路径是
<bucket-name>/<source-namespace-if-exists>/<stream-name>/<upload-date>_<epoch>_<partition-id>.<format-extension>
例如
testing_bucket/data_output_path/public/users/2021_01_01_1234567890_0.csv.gz
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
| | | | | | | format extension
| | | | | | unique incremental part id
| | | | | milliseconds since epoch
| | | | upload date in YYYY_MM_DD
| | | stream name
| | source namespace (if it exists)
| bucket path
bucket name
这种命名模式背后的原因在于
- 每个流都有自己的目录。
- 数据输出文件可以按上传时间排序。
- 上传时间由日期部分和毫秒部分组成,因此既易于阅读又具有唯一性。
但可以通过使用可用的变量来格式化 bucket 路径进一步自定义。
${NAMESPACE}:流来自的命名空间或由连接命名空间字段配置的命名空间。${STREAM_NAME}:流的名称${YEAR}:同步写入输出数据时的年份。${MONTH}:同步写入输出数据时的月份。${DAY}:同步写入输出数据时的日期。${HOUR}:同步写入输出数据时的小时。${MINUTE}:同步写入输出数据时的分钟。${SECOND}:同步写入输出数据时的秒。${MILLISECOND}:同步写入输出数据时的毫秒。${EPOCH}:同步写入输出数据时的自 Epoch 以来的毫秒数。${UUID}:随机 uuid 字符串
注意
- S3 路径中的多个
/字符将被折叠成单个/字符。 - 如果输出 bucket 包含太多文件,则 part id 变量将使用
UUID代替。否则,它使用顺序 ID。
请注意,如果连接上配置了前缀,则流名称可能包含前缀。数据同步可能会创建多个文件,因为输出文件可以按大小进行分区(目标压缩大小为 200MB 或更小)。
支持的同步模式
| 功能 | 支持 | 备注 |
|---|---|---|
| 完全刷新 - 覆盖同步 | ✅ | 警告:此模式将删除配置的 bucket 路径中所有先前同步的数据。 |
| 增量 - 追加同步 | ✅ | 警告:Airbyte 提供至少一次交付。根据您的源,您可能会看到重复的数据。了解更多信息 此处 |
| 增量 - 追加 + 去重 | ❌ | |
| 命名空间 | ❌ | 设置特定的 bucket 路径等同于拥有单独的命名空间。 |
Airbyte S3 目标允许您将数据同步到 AWS S3 或 Minio S3。每个流都写入 bucket 下的自己的目录。
⚠️ 请注意,在“完全刷新覆盖同步”模式下,在成功同步后保留来自同一代的数据,同时删除所有先前的数据。如果在不同代之间发生故障,直到后续成功同步,来自多个代的数据可能会保留。每个 S3 对象都标记有 x-amz-meta-ab-generation-id 以标识其代。我们建议为此次同步配置一个专用的 S3 资源,以避免由于配置错误而导致意外删除数据。⚠️
支持的输出模式
每个流将根据配置输出到其专用目录。每个流的完整数据存储包括该目录下的所有输出文件。您可以将该目录视为数据库世界中的表。
- 在完全刷新同步模式下,在创建新文件之前将清除旧输出文件。
- 在增量 - 追加同步模式下,将添加仅包含新数据的新输出文件。
Avro
Apache Avro 以紧凑的二进制格式序列化数据。目前,Airbyte S3 Avro 连接器始终使用 二进制编码,并假定所有数据记录都遵循相同的模式。
配置
这里可用的压缩编解码器是
- 无压缩
deflate- 压缩级别
- 范围
[0, 9]。默认值为 0。 - 级别 0:无压缩和最快。
- 级别 9:最佳压缩和最慢。
- 范围
- 压缩级别
bzip2xz- 压缩级别
- 范围
[0, 9]。默认值为 6。 - 级别 0-3 速度快,压缩率中等。
- 级别 4-6 速度较慢,压缩率高。
- 级别 7-9 类似于级别 6,但使用更大的字典并具有更高的内存要求。除非文件的未压缩大小超过 8MB、16MB 或 32MB,否则使用预设 7、8 或 9 会浪费内存。
- 范围
- 压缩级别
zstandard- 压缩级别
- 范围
[-5, 22]。默认值为 3。 - 负级别是类似于
lz4或snappy的“快速”模式。 - 高于 9 的级别通常用于存档目的。
- 高于 18 的级别使用大量内存。
- 范围
- 包含校验和
- 如果设置为
true,则将在每个数据块中包含校验和。
- 如果设置为
- 压缩级别
snappy
数据模式
在底层,Airbyte 数据流在 JSON 模式下首先转换为 Avro 模式,然后 JSON 对象转换为 Avro 记录。由于数据流可以来自任何数据源,因此 JSON 到 Avro 的转换过程具有任意规则和限制。了解更多关于如何将源数据转换为 Avro 以及当前限制的信息 此处。
CSV
与大多数其他 Airbyte 目标连接器一样,输出通常有三列:一个 UUID、一个提取时间戳和一个数据 blob。使用 CSV 输出,可以规范化(展平)数据 blob 到多个列。
| 列 | 条件 | 描述 |
|---|---|---|
_airbyte_raw_id | 始终存在。 | Airbyte 分配给每个处理记录的 uuid。 |
_airbyte_extracted_at | 始终存在。 | 表示从数据源提取事件的时间戳。 |
_airbyte_generation_id | 始终存在。 | 一个整数标识符,每次新的刷新都会增加。 |
_airbyte_meta | 始终存在。 | 一个结构化对象,包含有关记录的元数据。 |
_airbyte_data | 当不需要规范化(展平)时,所有数据都位于此列下,作为 JSON blob。 | |
| 根级别字段 | 当选择根级别规范化(展平)时,根级别字段将被展开。 |
_airbyte_meta 的模式是
| 字段名称 | 类型 | 描述 |
|---|---|---|
changes | list | 一个结构化更改对象的列表。 |
sync_id | 整数 | 同步作业的整数标识符。 |
更改对象的模式是
| 字段名称 | 类型 | 描述 |
|---|---|---|
field | 字符串 | 更改字段的名称。 |
change | 字符串 | 更改类型(例如,NULLED、TRUNCATED)。 |
reason | 字符串 | 更改的原因,包括其来源系统(即,是源、目标还是平台错误)。 |
例如,给定来自源的以下 JSON 对象
{
"user_id": 123,
"name": {
"first": "John",
"last": "Doe"
}
}
如果不进行规范化,则输出 CSV 为
_airbyte_raw_id | _airbyte_extracted_at | _airbyte_generation_id | _airbyte_meta | _airbyte_data |
|---|---|---|---|---|
26d73cde-7eb1-4e1e-b7db-a4c03b4cf206 | 1622135805000 | 11 | {"changes":[], "sync_id": 10111 } | { "user_id": 123, name: { "first": "John", "last": "Doe" } } |
如果选择根级别规范化,则输出 CSV 为
_airbyte_raw_id | _airbyte_extracted_at | _airbyte_generation_id | _airbyte_meta | user_id | name.first | name.last |
|---|---|---|---|---|---|---|
26d73cde-7eb1-4e1e-b7db-a4c03b4cf206 | 1622135805000 | 11 | {"changes":[], "sync_id": 10111 } | 123 | John | Doe |
输出文件可以被压缩。默认选项是 GZIP 压缩。如果选择了压缩,则输出文件名将具有额外的扩展名(GZIP:.csv.gz)。
JSON Lines (JSONL)
JSON Lines 是一种每行包含一个 JSON 对象的文本格式。每行都有如下结构
{
"_airbyte_raw_id": "<uuid>",
"_airbyte_extracted_at": "<timestamp>",
"_airbyte_generation_id": "<generation-id>",
"_airbyte_meta": "<json-meta>",
"_airbyte_data": "<json-data-from-source>"
}
例如,给定来自源的以下两个 JSON 对象
[
{
"user_id": 123,
"name": {
"first": "John",
"last": "Doe"
}
},
{
"user_id": 456,
"name": {
"first": "Jane",
"last": "Roe"
}
}
]
它们在输出文件中的样子如下
{ "_airbyte_raw_id": "26d73cde-7eb1-4e1e-b7db-a4c03b4cf206", "_airbyte_extracted_at": "1622135805000", "_airbyte_generation_id": "11", "_airbyte_meta": { "changes": [], "sync_id": 10111 }, "_airbyte_data": { "user_id": 123, "name": { "first": "John", "last": "Doe" } } }
{ "_airbyte_ab_id": "0a61de1b-9cdd-4455-a739-93572c9a5f20", "_airbyte_extracted_at": "1631948170000", "_airbyte_generation_id": "12", "_airbyte_meta": { "changes": [], "sync_id": 10112 }, "_airbyte_data": { "user_id": 456, "name": { "first": "Jane", "last": "Roe" } } }
输出文件可以被压缩。默认选项是 GZIP 压缩。如果选择了压缩,输出文件名将具有额外的扩展名 (GZIP: .jsonl.gz)。
Parquet
配置
以下配置可用于配置 Parquet 输出
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
compression_codec | enum | UNCOMPRESSED | 压缩算法。可用的选项有:UNCOMPRESSED、SNAPPY、GZIP、LZO、BROTLI、LZ4 和 ZSTD。 |
block_size_mb | 整数 | 128 (MB) | 块大小(行组大小),单位为 MB。这是在内存中缓冲的行组的大小。它限制了写入时的内存使用量。较大的值将提高读取时的 IO,但会消耗更多的写入内存。 |
max_padding_size_mb | 整数 | 8 (MB) | 最大填充大小,单位为 MB。这是允许作为填充来对齐行组的最大大小。这同时也是行组的最小大小。 |
page_size_kb | 整数 | 1024 (KB) | 页面大小,单位为 KB。页面大小用于压缩。一个块由页面组成。页面是访问单个记录必须完全读取的最小单元。如果此值太小,压缩效果会下降。 |
dictionary_page_size_kb | 整数 | 1024 (KB) | 字典页面大小,单位为 KB。当使用字典编码时,每个列的每个行组都有一个字典页面。字典页面大小类似于页面大小,但用于字典。 |
dictionary_encoding | 布尔值 | true | 字典编码。此参数控制是否启用字典编码。 |
这些参数与 ParquetOutputFormat 相关。有关更多详细信息,请参阅 Java 文档。另请参阅 Parquet 文档,了解其推荐的配置(512 - 1024 MB 块大小,8 KB 页面大小)。
数据模式
在底层,Airbyte 数据流的 JSON 模式首先转换为 Avro 模式,然后 JSON 对象转换为 Avro 记录,最后将 Avro 记录输出到 Parquet 格式。由于数据流可以来自任何数据源,因此 JSON 到 Avro 的转换过程具有任意规则和限制。了解更多关于源数据如何转换为 Avro 以及当前限制的信息 请在此处查看。
为了使一切正常工作,使用“S3 Key Id”和“S3 Access Key”的用户也必须能够访问存储桶及其内容。要使用的策略
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::YOUR_BUCKET_NAME/*",
"arn:aws:s3:::YOUR_BUCKET_NAME"
]
}
]
}
限制和故障排除
要查看连接器限制或排查 S3 连接器的问题,请参阅更多 我们的 s3 排错指南。
参考
配置字段参考
变更日志
展开以查看
| 版本 | 日期 | 拉取请求 | 主题 |
|---|---|---|---|
| 1.9.5 | 2025-11-04 | 69134 | 升级到 Bulk CDK 0.1.61。 |
| 1.9.4 | 2025-10-21 | 67153 | 实现新的 proto 模式实现 |
| 1.9.3 | 2025-10-06 | 67078 | 删除同步作业的内存限制,以提高性能和资源利用率。 |
| 1.9.2 | 2025-09-19 | 66523 | 通过强制使用路径式存储桶访问来修复 Minio 兼容性。 |
| 1.9.1 | 2025-07-31 | 64138 | 将发布候选版本 1.9.1-rc.1 提升到主版本。 |
| 1.9.1-rc.1 | 2025-07-28 | 64101 | 准备带有速度模式修复的发布候选版本。 |
| 1.9.0 | 2025-07-24 | 63759 | 将发布候选版本 1.9.0-rc.4 提升到主版本。 |
| 1.9.0-rc.4 | 2025-07-17 | 63350 | 发布候选版本 4 |
| 1.9.0-rc.3 | 2025-07-10 | 62890 | 发布候选版本 3 |
| 1.9.0-rc.2 | 2025-07-07 | 62829 | 带有错误修复的发布候选版本 2 |
| 1.9.0-rc.1 | 2025-07-02 | 62068 | 准备启用速度改进 |
| 1.8.8 | 2025-06-27 | 62127 | 与 1.8.6 相同。镜像从 PR 62071 发布。 |
| 1.8.7 | 2025-06-13 | 61588 | |
| 1.8.6 | 2025-05-30 | 60327 | IPC 元数据,内部重构。 |
| 1.8.5 | 2025-05-16 | 60327 | 修复文件分区越界错误。 |
| 1.8.4 | 2025-05-14 | 60313 | 重新连接时间窗口触发器。文件路径正确释放内存。 |
| 1.8.3 | 2025-05-14 | 60287 | 更新规范。 |
| 1.8.2 | 2025-05-07 | 59721 | 旧文件传输使用新的 CDK 接口 |
| 1.8.1 | 2025-05-07 | 59710 | CDK 反压错误修复 |
| 1.8.0 | 2025-04-30 | 59168 | 将发布候选版本 1.8.0-rc.1 提升到主版本。 |
| 1.8.0-rc.1 | 2025-04-29 | 59148 | 升级到支持文件+记录的最新 CDK |
| 1.7.4 | 2025-04-21 | 58146 | 升级到最新 CDK |
| 1.7.3 | 2025-04-18 | 58140 | 升级到最新 CDK |
| 1.7.2 | 2025-04-07 | 56391 | 内部代码重构 |
| 1.7.1 | 2025-04-02 | 56974 | 非功能性更改:固定 cdk 版本 |
| 1.7.0 | 2025-04-02 | 56974 | 发布 1.7.0 发布候选版本 |
| 1.7.0-rc.1 | 2025-03-31 | 56935 | 内部性能重构 |
| 1.6.0 | 2025-03-28 | 56458 | 不要删除 CSV/JSONL 数据中小数的尾随 .0 |
| 1.5.8 | 2025-03-25 | 56398 | 内部 CDK 更改,将旧的 Avro 和 Parquet 格式标记为已弃用 |
| 1.5.7 | 2025-03-24 | 56355 | 升级到 airbyte/java-connector-base:2.0.1 以兼容 M4。 |
| 1.5.6 | 2025-03-24 | 55849 | 内部重构 |
| 1.5.5 | 2025-03-20 | 55875 | 错误修复:同步可能因 OOM 而挂起 |
| 1.5.4 | 2025-03-05 | 54695 | 非功能性更改以支持性能测试 |
| 1.5.3 | 2025-03-04 | 54661 | 非功能性更改以支持性能测试 |
| 1.5.2 | 2025-02-25 | 54661 | 非功能性清理;删除了未使用的暂存代码 |
| 1.5.1 | 2025-02-11 | 53636 | 非功能性 CDK 版本固定。 |
| 1.5.0 | 2025-02-11 | 53632 | 将发布候选版本 1.5.0-rc.20 提升到主版本。 |
| 1.5.0-rc.20 | 2025-02-04 | 53173 | 调整规范措辞 |
| 1.5.0-rc.19 | 2025-02-04 | 53163 | 各种修复以截断同步 |
| 1.5.0-rc.18 | 2025-01-29 | 52703 | 强制执行列表调用评估,然后再进行 head 调用 |
| 1.5.0-rc.17 | 2025-01-29 | 52610 | 固定 CDK 0.296 |
| 1.5.0-rc.16 | 2025-01-29 | 52610 | 修复 assume role 行为 |
| 1.5.0-rc.15 | 2025-01-23 | 52103 | 使连接器使用我们的非 root 基本镜像。 |
| 1.5.0-rc.14 | 2025-01-24 | 51600 | 内部重构 |
| 1.5.0-rc.13 | 2025-01-22 | 52076 | 测试改进。 |
| 1.5.0-rc.12 | 2025-01-22 | 52072 | 错误修复:配置 OpenStreamTask 并发性以处理连接,以减少 http 连接错误。 |
| 1.5.0-rc.11 | 2025-01-17 | 51051 | 输入完全读取后,流结束现在正确标记为瞬态 |
| 1.5.0-rc.10 | 2025-01-15 | 50960 | 错误修复:容忍重复的路径变量;avro meta 字段模式与旧 cdk 匹配 |
| 1.5.0-rc.9 | 2025-01-10 | 50960 | 错误修复:变量在存储桶路径中得到尊重;同步不会挂起在没有状态的流中 |
| 1.5.0-rc.8 | 2025-01-08 | 50960 | 使用 airbyte/java-connector-base 基本镜像。 |
| 1.5.0-rc.7 | 2025-01-09 | 51021 | 错误修复:使用 CRT HTTP 客户端以避免 OkHttp 空闲连接处理错误 |
| 1.5.0-rc.6 | 2025-01-06 | 50954 | 错误修复:由于生成跟踪器中的错误导致的瞬态故障 |
| 1.5.0-rc.5 | 2025-01-06 | 50954 | 错误修复:由于文件名冲突预防中的错误导致的瞬态故障 |
| 1.5.0-rc.4 | 2025-01-06 | 50954 | 错误修复:StreamLoader::close 对每个流多次分发 |
| 1.5.0-rc.3 | 2025-01-06 | 50949 | 错误修复:嵌套在联合对象/列表中的 parquet 类型/值无法正确转换 |
| 1.5.0-rc.2 | 2025-01-02 | 50857 | 迁移到 Bulk Load CDK:成本降低、性能提升、文件名冲突错误修复 |
| 1.4.0 | 2024-10-23 | 46302 | 添加文件传输支持 |
| 1.3.0 | 2024-09-30 | 46281 | 修复测试 |
| 1.2.1 | 2024-09-20 | 45700 | 提高对 jsonschema 字段的弹性 |
| 1.2.0 | 2024-09-18 | 45402 | 修复带有无列流的异常 |
| 1.1.0 | 2024-09-18 | 45436 | 升级所有依赖项 |
| 1.0.5 | 2024-09-05 | 45143 | 不要覆盖(并删除)现有文件,而是跳过索引 |
| 1.0.4 | 2024-08-30 | 44933 | 修复:Avro/Parquet:处理嵌套对象/列表中的空模式 |
| 1.0.3 | 2024-08-20 | 44476 | 增加消息解析限制到 100mb |
| 1.0.2 | 2024-08-19 | 44401 | 修复:S3 Avro/Parquet:处理可为空的顶级模式 |
| 1.0.1 | 2024-08-14 | 42579 | 覆盖模式:在同步成功后删除延迟操作。 |
| 1.0.0 | 2024-08-08 | 42409 | 重大破坏性更改:新的目标模式、变更捕获、Avro/Parquet 改进、错误修复 |
| 0.1.15 | 2024-12-18 | 49879 | 使用基础镜像:airbyte/java-connector-base:1.0.0 |
| 0.6.7 | 2024-08-11 | 43713 | 降低内存比率(0.7 -> 0.5)和线程分配(5 -> 2),用于异步 S3 上传。 |
| 0.6.6 | 2024-08-06 | 43343 | 使用 Kotlin 2.0.0 |
| 0.6.5 | 2024-08-01 | 42405 | S3 并行化工作负载、检查点、提交计数,支持刷新元数据中的 generationId。 |
| 0.6.4 | 2024-04-16 | 42006 | 删除不必要的 zookeeper 依赖项 |
| 0.6.3 | 2024-04-15 | 38204 | 将所有生产代码转换为 kotlin |
| 0.6.2 | 2024-04-15 | 38204 | 添加 assume role 身份验证 |
| 0.6.1 | 2024-04-08 | 37546 | 适配 CDK 0.30.8; |
| 0.6.0 | 2024-04-08 | 36869 | 适配 CDK 0.29.8;Kotlin 转换后的代码。 |
| 0.5.9 | 2024-02-22 | 35569 | 修复日志错误。 |
| 0.5.8 | 2024-01-03 | #33924 | 添加新的 ap-southeast-3 AWS 区域 |
| 0.5.7 | 2023-12-28 | #33788 | 线程安全修复文件部分名称 |
| 0.5.6 | 2023-12-08 | #33263 | (不正确的文件名格式,请勿使用) 采用 java CDK 版本 0.7.0。 |
| 0.5.5 | 2023-12-08 | #33264 | 更新 UI 选项为常用默认值。 |
| 0.5.4 | 2023-11-06 | #32193 | (不正确的文件名格式,请勿使用) 采用 java CDK 版本 0.4.1。 |
| 0.5.3 | 2023-11-03 | #32050 | (不正确的文件名格式,请勿使用) 采用 java CDK 版本 0.4.0。这更新了文件名以包含 UUID。 |
| 0.5.1 | 2023-06-26 | #27786 | 修复构建 |
| 0.5.0 | 2023-06-26 | #27725 | 许可证更新:Elv2 |
| 0.4.2 | 2023-06-21 | #27555 | 减小镜像大小 |
| 0.4.1 | 2023-05-18 | #26284 | 修复:重新启用 Parquet 输出的 LZO 压缩 |
| 0.4.0 | 2023-04-28 | #25570 | 修复:所有整数模式都应转换为 Avro longs |
| 0.3.25 | 2023-04-27 | #25346 | 内部代码清理 |
| 0.3.23 | 2023-03-30 | #24736 | 改进在 AWS API 被限制时的行为 |
| 0.3.22 | 2023-03-17 | #23788 | S3-Parquet:添加处理数组中空值的处理程序 |
| 0.3.21 | 2023-03-10 | #23466 | 更改 S3 Avro 类型为 Int 到 Long |
| 0.3.20 | 2023-02-23 | #21355 | 为 JSONL 输出添加根级别展平选项。 |
| 0.3.19 | 2023-01-18 | #21087 | 将身份验证错误包装为配置异常 |
| 0.3.18 | 2022-12-15 | #20088 | 新的数据类型支持 v0/v1 |
| 0.3.17 | 2022-10-15 | #18031 | 修复集成测试以使用存储桶路径 |
| 0.3.16 | 2022-10-03 | #17340 | 强制仅加密流量到 S3 存储桶并检查逻辑 |
| 0.3.15 | 2022-09-01 | #16243 | 修复 JSON 到 Avro 转换,当来自组合限制(anyOf、oneOf、allOf 字段)的字段名称冲突时。 |
| 0.3.14 | 2022-08-24 | #15207 | 修复 S3 存储桶路径用于检查。 |
| 0.3.13 | 2022-08-09 | #15394 | 为 Parquet 格式添加 LZO 压缩支持 |
| 0.3.12 | 2022-08-05 | #14801 | 修复多个日志绑定 |
| 0.3.11 | 2022-07-15 | #14494 | 使 S3 输出文件名可配置。 |
| 0.3.10 | 2022-06-30 | #14332 | 更改 INSTANCE*PROFILE 以使用 AWSDefaultProfileCredential,它支持 AWS 上的更多身份验证 |
| 0.3.9 | 2022-06-24 | #14114 | 删除带有暂存的连接器的规范中的 "additionalProperties": false |
| 0.3.8 | 2022-06-17 | #13753 | 弃用并删除基于 StreamTransferManager 的连接器中的 PART_SIZE_MB 字段 |
| 0.3.7 | 2022-06-14 | #13483 | 为 Avro/Parquet 格式添加对 int、long、float 数据类型的支持。 |
| 0.3.6 | 2022-05-19 | #13043 | 目标 S3:删除可配置的分区大小。 |
| 0.3.5 | 2022-05-12 | #12797 | 更新规范以替换 markdown。 |
| 0.3.4 | 2022-05-04 | #12578 | 在 JSON 到 Avro 转换中,记录不遵循 Avro 模式的 JSON 字段值以进行调试。 |
| 0.3.3 | 2022-04-20 | #12167 | 为 CSV 和 JSONL 格式添加 gzip 压缩选项。 |
| 0.3.2 | 2022-04-22 | #11795 | 修复连接检查以验证提供的存储桶路径。 |
| 0.3.1 | 2022-04-05 | #11728 | 正确清理在运行 OVERWRITE 同步模式时的存储桶 |
| 0.3.0 | 2022-04-04 | #11666 | 0.2.12 实际上有破坏性更改,因为文件默认情况下会被压缩,此 PR 还修复了命名以使其与旧版本更兼容。 |
| 0.2.13 | 2022-03-29 | #11496 | 修复 S3 存储桶路径包含在 S3 存储桶格式中 |
| 0.2.12 | 2022-03-28 | #11294 | 更改为序列化缓冲策略以减少内存消耗 |
| 0.2.11 | 2022-03-23 | #11173 | 添加对 AWS Glue 爬虫的支持 |
| 0.2.10 | 2022-03-07 | #10856 | check 方法现在测试目标存储桶上的 listObjects 权限 |
| 0.2.7 | 2022-02-14 | #10318 | 防止 S3 目标路径中的双斜杠 |
| 0.2.6 | 2022-02-14 | 10256 | 添加 -XX:+ExitOnOutOfMemoryError JVM 选项 |
| 0.2.5 | 2022-01-13 | #9399 | 如果未提供凭据,则使用实例配置文件身份验证 |
| 0.2.4 | 2022-01-12 | #9415 | BigQuery 目标:修复 Facebook 数据在 GCS 中的处理 |
| 0.2.3 | 2022-01-11 | #9367 | Avro & Parquet:支持具有未知项目类型的数组字段;将任何类型不正确的字段默认为字符串。 |
| 0.2.2 | 2021-12-21 | #8574 | 为 Avro 和 Parquet 记录类型添加了命名空间 |
| 0.2.1 | 2021-12-20 | #8974 | 发布新版本以确保没有过多的日志记录。 |
| 0.2.0 | 2021-12-15 | #8607 | 更改 CSV 文件的输出文件名 - 现在是 bucketPath/namespace/streamName/timestamp_epochMillis_randomUuid.csv |
| 0.1.16 | 2021-12-10 | #8562 | 用 destination-jdbc 替换依赖项。 |
| 0.1.15 | 2021-12-03 | #8501 | 删除 Avro 和 Parquet 无效日期字符串的过度日志记录。 |
| 0.1.14 | 2021-11-09 | #7732 | 支持 Avro 和 Parquet 中的时间戳 |
| 0.1.13 | 2021-11-03 | #7288 | 支持 Json additionalProperties。 |
| 0.1.12 | 2021-09-13 | #5720 | 为流添加了可配置的块大小。每个流受 S3 限制为 10,000 个。 |
| 0.1.11 | 2021-09-10 | #5729 | 对于以数字开头的字段名,将在Parquet和Avro格式的开头附加一个 *。 |
| 0.1.10 | 2021-08-17 | #4699 | 添加了 json 配置验证器 |
| 0.1.9 | 2021-07-12 | #4666 | 修复了 Parquet 格式的 MinIO 输出。 |
| 0.1.8 | 2021-07-07 | #4613 | 修补了模式转换器以支持组合限制。 |
| 0.1.7 | 2021-06-23 | #4227 | 添加了 Avro 和 JSONL 输出。 |
| 0.1.6 | 2021-06-16 | #4130 | 修补了检查,以验证前缀访问权限而不是整个存储桶的访问权限。 |
| 0.1.5 | 2021-06-14 | #3908 | 修复了spec.json中的默认max_padding_size_mb。 |
| 0.1.4 | 2021-06-14 | #3908 | 添加了 Parquet 输出。 |
| 0.1.3 | 2021-06-13 | #4038 | 添加了对替代 S3 的支持。 |
| 0.1.2 | 2021-06-10 | #4029 | 将 \_airbyte_emitted_at 字段修复为 UTC 时间戳,而不是本地时间戳,以保持一致性。 |
| 0.1.1 | 2021-06-09 | #3973 | 在基础 Docker 镜像中添加了AIRBYTE_ENTRYPOINT,以支持 Kubernetes。 |
| 0.1.0 | 2021-06-03 | #3672 | 初始版本,带有 CSV 输出。 |