对 CloudFront 签名的 django-storges 支持 URL

django-storges support for CloudFront signed URL

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

django-storages gives the option of AWS_S3_CUSTOM_DOMAIN 但随后它会从 CloudFront 的子域生成未签名的 URL。默认情况下 AWS_QUERYSTRING_AUTHTrue 并且它会为 S3 生成签名 URL。为 CloudFront 生成签名 URL 的任何方式。

这是我想要打开的设置,但由于 URL 未签名,我禁用了它。
Settings I am looking to turn on for My distribution

好的,自 this commit (see thread for more info)

以来的 django-storages 开发版本现在支持签名 URL

该版本尚未在 pip 上发布,因此您可以像这样将其添加到您的需求中:

-e git+git://github.com/jschneier/django-storages.git@b116e3a235323144cda6d3cc5a5cb27baf076ee2#egg=django-storages-dev

那么你必须更新你的选项:

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')

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

请注意,CloudFront 密钥与您用于其他 AWS 服务的密钥不同。您必须使用根 AWS 账户(而非 IAM 用户)生成它。参见 documentation