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

AWS CLI与Boto3调用S3时出现AttributeError错误求助

解决awscli/boto3调用S3时的AttributeError: 'str' object has no attribute 'get'

问题情况

使用Python应用通过awscli和boto3调用S3时,突然触发AttributeError: 'str' object has no attribute 'get'错误,本地单元测试中的boto3 Stubber也受此影响。

错误栈

File "/usr/local/Cellar/awscli/2.17.28/libexec/lib/python3.11/site-packages/awscli/botocore/client.py", 
line 496, in _is_s3_dualstack_mode enabled = self.scoped_config.get('s3', {}).get(
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
AttributeError: 'str' object has no attribute 'get'

环境信息

aws-cli/2.17.28 Python/3.11.9 Darwin/23.6.0 source/x86_64

配置文件情况

初始未修改的配置:

[default] 
region = us-east-1

添加S3相关配置后问题仍未解决:

[default]
region = us-east-1
s3 =
    signature_version = s3v4

解决方案

  • 检查配置文件格式与加载优先级
    确认所有AWS配置文件(~/.aws/config、~/.aws/credentials、系统级/etc/aws/config)中,s3字段为层级结构(如上述修改后的配置),而非单独的字符串值(比如误写为s3 = some_string)。同时注意配置文件的加载顺序,避免其他位置的配置覆盖当前使用的配置。

  • 排查环境变量干扰
    检查是否存在AWS_CONFIG_FILE、AWS_S3等环境变量,这类变量可能会覆盖配置文件设置,导致s3被解析为字符串。可通过echo $AWS_CONFIG_FILE等命令查看状态,必要时清空相关变量。

  • 清理botocore缓存
    删除botocore默认缓存目录~/.aws/cache,缓存文件可能留存旧的配置解析结果,清理后重新运行程序。

  • 核对依赖版本兼容性
    awscli、boto3与botocore版本需保持兼容。针对awscli 2.17.28,可安装对应版本的依赖:

    pip install botocore==1.34.28 boto3==1.34.28
    

    (版本号可根据实际情况调整,确保与awscli版本匹配)

内容的提问来源于stack exchange,提问作者Football52

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 13:31:04