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

Docker部署Django3.2 REST API遇botocore元数据服务404错误求助

解决Docker中Django API的botocore元数据404错误

错误原因

169.254.169.254是AWS、GCP等云平台的实例元数据服务地址,botocore在本地找不到AWS凭证配置时,会自动尝试访问该地址获取临时凭证。但本地Ubuntu的Docker环境没有这个服务,所以返回404,且DEBUG级日志会持续输出该错误。

解决方案

  • 禁用元数据自动检测
    在Docker运行时添加环境变量AWS_EC2_METADATA_DISABLED=true,可以通过以下方式设置:

    • 直接用docker run命令:docker run -e AWS_EC2_METADATA_DISABLED=true [你的镜像名]
    • 写入docker-compose.yml:在服务的environment字段添加AWS_EC2_METADATA_DISABLED: true
      你的botocore 1.29.94版本完全支持这个环境变量,设置后botocore就不会再请求元数据地址。
  • 配置AWS凭证(如果项目用到AWS服务)
    如果你的Django API依赖AWS服务(比如S3存储),需要给容器提供合法的AWS凭证,避免botocore去请求元数据:

    • 将本地~/.aws/credentials和~/.aws/config挂载到容器的/root/.aws/路径(或容器运行用户的对应路径)
    • 直接通过环境变量传入:AWS_ACCESS_KEY_ID=你的密钥ID和AWS_SECRET_ACCESS_KEY=你的密钥
  • 调整日志级别
    如果不想彻底解决,只是不想看到DEBUG日志,可以在Django的settings.py里调整botocore的日志级别:

    import logging
    logging.getLogger('botocore').setLevel(logging.WARNING)
    

    这样只会输出WARNING及以上级别的日志,屏蔽DEBUG级的404报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 21:57:17