跳到主要内容

S3

本文档用于介绍访问 AWS S3 时所需的参数。这些参数适用于:

  • Catalog 属性。
  • Table Valued Function 属性。
  • Broker Load 属性。
  • Export 属性。
  • Outfile 属性。

参数总览

属性名称曾用名描述默认值是否必须
s3.endpointS3 服务访问地址,如 s3.us-east-1.amazonaws.com
s3.access_keyAWS Access Key。用于身份验证
s3.secret_keyAWS Secret Key。用于身份验证
s3.regionS3 所在的区域,例如:us-east-1。强烈建议配置
s3.use_path_style是否使用 path-style(路径风格)访问。FALSE
s3.connection.maximum最大连接数,适用于高并发场景50
s3.connection.request.timeout请求超时时间(毫秒),控制连接获取超时3000
s3.connection.timeout建立连接的超时时间(毫秒)1000
s3.role_arn使用 Assume Role 模式时指定的角色 ARN
s3.external_id配合 s3.role_arn 使用的 external ID

认证配置

Doris 支持以下两种方式访问 S3:

  1. 直接使用 Access Key 和 Secret Key
"s3.access_key"="your-access-key",
"s3.secret_key"="your-secret-key",
"s3.endpoint"="s3.us-east-1.amazonaws.com",
"s3.region"="us-east-1"
  1. Assume Role 模式

适用于跨账号、临时授权访问。通过角色授权自动获取临时凭证。

"s3.role_arn"="arn:aws:iam::123456789012:role/demo-role",
"s3.external_id"="external-identifier",
"s3.endpoint"="s3.us-east-1.amazonaws.com",
"s3.region"="us-east-1"

如果同时设置了 Access Key 和 Role ARN,则优先使用 Access Key 模式。

访问 S3 Directory Bucket

该功能自 3.1.0 起支持。

Amazon S3 Express One Zone(又名 Directory Bucket)提供更高性能,但 endpoint 格式不同。

  • 普通 bucket:s3.us-east-1.amazonaws.com
  • Directory Bucket:s3express-usw2-az1.us-west-2.amazonaws.com

更多可用区域参考:AWS 官方文档

示例:

"s3.access_key"="ak",
"s3.secret_key"="sk",
"s3.endpoint"="s3express-usw2-az1.us-west-2.amazonaws.com",
"s3.region"="us-west-2"

权限策略

根据使用场景不同,可以分为 只读读写 两类策略。

1. 只读权限

只允许读取 S3 中的对象。适用于 LOAD、TVF、查询 EXTERNAL CATALOG 等场景。

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:GetObjectVersion",
],
"Resource": "arn:aws:s3:::<your-bucket>/your-prefix/*"
},
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Resource": "arn:aws:s3:::<your-bucket>"
}
]
}

2. 读写权限

在只读的基础上,允许删除、创建、修改对象。适用于 EXPORT、OUTFILE 以及 EXTERNAL CATALOG 回写等场景。

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:GetObjectVersion",
"s3:DeleteObject",
"s3:DeleteObjectVersion",
"s3:AbortMultipartUpload",
"s3:ListMultipartUploadParts"
],
"Resource": "arn:aws:s3:::<your-bucket>/<your-prefix>/*"
},
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetBucketLocation",
"s3:GetBucketVersioning",
"s3:GetLifecycleConfiguration"
],
"Resource": "arn:aws:s3:::<your-bucket>"
}
]
}

注意事项

  1. 占位符替换

    • <bucket> → 你的 S3 Bucket 名称。
    • <account-id> → 你的 AWS 账号 ID(12 位数字)。
  2. 最小权限原则

    • 如果只做查询,不要授予写权限。