You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用跨角色切换的基于角色凭证连接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
  • Python及依赖包:
    • Python 3.13.1
    • boto3 = 1.35.97
    • botocore = 1.35.97
    • duckdb = 1.1.3

备注:内容来源于stack exchange,提问作者James Sheldon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 13:27:57