使用跨角色切换的基于角色凭证连接DuckDB到S3失败求助
使用跨角色切换的基于角色凭证连接DuckDB到S3失败求助
各位好,我现在卡在了用DuckDB CLI连接带跨角色凭证的S3存储的问题上,想请教下有没有人遇到过类似情况或者能给点思路。
先跟大家说明下我的现有环境和配置情况:
我在~/.aws/config里配置了两个关联的profile,注意它们的ARN是不同的:
[profile my_profile] output = json region = us-east-1 role_arn = arn:aws:iam::yyyyyyyyyyyy:role/my_awesome_role [profile my_profile_exec] output = json region = us-east-1 role_arn = arn:aws:iam::xxxxxxxxxxxx:role/my_awesome_role source_profile = my_profile
~/.aws/credentials里的临时凭证(包括aws_access_key_id、aws_secret_access_key和aws_session_token)是属于my_profile的。
目前这些配置在其他工具里都能正常工作:
- 运行AWS CLI命令
aws s3 ls --profile=my_profile_exec能返回正确结果; - 用Python的boto3也能成功连接,代码大概是这样的:
>>> session = boto3.Session(profile_name='my_profile_exec') >>> s3_client = session.client("s3") >>> # 用s3_client执行后续操作
但到了DuckDB CLI这里,我试了各种方法都没成功,下面是我最接近成功的一次尝试:
D CREATE SECRET secret ( TYPE s3, PROVIDER CREDENTIAL_CHAIN, CHAIN 'config', PROFILE 'my_profile_exec');
这个创建secret的命令返回了Success: true,但当我执行查询时:
D SELECT * FROM read_csv('s3://bucket/path/to/file');
就会报错:HTTP Error: HTTP GET error on 'https://bucket/path/to/file' (HTTP 400)
我在网上搜了很久,都没找到和我这个跨角色profile配置场景类似的案例,所以来这里求助大家。
最后附上我的环境信息:
- 系统:MacOS 15.2,MacBook Pro 2021(Apple M1 Pro)
- 工具版本:
- DuckDB CLI:
1.1.3 19864453f7 - AWS CLI:
aws-cli/2.13.29 Python/3.11.6 Darwin/24.2.0 exe/x86_64 prompt/off
- DuckDB CLI:
- Python及依赖包:
- Python 3.13.1
- boto3 = 1.35.97
- botocore = 1.35.97
- duckdb = 1.1.3
备注:内容来源于stack exchange,提问作者James Sheldon
相关产品推荐
相关产品推荐

