django-storges 支持 CloudFront 签名 URL

Fai*_*zer 6 django amazon-web-services amazon-cloudfront boto3 python-django-storages

我想使用CloudFront 的签名 URL而不是普通的未签名 URL。

django-storages提供了选项,AWS_S3_CUSTOM_DOMAIN但随后它会从 CloudFront 的子域生成未签名的 URL。默认情况下AWS_QUERYSTRING_AUTHTrue,它并生成S3签署的网址。为 CloudFront 生成签名 URL 的任何方式。

这是我希望打开的设置,但由于未签名的 URL,我禁用了它。
我希望为我的发行版打开的设置

Dat*_*eed 4

好的,自此提交以来,django-storages 开发版本现在支持签名 URL (有关更多信息,请参阅线程

该版本尚未在 pip 上发布,因此您可以将其添加到您的需求中,如下所示:

-e git+git://github.com/jschneier/django-storages.git@b116e3a235323144cda6d3cc5a5cb27baf076ee2#egg=django-storages-dev
Run Code Online (Sandbox Code Playgroud)

然后你必须更新你的选项:

AWS_S3_CUSTOM_DOMAIN = "Your cloudfront domain" # something like xxxxx.cloudfront.net
AWS_CLOUDFRONT_KEY_ID = "YOUR_CLOUDFRONT_KEY_ID"
with open(os.path.join(BASE_DIR, "cert.pem")) as aws_cert:
    AWS_CLOUDFRONT_KEY = aws_cert.read().encode('ascii')
Run Code Online (Sandbox Code Playgroud)

就是这样。默认的过期时间是24小时,不知道如何更改。

请注意,CloudFront 密钥与您用于其他 AWS 服务的密钥不同。您必须使用您的根 AWS 账户(而不是 IAM 用户)生成它。查看文档