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

调用HeadObject操作出现403 Forbidden:Django项目S3上传问题

解决Django电商项目S3 HeadObject 403 Forbidden错误

以下是针对该问题的具体排查和解决步骤:

1. 修正settings.py中的配置错误

你的S3配置存在两处拼写/语法错误,会直接导致权限验证失败:

  • AWS_S3_VERITY = True 应为 AWS_S3_VERIFY = True(拼写错误:VERITY→VERIFY)
  • AWS_S3_SIGNATURE_NAME = 's3v4', 末尾多了逗号,会让配置变成元组而非字符串,应改为 AWS_S3_SIGNATURE_NAME = 's3v4'

修正后的配置片段:

# Amazon S3 settings
AWS_ACCESS_KEY_ID = 'xxxxx'
AWS_SECRET_ACCESS_KEY = 'xxxx'
AWS_STORAGE_BUCKET_NAME = 'ecommercesimple'
AWS_S3_SIGNATURE_NAME = 's3v4'
AWS_S3_REGION_NAME = 'us-east-2'
AWS_S3_FILE_OVERWRITE = False
AWS_DEFAULT_ACL = None
AWS_S3_VERIFY = True
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'

2. 检查S3桶的Block Public Access设置

即使配置了开放的桶策略,S3的Block Public Access可能会覆盖权限设置:

  • 登录AWS控制台,进入ecommercesimple桶
  • 切换到「Permissions」标签,找到「Block Public Access (bucket settings)」
  • 点击「Edit」,确保未勾选「Block all public access」,以及相关子选项(至少允许通过桶策略授予的公共访问)

3. 验证IAM用户权限

你使用的AWS_ACCESS_KEY_ID对应的IAM用户,需要明确拥有该S3桶的相关操作权限:

  • 进入IAM控制台,找到该用户,检查其附加的策略
  • 添加如下权限策略(按需调整,至少包含HeadObject、PutObject等操作):
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:HeadObject",
                "s3:PutObject",
                "s3:GetObject",
                "s3:DeleteObject"
            ],
            "Resource": [
                "arn:aws:s3:::ecommercesimple",
                "arn:aws:s3:::ecommercesimple/*"
            ]
        }
    ]
}

注意:桶策略是资源端权限控制,IAM用户权限是身份端控制,两者需同时允许才能生效。

4. 调整AWS_DEFAULT_ACL配置

如果商品图片需要公开访问,可将AWS_DEFAULT_ACL设置为'public-read',确保上传对象有正确的ACL权限:

AWS_DEFAULT_ACL = 'public-read'

5. 测试权限

完成调整后重启Django服务,尝试再次创建商品。也可在EC2实例上用aws-cli测试S3访问:

# 安装aws-cli(未安装时执行)
pip install aws-cli
# 配置凭证
aws configure set aws_access_key_id xxxxx
aws configure set aws_secret_access_key xxxx
aws configure set region us-east-2
# 测试HeadObject操作
aws s3api head-object --bucket ecommercesimple --key test-file.txt

若测试成功,说明权限配置正常,问题应已解决。

内容的提问来源于stack exchange,提问作者Vitor Anghêben

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 10:42:47