S3ResponseError: 403 禁止
Posted
技术标签:
【中文标题】S3ResponseError: 403 禁止【英文标题】:S3ResponseError: 403 Forbidden 【发布时间】:2015-11-18 07:57:54 【问题描述】:我无法使用django-storages
和boto
以及关注this tutorial 将媒体文件上传到Amazon S3。我还检查了这些问题:
boto.exception.S3ResponseError: S3ResponseError: 403 Forbidden
Getting boto.exception.S3ResponseError: S3ResponseError: 403 Forbidden when uploading file
但我无法成功使用它们。我总是得到错误:S3ResponseError: 403 Forbidden
我的存储桶策略是:
"Version": "2008-10-17",
"Statement": [
"Sid": "PublicReadForGetBucketObjects",
"Effect": "Allow",
"Principal":
"AWS": "*"
,
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::<bucket name>/*"
,
"Sid": "",
"Effect": "Allow",
"Principal":
"AWS": "<arn info>"
,
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::<bucket name>",
"arn:aws:s3:::<bucket name>/*"
]
]
models.py
class Usuario(models.Model):
user = models.OneToOneField(User, primary_key=True)
titulo = models.CharField(max_length=100, null=True, blank=True)
avatar = models.ImageField(upload_to='avatars', null=True, blank=True)
views.py
@require_POST
@login_required(login_url='/acceso/')
def configuracion_usuario_guardar(request):
u = User.objects.get(pk=request.user.id)
c = Usuario.objects.get(pk=request.user.id)
nombre = request.POST.get('nombre', '')
apellido = request.POST.get('apellido', '')
cargo = request.POST.get('cargo', '')
email = request.POST.get('email', '')
avatar = request.FILES.get('avatar', '')
u.first_name = nombre
u.last_name = apellido
u.email = email
u.save()
c.titulo = cargo
c.avatar = avatar
c.save()
return HttpResponseRedirect('/perfil/')
有什么想法吗?
【问题讨论】:
您是否在设置文件中设置了“AWS_ACCESS_KEY_ID”和“AWS_SECRET_ACCESS_KEY”? 是的。我实际上能够成功地做到python manage.py collectstatic
。
好吧,您的存储桶策略似乎是正确的。
无论您在存储桶上放置什么策略,如果有问题的对象本身不是公开可读的,您在访问它时都会收到 403。每个对象在创建时都需要公开可读。或者您可以在创建 ACL 后对其进行更新。
@garnaat 创建对象时如何使对象公开可读?
【参考方案1】:
对我来说,问题是在我的模板中我使用的是:
% load static %
当我改变时
% load static from staticfiles %
我已经开始工作了! 希望我能帮助别人!
【讨论】:
以上是关于S3ResponseError: 403 禁止的主要内容,如果未能解决你的问题,请参考以下文章
windows server 2003 iis配置 出现 http 403 禁止访问,怎么办,网页内显示“你无权查看该网页”