Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
URL参数中出现的签名/过期/访问密钥ID。Django/Boto/S3_Django_Amazon S3_Boto - Fatal编程技术网

URL参数中出现的签名/过期/访问密钥ID。Django/Boto/S3

URL参数中出现的签名/过期/访问密钥ID。Django/Boto/S3,django,amazon-s3,boto,Django,Amazon S3,Boto,缩略图URL中有参数。我不知道为什么。我认为它们与我们正在使用的sorl缩略图或boto存储有关。 如何从URL中删除其他参数? 他们是来自boto/s3还是sorl。 我不知道如何调试。添加的额外参数将在那里实现。这允许您对存储在S3中的私有资源的URL进行预签名。只要有人拥有预签名的URL(并且它没有过期),他们就能够访问这些资源,即使这些资源不是公开可读的 没有额外的参数,就无法提供对这些私有S3资源的公共访问。使用:AWS\u QUERYSTRING\u AUTH=False适用于我:

缩略图URL中有参数。我不知道为什么。我认为它们与我们正在使用的sorl缩略图或boto存储有关。 如何从URL中删除其他参数? 他们是来自boto/s3还是sorl。
我不知道如何调试。

添加的额外参数将在那里实现。这允许您对存储在S3中的私有资源的URL进行预签名。只要有人拥有预签名的URL(并且它没有过期),他们就能够访问这些资源,即使这些资源不是公开可读的


没有额外的参数,就无法提供对这些私有S3资源的公共访问。

使用:AWS\u QUERYSTRING\u AUTH=False

适用于我: AWS\u QUERYSTRING\u AUTH=False

用这个

这是一种奇怪的行为: Google Docs previewer将运行并显示一个没有参数的预览,但如果boto附加了签名,它会说没有可用的预览


我肯定遗漏了什么。

你能在这里粘贴一个URL示例吗?这里有一个示例:-它来自boto,我不使用sorl,我得到相同的输出。有同样的问题为什么S3资源是私有的?如何将其公开?在S3中,默认情况下所有内容都是私有的。您可以使用boto中密钥对象的make_public()方法将其更改为公共可读,或者如果您更喜欢使用GUI,也可以使用AWS控制台。Boto3不知道它们是否是私有的-默认情况下是对URL进行签名,以便可以以任何方式访问。如果它们是公共的,你可以应用设置,这样签名就不会出现在URL中。这个答案需要更多的细节才能有用。它的文档记录得相当糟糕,但这确实是你需要的。如果每个人都可以公开查看您的bucket(您希望媒体可以公开查看),则会删除身份验证参数。有关更多信息,您需要对S3预签名URL进行编码,然后再将其传递给Google Doc Viewer,因为它包含一些特殊字符
from myapp.s3storage import S3BotoStorage
from django.contrib.staticfiles.storage import CachedFilesMixin


class CachedStaticS3BotoStorage(CachedFilesMixin, S3BotoStorage):

    """Extends S3BotoStorage to save static files with hashed filenames."""
    pass
StaticRootS3BotoStorage = lambda: CachedStaticS3BotoStorage(location='static')