⌘+k ctrl+k
1.1.3 (stable)
Search Shortcut cmd + k | ctrl + k
Legacy Authentication Scheme for S3 API

在0.10.0版本之前,DuckDB没有Secrets管理器。因此,S3端点的配置和认证是通过变量处理的。本文档记录了S3 API的旧版认证方案。

配置和认证S3端点的推荐方法是使用secrets

旧版认证方案

为了能够从S3读取或写入,应设置正确的区域:

SET s3_region = 'us-east-1';

可选地,如果使用非AWS对象存储服务器,可以配置端点:

SET s3_endpoint = '⟨domain⟩.⟨tld⟩:⟨port⟩';

如果端点未启用SSL,则运行:

SET s3_use_ssl = false;

可以在路径样式虚拟主机样式 URL 之间切换,使用:

SET s3_url_style = 'path';

然而,请注意,这也可能需要更新端点。例如,对于AWS S3,需要将端点更改为s3.⟨region⟩.amazonaws.com

配置正确的端点和区域后,可以读取公共文件。要读取私有文件,可以添加认证凭据:

SET s3_access_key_id = '⟨AWS access key id⟩';
SET s3_secret_access_key = '⟨AWS secret access key⟩';

或者,也支持会话令牌,并且可以使用它来代替:

SET s3_session_token = '⟨AWS session token⟩';

aws 扩展 允许加载 AWS 凭证。

每个请求的配置

除了上述全局S3配置外,还可以在每个请求的基础上使用特定的配置值。这允许使用多组凭证、区域等。通过在S3 URI中包含它们作为查询参数来使用这些配置值。上面列出的所有单独配置值都可以设置为查询参数。例如:

SELECT *
FROM 's3://bucket/file.parquet?s3_access_key_id=accessKey&s3_secret_access_key=secretKey';

每个查询允许多种配置:

SELECT *
FROM 's3://bucket/file.parquet?s3_region=region&s3_session_token=session_token' t1
INNER JOIN 's3://bucket/file.csv?s3_access_key_id=accessKey&s3_secret_access_key=secretKey' t2;

Configuration

S3上传存在一些额外的配置选项,尽管默认值应该足以满足大多数用例。

此外,大多数配置选项可以通过环境变量设置:

DuckDB 设置 环境变量 备注
s3_region AWS_REGION 优先于 AWS_DEFAULT_REGION
s3_region AWS_DEFAULT_REGION  
s3_access_key_id AWS_ACCESS_KEY_ID  
s3_secret_access_key AWS_SECRET_ACCESS_KEY  
s3_session_token AWS_SESSION_TOKEN  
s3_endpoint DUCKDB_S3_ENDPOINT  
s3_use_ssl DUCKDB_S3_USE_SSL