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

AWS CLI配置正常但Boto3无法获取凭证问题咨询

Boto3无法读取Ubuntu服务器AWS凭证的常见原因及解决办法
  • 运行Django的用户与配置CLI的用户不一致
    AWS CLI的凭证默认存在当前用户家目录下的~/.aws/credentials文件中。如果你用root或其他用户配置了CLI,但Django是用www-data、ubuntu或其他用户运行的,Django进程无法访问另一个用户家目录下的凭证文件。
    解决:切换到运行Django的用户,重新执行aws configure配置凭证;或者把~/.aws目录复制到Django运行用户的家目录,确保权限正确。

  • 凭证文件权限不符合安全要求
    AWS强制要求~/.aws/credentials和~/.aws/config的权限必须为600(仅所有者可读可写),否则Boto3会因安全策略拒绝读取。
    解决:执行命令修改权限:

    chmod 600 ~/.aws/credentials
    chmod 600 ~/.aws/config
    

    同时确保Django运行用户是这些文件的所有者,或拥有读取权限。

  • Django运行环境未加载凭证相关配置
    如果Django通过systemd、supervisor等进程管理工具启动,默认不会加载用户的.bashrc或.profile文件,可能导致Boto3无法识别凭证文件的默认路径。
    解决:在进程管理配置中指定凭证文件路径,比如在systemd的service文件中添加:

    Environment="AWS_SHARED_CREDENTIALS_FILE=/home/ubuntu/.aws/credentials"
    

    也可以在Django配置中通过代码指定路径(不推荐硬编码,可通过settings变量配置):

    import boto3
    from botocore.config import Config
    
    s3_client = boto3.client(
        's3',
        config=Config(shared_credentials_file='/path/to/.aws/credentials')
    )
    
  • 环境变量优先级冲突
    Boto3的凭证查找优先级中,环境变量(AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY)高于本地凭证文件。如果Django运行环境中存在无效或未配置的这两个变量,会覆盖凭证文件的读取。
    解决:检查Django进程的环境变量,确保这两个变量未被错误设置;若需要使用环境变量,直接在启动脚本或进程配置中导出正确的密钥值。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 08:17:09