S3文件上传触发403权限错误,请求排查Bucket Policy及代码问题
S3上传触发HeadObject 403 Forbidden错误的排查与修复
问题详情
上传文件到S3时出现403禁止错误:
ClientError at /api/document/ An error occurred (403) when calling the HeadObject operation: Forbidden
当前使用的Bucket Policy:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowGetAndHead", "Effect": "Allow", "Principal": "*", "Action": [ "s3:GetObject", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::monover-052023-s3bucket/*" }, { "Sid": "S3PolicyStmt-DO-NOT-MODIFY-1684257818955", "Effect": "Allow", "Principal": { "Service": "logging.s3.amazonaws.com" }, "Action": [ "s3:GetObject", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::monover-052023-s3bucket/*" } ] }
Django settings.py配置(已确认AWS凭证有效):
DEFAULT_FILE_STORAGE = "storages.backends.s3boto3.S3Boto3Storage" AWS_ACCESS_KEY_ID = "AKIAZO7XJSQ54CWZNR6K" AWS_SECRET_ACCESS_KEY = "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" AWS_STORAGE_BUCKET_NAME = "django-monover-textract" AWS_QUERYSTRING_AUTH = False AWS_S3_FILE_OVERWRITE = False
一、Bucket Policy 问题分析
- 缺少HeadObject权限:当前Policy的第一个Statement里,允许的Action没有包含
s3:HeadObject,而s3boto3在上传文件前会自动调用这个接口检查文件是否存在或获取元数据,没有权限就会触发403。 - Bucket名称完全不匹配:Policy对应的Bucket是
monover-052023-s3bucket,但settings里配置的操作Bucket是django-monover-textract——等于给Bucket A开了权限,代码却在操作Bucket B,这是核心错误。
二、代码/配置问题分析
- Bucket配置不一致:如上所述,settings里的
AWS_STORAGE_BUCKET_NAME和Policy绑定的Bucket完全不同,导致权限不生效。 - 存储类默认行为:即使设置了
AWS_S3_FILE_OVERWRITE=False,s3boto3仍会默认调用HeadObject确认文件是否存在,缺少该权限直接报错。 - Block Public Access拦截:如果目标Bucket开启了「Block all public access」,即使Policy允许
*访问,也会被强制拦截,导致权限失效。
修复步骤
- 统一Bucket名称:要么把settings里的
AWS_STORAGE_BUCKET_NAME改成monover-052023-s3bucket,要么给django-monover-textract配置包含必要权限的Policy。 - 补充HeadObject权限:在允许客户端访问的Statement中添加
s3:HeadObject,修改后的Action列表如下:
"Action": [ "s3:GetObject", "s3:PutObject", "s3:PutObjectAcl", "s3:HeadObject" ]
- 检查Block Public Access设置:登录S3控制台,查看目标Bucket的Block Public Access选项,若需要公共访问,不要勾选「Block all public access」;如果是内部使用,建议把Policy的Principal从
*改成对应的IAM用户/角色,更安全。
内容的提问来源于stack exchange,提问作者Noel S Jacob
相关产品推荐
相关产品推荐

