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

Heroku部署Django项目AWS S3图片上传报错PartialCredentialsError求助

Heroku部署Django+AWS S3 PartialCredentialsError 解决方案

该错误是生产环境运行时未正确读取到完整的AWS凭据导致,可按以下步骤排查解决:

1. 配置Heroku环境变量

本地的环境变量仅在开发环境生效,Heroku运行时需要单独配置凭据:

  • 安装Heroku CLI后,在项目根目录执行命令查看已配置的环境变量:heroku config
  • 确认输出中同时存在AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY,变量名的大小写、拼写必须和Django配置中读取的名称完全一致
  • 如缺少或拼写错误,执行命令添加:heroku config:set AWS_SECRET_ACCESS_KEY=你的实际密钥值 AWS_ACCESS_KEY_ID=你的实际密钥ID
  • 也可以直接登录Heroku后台,进入对应项目的「Settings」-「Config Vars」板块手动添加修改

2. 检查Django配置读取逻辑

确认settings.py中读取环境变量的代码不存在拼写错误,示例正确配置如下:

import os
AWS_ACCESS_KEY_ID = os.getenv("AWS_ACCESS_KEY_ID")
AWS_SECRET_ACCESS_KEY = os.getenv("AWS_SECRET_ACCESS_KEY")
AWS_STORAGE_BUCKET_NAME = "你的S3桶名称"
AWS_S3_REGION_NAME = "你的桶所属区域,例如us-east-1"
AWS_S3_SIGNATURE_VERSION = "s3v4"
  • 不要将AWS凭据硬编码到配置文件中提交到代码仓库,Heroku的Config Vars是生产环境唯一安全的凭据存储方式
  • 如果你使用了django-environ等第三方环境变量管理包,确认变量映射规则没有错误,不会出现自动转换大小写导致读取失败的问题

3. 重启应用生效配置

配置完环境变量后需要重启Heroku实例让配置生效:

  • 执行重启命令:heroku restart
  • 重启后测试上传接口,如果仍然报错,可以在上传逻辑中临时添加日志打印两个凭据的存在状态,执行heroku logs --tail查看运行日志,确认是否正确读取到环境变量值

额外排查点

  • 确认你的AWS IAM账号已配置S3桶的上传、读取权限
  • 确认S3桶的CORS配置允许Heroku应用域名的跨域请求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 01:09:00