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

如何在Heroku中配置AWS S3?遇403权限错误求解决

S3与Heroku应用关联的403错误解决

凭据加载说明

boto3会自动读取环境变量中的AWS凭据,不需要在boto3.client('s3')里手动指定。你通过heroku config:set设置的AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY,boto3会自动识别并使用,所以你当前的代码写法是正确的。

403 Forbidden错误的核心原因及解决

出现这个错误,主要排查以下两点:

  • IAM用户权限不足:你配置的AWS账号(对应设置的ACCESS_KEY)缺少S3对象的读取权限。需要给该IAM用户添加包含GetObject权限的策略:
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "s3:GetObject",
                "Resource": "arn:aws:s3:::my-models-bucket/model.zip"
            }
        ]
    }
    
    若需要访问桶内所有文件,可将Resource改为arn:aws:s3:::my-models-bucket/*。
  • S3桶权限限制:如果桶设置为私有,且未通过桶策略或ACL允许该IAM用户访问,也会触发403。检查桶的权限配置,确保目标IAM用户拥有读取该对象的权限。

环境变量验证方法

若想确认环境变量是否正确加载,可在代码中添加调试代码:

import os
print("AWS_ACCESS_KEY_ID:", os.environ.get("AWS_ACCESS_KEY_ID"))

部署后执行heroku logs --tail查看日志,确认变量是否存在。若为空,需重新执行heroku config:set命令,并确保应用已重启生效。


内容的提问来源于stack exchange,提问作者Alaa M.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 22:40:05