S3ResponseError: 403 禁止

Posted

技术标签:

【中文标题】S3ResponseError: 403 禁止【英文标题】:S3ResponseError: 403 Forbidden 【发布时间】:2015-11-18 07:57:54 【问题描述】:

我无法使用django-storagesboto 以及关注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 禁止访问,怎么办,网页内显示“你无权查看该网页”

自定义 403 禁止使用重写条件

HTTP 错误 403.9 - 禁止访问:连接的用户过多

得到403禁止错误[重复]

.htaccess 403 禁止排除

CalendarApi 403 禁止